Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ CHUONG 1: CONG TY TMA SOLUTION 1.1 Quá trình hình thành và phát triển TMA được thành lập năm 1997, là một trong những công ty phần mềm
Trang 1KHOA ĐIỆN - ĐIỆN TỬ VIỄN THÔNG
s›Elics
UIH==-
BÁO CÁO THỰC TẬP TÓT NGHIỆP
CONG TY GIAI PHAP PHAN MEM TUONG MINH
(TMA SOLUTIONS)
GVHD: Th S Lé Anh Uyén Vii SVTH: Tran Van Hai Triéu LOP: DV18
MSSV: 1851040065
Trang 2
LỜI CẢM ƠN
Xin tran trong cam on dén quy Thay Cô khoa Điện - Điện Tử Viễn Thông Trường đại học Giao Thông Vận Tải Tp.Hồ Chí Minh đã hỗ trợ trong việc chuẩn bi các giấy tờ liên quan cho kì thực tập lần này Đặc biệt cảm ơn cô Lê Anh Uyên Vũ đã tạo điều kiện cho
em và các bạn qua việc giới thiệu thực tập ở công ty Cảm ơn các anh chị lầu 1 lab 6
công ty TNHH Giải Pháp Phần Mềm Tường Minh (TMA Solutions) đã nhiệt tình hướng
dẫn, chỉ dạy bó sung cho em những kiến thức còn thiếu cũng như là hỗ trợ quan tâm em
trong ba tháng thực tập Sự găn kết, chia sẻ của mọi người đã giúp cho em có thêm
những kinh nghiệm thực tiễn về công việc và cả trong cuộc sóng Đối với em những
điều đó là vô cùng quý báu
Bên cạnh đó, em cũng xin cảm ơn đến Quý công ty đã tiếp nhận việc thực tập giúp bản thân em được tiếp xúc với sự chuyên nghiệp, cần mẫn cùng những kinh nghiệm thực tế khiến em dẫn hoàn thiện hơn Những bài học, khóa đào tạo của Quý công ty rất bỏ ích,
đó chính là những kĩ năng rất cần thiết cho tương lai nghề nghiệp cũng như là định hướng của em
Đề hoàn thành bài báo cáo này em đã được tiếp thu rất nhiều những công nghệ, quy trình
và những thông tin đã được ứng dụng đưa vào doanh nghiệp Bài báo cáo này chủ yêu
sẽ nói về mảng kiểm thử phần mềm (Software Testing), chắc chăn việc thiếu xót hay những bắt cập là không thể tránh, rất mong Cô sẽ đóng góp va chia sẻ chân thành đề báo
cáo được chỉnh chu, rõ ràng hơn Những lời góp ý sẽ có ích rất nhiều cho bản thân em
sau nay
Trang 3NHẠN XÉT CỦA GIẢNG VIÊN
Trang 4MỤC LỤC
1.1 Qué trinh hinh thanh va phat trién oo ccc cece css ceceeeeseeeeeeeeeeee 1 1⁄2 Dịch vụ SẶ2222222 22 21221221221221211212222 re 2
1.2.1 Phát triển phần mềm (Software Developmen†) -: 2-52-++5+ 2 1.2.2 Kiểm thử phần mềm (Software Testing) - 2-25 Scccecrscsrxsrxerree 2
1.2.3 Porting & Chuyên đổi 52-52-52 S52 S2 SE 2222 2 EEEeEerrrkrrkrree 2
1.2.4 Hỗ trợ sản XuẤt - SH SnS St TS 1111111111551 1111111111111 xey 3
1.2.5 _ Dịch vụ quản lý công nghệ thông tín 5S Sàn S+ sen eeket 3
1.2.6 Thiết kế trực quan -s- 5:5 +++St2SE+EE2EE SE E222 2E2EEE2EEEEeckree 3
1.3 Khả năng cạnh tran - - - <1 1S 1S KH TH TH TH kg 4 1.4 Chương trình thực (ập S-Ă TS ST SH TH TH nh nh 5
CHƯƠNG 2: SOFTWARE TESTING - KIỀM THỬ PHẢN MÈÉM 6
2.2.2 Kiêm thử tích hợp (Intergration Testing) - 25+ 5c5czcxscssxecxecea 16
2.2.3 Kiêm thử hệ thống (System Testing) ¿- s52 ccc2c se crererrerxerree 18 2.3 Các loại kiểm thử 22 221 21122 2311 2111211112111121212121211212112 1 xe 19
2.3.1 Kiém thir hdi quy (Regression Tesfing) ¿-c2- 2 cc+cs+ccsrxsrszxesea 19 2.3.2 Kiém thir tinh trang (Sanity Testing) .0.ccccccccccsesesessessestesseseeeseesseeees 20
Trang 52.3.3 Kiếm thử tính năng và kiểm thử phi tính năng (Functional và Non-Functional)
— Ô 20
2.4 Phát triển Test Case 5-22 ee 21
2.4.1 Tài liệu kiểm thử (Test Documenfation) . 2 2 +s++s+s+e+xx+x+x+xscee 21 2.4.2 Vién canh kiém thir (Test Scenario) .c.csccsessesesesssseseseeeeesesseseseseeveteeees 22 2.4.3 Test case, test su1f và fesf pÏATi Gà LH HS HH HH H* HH HH hư, 22
2.5 Các kĩ thuật kiểm thứr - 2-52 5-52 22223 212122121221212212122121212111 211112 ce 25
2.5.1 Phân tich gid tri bién & Phan chia bang nhau — Boundary Value Analysis & Equivalance Partioning cece eee cce cece cece e cece eeec ae SH HH HH HH kg 25
2.5.2 Kiém thir Use Case .c.ccccccescssesssssssessssessessssessesessessessessssiesissesssnssseseeneeees 27
2.5.3 Kiém thir Checklist-based :cccccccscsccseseececesececesesescstsceccecestsvsvscecseececaeees 28
CHUONG 3: CAC CÔNG CỤ HỖ TRỢ TRONG TESTING - 29
Trang 6DANH MỤC HINH ANH
Hình I - Các bằng khen, giải thưởng TMA đạt được .-ẶẶĂĂSSSssse se 1
Hình 2 ~ Biểu đồ nhân lực từ năm 1997 - 2022 -©cccccvcsrxrrrrerrrrrrev 2 Hình 3 — Thiết kế UX dựa trên mục tiêu doanh nghiệp và hành vi người đùng 4
Hình 4 — Thiết kế UI dựa trên tiêu chuẩn và xu thế quốc tế .-. -2- 2525: 4 Hình 5 — Hợp tác với đội ngũ kĩ sư trong suốt vòng đời dự ấn .- - 4 Hinh 6 — Chi phi dé stra 16i theo từng giai đoạn . 7-©2+c2c+ccccscxc 7 Hinh 7 — (i09 na ¬ 10
in i8 S60: 0 12 Hinh 9 — Agile modelo ớỚG 14 Hình 10 — Phương pháp Bottom-up oo eceeccceccccecceeeceeseeeeseecesaeceaaeceacescaeeneeeseeneesaees 17 Hình 11— Phương pháp Top-IDOWN -SẶcQTSẠ ST SH HH Hy 17 Hình 12 — Phương pháp Hybird - c5 3213251325113 351 122511 111111 re 18
Hình 13 — Kiến trúc kiêm thử phần mềm . -2- 2 25255252 5++z++z+zz+zce2 19
in 0 co (9010 :- 33 Hình 15 — Giao diện của MỘT TT Box - G S S2 S211 SH 11 HH re 35
Hình 16 — Giao diện của Postman - - - SS +2 x22 c2 S12 355cc ca 38
Hinh 17 — Thành phần của Selenium 2-52-52522S22S2Sx2Sxxxsrxsrsrcee 38
Trang 7Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
CHUONG 1: CONG TY TMA SOLUTION
1.1 Quá trình hình thành và phát triển
TMA được thành lập năm 1997, là một trong những công ty phần mềm hàng đầu Việt
Nam đã và đang đạt được nhiều thành tựu danh giá TMA đã phát triển bền vững qua
nhiều năm với nguồn nhân là các kĩ sư trẻ, nhiệt huyết luôn được đánh giá cao vả rất được tin cậy bởi khách hàng Trong suốt 25 năm hoạt động (1997 - 2022) TMA đã
không ngừng phát triển và được truyền thông trong nước cũng như là ngoài nước không
ít lần đề cập tới chăng hạn như đài CNN của Mỹ, báo USA today, NHK World Japan,
@ Bằng khen của Ủy ban Nhận dân Thanh phố Hồ Chỉ Minh Có thành tích xuất séc trong lĩnh vực CNTT-TT, góp phần tích cực vàu sự phết triểt
#33 CNTT-TT của Thành chổ
< Chững nhận về cúp của Hội Tin học Thành hố 46 Chi Minh (HCA)
Huy Chuting ⁄ãng Xuất khẩu Phẩn tiêm {15 năm liền từ 2004 đển 2019)
Top10 Don vi Xuat khau Phan Mém, FinTech, Al va |oT
& <
Bang khen cla VINAS& C4 thanh tích xuất sắc, đồng qốp cho các hoạt động của Hiệp hội và cho sự phất triển của ngành phén mén, dịch vn,
Là mệt trang 15 câng ty hàng đầu thé gidi trang việc 4p dung hiéu qua quy trinh gia cong phan mém {Bác căn của cong ty tu van My
Trang 8Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
Nhiều ứng dụng quan trọng được phát triển cho các công ty hàng đầu trong lĩnh vực viễn thông và mạng, tài chính & bảo hiểm, thương mại điện tử,
Các dịch vụ phát triển rất đa dang Kiểm thử phần mém (Software Testing) Xác minh toàn bộ sản phẩm (quản lý tất cả khía cạnh của kiểm thử sản phẩm,
đánh giá chất lượng sản phẩm, các giải pháp kiểm thử) Lập kế hoạch kiếm thử và thực thi (kiêm thử tính năng - functional, kiểm thử
tích hợp và hệ thống — integration & system, kiểm thử hiệu nang — performance,
-)
Kiểm thử tự động (phát triển các tình huống cần kiêm thử tự động, những công
cụ hoặc giải pháp kiểm thử tự động tùy chỉnh, thực thi scripts tự động và báo cáo)
Porting & Chuyên đổi
Hiện đại hóa những sản phâm và nền tảng dựa trên các kĩ thuật mới (.NET, Java, HTMLS, Ruby, )
Chuyến hóa đến cloud (Amazon AWS, MS Azure, )
Trang 9Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
1.2.4
Tái cầu trúc ứng dụng (thiết kế, kiến trúc) Chuyến đổi từ một cơ sở đữ liệu sang một cơ sở dữ liệu khác (SQL Server, SQL,
Oracle, Hadoop, ) Thay đổi từ một nền tảng đến một nền tảng khác (Desktop, Web, tablet/mobile, Window 8/10, Linux, )
Hỗ trợ sản xuất
Quản trị ứng dụng, server, đâm mây đồng thời hỗ trợ cầu hình và bảo trì
Theo dõi hệ thống, tối ưu hóa và cảnh báo
Sửa chữa và bắt lỗi từ xa
Phân phối và cải tiến
Hỗ trợ 24/7
Dịch vụ quản lý công nghệ thông tin
Hỗ trợ ứng dụng và quản trị server hoặc đám mây (thiết lập và bảo trì hệ thống email, FPT server, web Proxy, DNS, lưu trữ)
H6 tro kết nối (thiết kế và hỗ trợ, khắc phục hệ thong ha tang mang (LAN, WAN
bao gồm cả dịch vụ Wifi bảo mật từ lớp core cho đến lớp truy nhập)
Hệ thong thong tin (PBX, IP PBX)
Bao mat (tường lửa, proxy, anti-virus/spam, IDS/IPS, phân tích ghi chú và trực quan hóa)
Thiết kế trực quan Thiết kế app cho nhiều nền tảng và thiết bị (web, mobile device, tablet, desktop) Thiết kế trực quan các ứng dụng cho nhiều doanh nghiệp khác nhau như thương mại điện tử, tài chính và bảo hiểm, y tẾ, giáo dục, viễn thông, )
Những khách hàng từ nhiều quốc gia
Trang 10
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
Hình 3 — Thiết kế UX dựa trên mục tiêu doanh nghiệp và hành vỉ người dùng
GLOBAL DESIGNS STANDARDS
Trang 11Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ Nhiều lĩnh vực mang tính cạnh tranh cũng được giới thiệu ở TMA:
Telecom/Network (VoIP, SIP, quan li truy nhap va mang., ) Microsoft Technologies (C#, C++, ASP.NET, SQL Server, ) Java (JSP/Servlet, JSF, BPMN2., )
Open Source (PHP, Perl, Python, MySQL ) Front — End Development (HTMLS, CSS3, Responsive Web, ) Mobile Technologies (GOS, Android, Windows Phone, Jquery, ) Cloud Application (Microsoft Azure, Amazon EC, .)
Big Data & Analytics & AI (SSRS, SSIS, Cognos, Data Warehousing, ) Internet Of Things (Health monitor, Smart home, device monitor, ) Embedded Sofware (Firmware, Device Drivers, VxWorks, ) Software Testing (Manual and Automation, Functional Test, ) DevOops (Automation, CD and CI tools, )
Automotive Software (Smulink Stateflow, MATLAB, TPT, ASCET., )
TMA 5G Center (Private Network, Network silcing, O-RAN., )
TMA RPA Solution (Automation Anywhere, Ui Path, Blueprism, ) 1.4 Chương trình thực tập
Chương trình thực tập ở TMA chính là cơ hội để các sinh viên có thể tiếp cận cũng như
là trải nghiệm quy trình làm việc các dự án và môi trường làm việc Trong quá trình thực tập các sinh viên sẽ nhận thây những điều sau:
Môi trường làm việc năng động
Được hướng dẫn và hỗ trợ nhiệt tình bởi các anh/chi
Có cơ hội tận dụng kiến thức đã học tại trường vào thực tế
Tìm hiểu thêm các công nghệ mới trong từng dự án
Có các khóa đảo tạo về kĩ năng và chuyên môn để trau đồi kiến thức, tự hoàn
thiện bản thân
Trang 12
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
CHUONG 2: SOFTWARE TESTING — KIEM THU PHAN MEM
2.1 Lý thuyết cơ bản
2.1.1 Kiểm thử phần mềm
Kiểm thử phần mềm là một tiến trình gồm nhiều hoạt động khác nhau chăng hạn như
testing planning (lập kế hoạch kiêm thử), phân tích, thiết kế và thực hiện kiêm thử,
báo cáo tiền trình và kết quả kiêm thử, đánh giá chất lượng của đối tượng kiêm thử Kiểm thử phần mềm chính là một giải pháp để kiểm tra xem liệu sản phẩm phan mềm thực sự có phù hợp với những yêu cầu hay chưa và để đảm bảo rằng là sản phâm phần mềm không có lỗi Bên cạnh đó, nó có liên quan tới một vài việc thực thi của thao tác thủ công hay bằng các công cụ phần mềm tự động để đánh giá một hoặc nhiều đặc tính mà ta quan tâm Mục đích cuối cùng của kiêm thử phần mềm là nhận dạng những lỗi, các sai sót, hay những yêu cầu bị bỏ sót cái mà trái ngược với yêu
câu thực tê
Kiểm thử phần mềm là quan trọng bởi vì trong thực tế ta có thé bat gặp từ những ứng dụng doanh nghiệp đến các sản phẩm của khách hàng thì hầu hết mọi người đều gặp phải những lần sản phẩm phần mềm không hoạt động đúng như mong đợi Những phần mềm hoạt động không chính xác sẽ là nguyên nhân dẫn đến rất nhiều vấn đề chăng hạn như mắt tiền bạc, thời gian hoặc danh tiếng của doanh nghiệp đó, nghiêm trọng hơn nữa những lỗi không được phát hiện sớm có thể dẫn đến các vấn
đề về chắn thương tai nạn hay thậm chí là tử vong Do đó kiểm thử phần mềm chính
là một cách để đánh giá chất lượng của phần mềm và giảm rủi ro trong việc phần mềm ngưng hoạt động
Những mục tiêu điển hiền của kiểm thử:
Đê ngăn chặn lỗi băng việc đánh giá các sản phâm công việc chăng hạn như các yêu
câu, user stories, thiết kê và code
Đê xác minh xem liệu những yêu câu được qui định đã được hoàn tất hay chưa
Đề kiêm tra xem liệu đối tượng được kiểm thử đã hoàn thiện hay chưa vả nó có hoạt động đúng như phía người dung hay các bên liên quan mong đợi hay không
Đề xây dựng độ tin cậy theo mức chất lượng của đối tượng kiểm thử
Trang 13
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
Đề tìm những thứ bất thường và lỗi nhằm giảm mức độ rủi ro của chất lượng sản pham phân mềm chưa hoàn thiện
Đề cung cấp đây đủ thông tin cho các bên liên quan cho phép họ đưa ra những quyết
định, đặc biệt là về mức độ chất lượng của đối tượng kiểm thử
Đê tuân thủ những qui dịnh về yêu câu, phù hợp với các điệu khoản, hợp đông hoặc những tiêu chuân đông thời xác minh sự tuân theo của đôi tượng kiêm thử với những yêu câu và tiêu chuân đó
Những lợi ích cơ bản của kiêm thử phân mêm:
Tiết kiệm chỉ phí: Việc tối ưu hóa chỉ phí là một vẫn đề quan trọng trong vòng đời
phát triển và kiêm thử phần mềm do đó việc kiểm thử bất ki dy an IT nao ding han
sẽ giúp ta tiết kiệm tiền bạc cho một giai đoạn đài hạn Trong trường hợp nếu ta bắt được bugs ở những giai đoạn đầu tiên của qui trình kiêm thử phần mềm thì chỉ phí
sẽ được tiệt kiệm tôi đa
Cost to fix Defects
Source: NIST ip)
Hình 6 — Chỉ phí để sửa lỗi theo từng giai đoạn
Trang 14
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ Bảo mật: Đây là lợi ích quan trọng và khá thiết yêu của sản phầm phần mềm Mọi người đang tìm kiếm những sản phâm đáng tin cậy Việc bảo mật sẽ giúp ta loại bỏ những rủi ro và van dé
Chất lượng sản phâm: Là một yêu cầu quan trọng của bất kì sản phẩm phần mềm nào Kiểm thử đảm bảo một sản phâm chất lượng sẽ được bàn giao đến khách hàng Thỏa mãn khách hàng: Mục tiêu chính của bắt kì sản phẩm nào là đem đến sự hài lòng cho khách hàng sử dụng sản phẩm Việc kiểm thử UI (User Interface — Giao diện người dùng)/UX (User Experience - Trải nghiệm người dùng) đảm bảo rằng trải nghiệm người dùng được tốt nhất
2.1.2 Defect/Bug trong vòng đời kiểm thử phần mềm
Một người khi tạo ra một error (lỗi) sẽ dẫn đến sự xuất hiện của defect/bug Ví dụ: một error tồn tại trong yêu cầu có thé dan dén defect trong yêu cầu đó, từ đó dẫn đến
tao ra error trong viéc lập trình một ứng dụng phần mềm và cuối cùng phát sinh ra
bug khi chạy Để mà giúp việc kiểm soát những defect/bug thì vòng đời của
defect/bug dã được sinh ra
Lỗi có thề phát sinh từ nhiều lý do, chẳng hạn như:
Áp lực thời gian
Chưa có trải nghiệm hoặc kĩ năng chưa đủ từ những người tham gia dự án
Hiểu lầm trong giao tiếp của những người trong dự án, gồm cả việc chưa hiểu ý từ những yêu câu
Độ phức tạp của code, thiết kế, kiến trúc hoặc các kĩ thuật được dùng
Sư nhằm lẫn trong sự tương tác giữa các thiết bị trong và ngoài, đặc biệt khi đùng ở
số lượng lớn
Do việc chưa quen với các công nghệ, kĩ thuật mới
Vòng đời bug/defect trong kiểm thử phần mềm là một bộ những trạng thái nhất định
mà defect/bug sẽ có in toàn bộ vòng đời của nó Mục đích của vòng đời bug/defect
là giúp việc điều phối cũng như giao tiếp trở nên để dàng cho các developer va tester
Trang 15
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ Deffered: Nếu bug hiện tại không năm trong độ ưu tiên cơ bản và sẽ được sửa trong lần release tới thì trạng thái deffered là được đặt
Not a bug: Nếu nó không ảnh hưởng tới tính năng của ứng dụng thì trạng thái được
bàn giao cho bug đó là not a bug
" States =IN- PR06R£$$
|
Deviopment Project Manager will analyze the Defeet
&® Status = FIXED TRC Re VEC» —YES-»
Tat
NO YES
+
N0 Status =REJECTED Status=DEFFERED Status = DUPLICATE
[10 9 Status = CLOSED i Status = RE-OPEN
Hinh 7 — Vong doi Defect 2.1.3 Bảy nguyên tắc kiêm thử phần mềm
1 Viéc kiém thu sé chi ra su hién dién cua defect
Sự hiện diện của defect có thê được phát hiện nhờ việc kiểm thử nhưng có một thực
tế răng nó không thê chứng minh rằng sản phẩm phần mềm là không có defect Việc
kiểm thử sẽ làm giảm xác suất của defect chưa được phát hiện nhưng thậm chí sản
phâm phần mềm đã test được 99% vẫn không có gì là đảm bảo sản phẩm sẽ không
bị lỗi
2 Kiém thử triệt đề là bất khả thi
Kiểm thử mọi thứ từ A — Z là điều không thê ngoại trừ những tình huống trong phạm
vi nhỏ Thay vì cố gắng để kiêm thử tất cả hãy phân tích, dung việc phân tích rủi ro, lựa chọn kĩ thuật test, xác định độ ưu tiên để tận dụng tối đa nỗ lực
Trang 16
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
3 Thực hiện kiểm thử sớm sẽ tiết kiệm thời gian và tiền bạc
Đề tìm defect sớm việc kiểm thử nên bắt đầu trong những giai đoạn đầu của vòng đời phát triển phần mềm Từ đo những defect trong yêu cầu hay trong thiết kế có thể dàng được phát hiện Điều này đảm bảo rằng chỉ phí sẽ rẻ hơn nhiều khi sửa những defect sớm cũng như đảm bảo tiết kiệm tối đa thời gian để có thể hoàn thành sản phâm công việc đúng hẹn
4 Phân cụm lỗi
Số lượng nhỏ module có thê là nơi phát sinh rất nhiều lỗi, theo ứng dụng của nguyên tắc Pareto đối với kiêm thử phần mềm thì 80% lỗi nằm trong 20% module Bằng kinh nghiệm bạn có thê nhận dạng được những module rủi ro Nhưng nguyên tắc này
có một vấn đẻ, nếu cùng một loại test thực hiện lại nhiều lần thì cuối cùng những lỗi mới sẽ không được tìm thấy nữa Phân cụm những lỗi có thê dự đoán được và những
lỗi đã được phát hiện là một thông tin quan trọng trong việc phân tích rủi ro, được
dùng để khoanh vùng nơi cần tập trung kiểm thử
5 Hiệu ứng thuốc trừ sâu
Trong nông nghiệp, việc dung nhiều lần cùng một loại thuốc trừ sâu để diệt sâu bọ
sẽ khiến chúng sinh ra kháng thể, vì thể loại thuốc trừ sâu đó sẽ không còn hiệu quả
nữa Điều nay là tương tự trong kiểm thử phần mềm Nếu cùng một bộ test được lặp
lại nhiều lần, phương pháp đó sẽ vô dụng cho việc khám phá các lỗi mới Đê giải quyết vấn đề này, các testcases cần phải được thường xuyên xem lại, chỉnh sửa, them
những testcase mới để tìm nhiều defect hơn
Các tester không thể chỉ phụ thuộc đơn giản vào các kĩ thuật kiểm thử đang hiện có
mà phải không ngừng tìm ra giải pháp dé cải thiện việc kiểm thử hiệu quả hơn Nhưng trong một vài trường hợp như regression testing được tự động, hiệu ứng thuốc trừ sâu có một vài lợi ích đầu ra là nó sẽ tạo các regression defect voi muc tuong đối thấp
6 Việc kiêm thử phụ thuộc vào điều kiện hoàn cảnh
Việc kiêm thử sẽ hoàn tât theo cách khác nhau trong các điều kiện, hoàn cảnh khác nhau Ví dụ những phần mềm điều khiển công nghiệp quan trọng mang tính bảo mật
Trang 17
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ cao thì được kiểm thử khác với một app thương mại điện tử Một ví dụ khác là việc kiểm thử trong dy an Agile duoc hoan tất khác với việc kiểm thử trong dự án có vòng đời phát triển phần mềm theo kiểu tương tự
7 Không có lỗi là ngụy biện
Trường hợp phần mềm là 99% không có lỗi thì vẫn không thê sử dụng đó là bởi vì
hệ thống được kiểm thử chặt chẽ là sai yêu cầu Kiểm thử phần mềm không phải đơn thuần là tìm defect mà cũng kiểm tra răng phần mềm phải giải quyết những nhu cầu doanh nghiệp Việc tìm và sửa lỗi sẽ không giúp được gì nếu hệ thong duoc dung nên không đáp ứng được yêu câu và nhu câu người dùng
2.1.4 Mô hình trong kiêm thử phần mềm
2.1.4.1 Mô hình phát triển tuần tự
Mô hình tuần tự này miêu tả tiến trình phát triển phần mềm như một dòng tuần tự, tuyến tính của những hoạt động Điều này có nghĩa là một giai đoạn chỉ có thê bắt đầu khi giai đoạn trước đã hoàn tất
Waterfall model: Những hoạt động phát triển (phân tích yêu cầu, thiết ké, lập trình, kiêm thử) là được hoàn tất lần lượt trong mô hình này, những hoạt động kiêm thử chỉ diễn ra khi các ø1ai đoạn trước nó là hoàn tât
V-model: Tích hợp cả tiến trình kiếm thử trong suốt qui trình phát triển, thực hiện theo nguyên tắc kiểm thử sớm Trong V-model, mỗi mức kiểm thử được liên kết với
một giai doan phat trién tuong ung
ws User Requirement — Acceptanze Tests
Trang 18Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
Phía bên trái mô hình là vòng đời phát triển phan mém — SDLC (Software
Development Life Cycle)
Phía bên phải của mô hình là vòng đời kiểm thử phần mềm — STLC (Software Test
Life Cycle)
Toàn bộ mô hình được thiết kế giống chữ V đo đó có tên là V-model
Thông thường các mô hình phát triển tuần tự sẽ bàn giao phần mềm chứa mộ bộ tính nang day du
2.1.4.2 Mô hình phát triển lặp lại và tăng dan
Phát triển tăng dân liên quan tới việc thiết lập những yêu cầu, việc xây dựng, thiết
kế và kiểm thử hệ thống trong những phần mảnh Điều này có nghĩa là những đặc tính sẽ được phát triển tăng dần Thông số tăng dần này sẽ thay đối phục thuộc vào kích thước của nhửng mảnh, với một vải phương pháp sẽ có mảnh lớn hơn và nhỏ
hơn Nó có thể chỉ nhỏ như ở phần thay đổi giao diện người dùng hay thêm lựa chọn
vào câu hỏi truy vần
Phát triển lặp lại xảy ra khi một nhóm những tính năng được chỉ định, được thiết kế, được xây dựng và được kiểm thử cùng nhau trong một chuỗi của những vòng đời,
thường là một giai đoạn có định Những lúc lặp lại có thé sẽ liên quan tới việc thay đôi tính năng nào đó của phần mềm trong vòng lặp trước, đi cùng với thay đối trong phạm vi dự án Mỗi lúc lặp sẽ tạo ra phần mềm với những bộ con đang phát triển của toàn bộ tính năng mà phần mềm có cho đến khi phần mềm được bàn giao hoặc quá
nhận lỗi diễn ra giữa developer và ngươi dùng
Agile model: lựa chọn làm mọi thứ theo khả năng tăng dần dần với kết hoạch ngắn hạn hơn là dài hạn Việc lặp lại là trong thời gian ngắn thường kéo dài một đến bốn tuần Mỗi vòng lặp là được thực hiện bởi một đội gồm lập kế hoạch, phân tích yêu
Trang 19
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
cầu, thiết kế, lập trình, kiểm thử đơn vi (unit testing), kiểm thử khả năng chấp nhận
để xác minh sản phẩm phằm mềm STLC là Software Testing Life Cycle — Vòng đời kiêm thử phần mềm
Có 6 giai đoạn chính trong STLC:
1 Phân tích yêu cầu: Giai đoạn này sẽ làm rõ những loại kiểm thử cần được thực
hiện, thu thập chi tiết về vùng cần ưu tiên và tập trung kiểm thử, chuẩn bị RTM (Requirement Traceability Matrix), xác định chỉ tiết môi trường kiêm thử và phân tích khả năng tự động hóa
2 Lập kế hoạch kiểm thử: Chuẩn bị tài liệu về chiến lược hay kế hoạc kiêm thử,
lựa chọn công cụ kiêm thử, dự đoán nỗ lực công sức cho việc kiêm thử, lập kê
hoạch cho tài nguyên sử dung, xác định vai trò và trách nhiệm
Trang 20
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
4 Phát triển Test Case: Tạo các test cases, các scripts cho viéc chạy auto (néu có), xem xét và vạch ra cơ sở cho test cases cũng như scripts, tạo dữ liệu test
4 Thiết lập môi trường kiểm thử: Hiểu được kiến trúc yêu cầu, môi trường và chuẩn bị danh sách yêu cầu cho phần cứng, phần mềm cho môi trường kiểm
thử Thiêt lập môi trường kiểm thử và đữ liệu test, thực hiện smoke test trên cái
đã dựng nên
5 Giai đoạn thực hiện kiểm thử: Thực hiện kiểm thử theo kế hoạch, lập tài liệu
về kết quả kiểm thử và ghi chú lại defect cho những trường hợp thất bại, đánh
dấu những defect đến test cases trong RTM, theo dõi defct đề chuả n bị đóng
6 Đóng vòng kiểm thử: Đánh giả hoàn tất dựa trên tiêu chí thời gian, phạm vi, chi phí, phần mẻm, những mục tiêu doanh ngiệp quan trọng và chất lượng
Chuẩn bị các số liệu kiểm thử dựa trên các thông số đánh giá, lập tài liệu về
những gì học được từ dự án, chuẩn bị báo cáo, phân tích kết quả để tìm ra sự phân bô của defect và mức độ nghiêm trọng của nó
2.2 Các mức độ kiếm thử
2.2.1 Kiém thir don vi (Unit Testing)
Là một loại của kiểm thử đơn vị mà ở đó những đơn vị riêng lẻ hoặc thành phần của
phần mềm là được kiểm thử Mục đích là để kiểm định rằng mỗi đơn vị của mã phần mềm là hoạt động như mong đợi Kiểm thử đơn vị được hoàn tất trong giai đoạn phát
triển của một ứng dụng bởi developer Kiểm thử đơn vị cô lập một phần của mã và xác minh tính chính xác của nó Một đơn vị có thê là một module, một đối tượng, hàm hay phương thức
Kiểm thử đơn vị là quan trọng bởi vì các developer đôi lúc vì tiết kiệt thời gian mà
thực hiện kiểm thử đơn vị, do đó dẫn đến việc sửa defect với chỉ phí cao trong giai
đoạn kiêm thử hệ thống, kiêm thử tích hợp hay thậm chỉ là kiểm thử Beta sau khi
ứng dụng được tạo nên Nếu kiểm thử đơn vị được thực hiện kĩ trong giai đoạn của
việc phát triển phần mềm thì sẽ tiết kiệm thời gian và tiền bạc Ngoài ra, kiêm thử
đơn vị còn giúp các developer hiểu rõ nền tảng code, cho phép họ đưa ra thay đổi nhanh chóng nếu cần thiết, bên cạnh đó kiểm thử đơn vị tốt sẽ giúp ta tạo tài liệu day
Trang 21
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
đủ phục vụ cho dự án, giúp việc tái sử dụng code, chuyền đời code và việc kiểm thử sang một dự án mới linh hoạt
2.2.2 Kiém thir tich hop (Intergration Testing)
La một loại kiểm thử phần mềm mà ở đó những module là được tích hợp một cách
logic và được kiểm thử như một nhóm Một sản phầm phần mềm điền hình chứa rất
nhiều module được lập trình bởi nhiều lập trình viên khác nhau Mục đích của mức kiêm thử tích hợp là để tìm ra defect trong sự tương tác giữa những module phần mềm này khi chúng được tích hợp
Có hai phương pháp kiểm thử tích hợp là phương pháp Big Bang và phương pháp
Incremental:
Big Bang: Kiém thử Big Bang là phương pháp mà ở đó tất cả các module hoặc các
thành phần được tích hợp với nhau một lần và kiểm thử chúng như một đơn vị Bộ
kết hợp của những thành phần này thì được cân nhắc như là một thực thé thống nhất
trong quá trình kiêm thử Nếu tất cả những thành phần trong đơn vị chưa được hoàn
thiện thì tiến trình tích hợp sẽ không được thực thi
Incremental: Tién trinh này được hoàn tất bởi hai hoặc nhiều module có liên quan
về mặt logic với nhau va sau đó được kiểm thử cho việc vận hành nhất định của ung
dụng Sau đó nhưng module có liên quan khác được tích hợp tăng dần và tiến trình
sẽ tiếp tục cho đến khi tất cả các module có liên quan với nhau một cách logic là
được tích hợp và được kiểm thử thành cong Incremental con được chia thành nhỏ
thành hai phương pháp khác là bottom-up và top-down
Bottom-up sẽ kiêm thử module ở mức thấp hơn trước và những module này sẽ tạo điều kiện để kiểm thử module ở mức cao hơn Tiến trình sẽ lặp lại cho đến khi các module ở mức cao hơn được kiểm thử Một khi các module ở mức thấp hơn được tích hợp sẽ hình thành nên module ở mức tiếp theo
Trang 22
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
hệ thông phần mềm Module ở mức cao hơn sẽ được kiểm thử trước sau đó là những
module ở mức thấp hơn sẽ được kiểm thử và được tích hợp để mà kiểm tra chức
Trang 23
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ
Top Down Module 1
Hinh 12 — Phuong phap Hybird
2.2.3 Kiém thir hé thong (System Testing)
Kiếm thử hệ thông sẽ xác minh những điêu sau:
Kiểm thử những ứng dụng đã được tích hợp đầy đủ gồm cả những thiết bị kết nối bên ngoài dé kiếm tra cách mà các thành phần tương tác với nhau và với toàn bộ hệ thống
Xác minh qua mỗi lần kiêm thử với đầu vào nhất định để kiểm tra kết quả đầu ra
mong muốn
Kiểm thử trải nghiệm người dùng với các ứng dụng
Đây là những miêu tả rất cơ bản của những gi liên quan trong kiểm thử hệ thống Ta
cần phải xây dựng các test cases và test suites để kiểm tra từng khía cạnh của ứng
dụng
Sau khi đi qua ba mức kiêm thử chúng ra gần như đã có một kiến trúc kiên thử hoàn
chỉnh, nhưng thực chất việc kiểm thử còn có them các yếu tố phụ thuộc vào tùy hoàn
Trang 24
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ cảnh hay nhu cầu doanh nghiệp Dưới đây là kiến trúc kiểm thử với từng mức (ở đây
ta có thêm một mức cuối cùng là kiểm thử khả năng chấp nhập)
Acceptance Testing System Testing Integration Testing
Unit Testing
Hinh 13 - Kién tric kiém thir phan mém Kiểm thử đơn vị: được thực hiện trên mỗi module hoặc trên một khối mã trong quá trình phát triển Kiểm thử đơn vị thường được thực hiện bởi người viết code
Kiểm thử tích hợp: được thực hiện trước, trong và sau khi tích hợp của một module
mới vào trong gói phần mềm chính Một phần của ứng dụng phần mềm có thể chứa rất nhiều module Nó rất quan trọng đề kiểm thử tác động của mỗi module đến toàn
bộ hệ thống
Kiểm thử hệ thống: được thực hiện bởi các bên chuyên gia kiểm thử ở sản phẩm
phần mềm được hoàn tất trước khi nó được giới thiệu tới thị trường
Kiểm thử khả năng chấp nhận (Acceptance Testing): Kiểm thử Beta được thực hiện
bởi người dùng đầu cuối thực sự
2.3 Các loại kiếm thử
2.3.1 Kiém thir hdi quy (Regression Testing)
Kiếm thử hồi quy dùng đề xác minh rằng những thay đôi trong mã hoặc trong chương trình gần đây không gây ảnh hưởng tiêu cực đến những tính năng đang tồn tại Kiêm
thir hdi qui thực chất là lụa chọn lại một phần hay toàn bộ các test case đã thực hiện
và chạy lại để đảm bảo rằng những tính năng đang tồn tại hoạt động ôn định
Trang 25
Báo cáo thực tập tốt nghiệp GVHD: Lê Anh Uyên Vũ Regression Testing là cần thiết khi một tính năng mới được thêm vào ứng dụng phần mềm hoặc cho việc sửa lỗi cũng như là các van dé liên quan đến hiệu suất Kiểm thử
hỗồi qui khác với việc kiêm thử lại, kiểm thử lại nghĩa là kiêm thử các tính năng và
cdc defect lan nita dé dam bao rang defect đã được sửa còn kiêm thử hỏi quy là kiểm thử ứng dụng phần mềm khi nó trải qua sự thay đôi code để đảm bảo rằng code mới không ảnh hưởng đên phần còn lại cua phan mém
2.3.2 Kiểm thir tinh trang (Sanity Testing)
Loại kiểm thử này được thực hiện sau khi nhận phần mềm được xây dựng, với sự
thay đổi nhỏ trong code hoặc chức năng để đảm bảo rằng defect đã được sửa và không có vấn đề gì thêm nữa với những sự thay đổi này Mục tiêu là để xác định rằng những chức năng được đề xuất hoạt động chặt chẽ như mong đợi
Có thê hiểu rang Sanity Testing là được hoàn tat dé kiêm tra xem tính năng/bug đã
được sửa hay chưa Kiểm tra tính chính xác của hệ thong và thường được thực hiện
bởi tester Sanity testing được biết đến là một bộ con của Regression Testing và sanity testing chi kiểm tra một phần cụ thê của toàn bộ hệ thong cho nên nó được ví
như là kiểm tra sức khỏe chuyên biệt trong ngành y
2.3.3 Kiểm thử tính năng và kiểm thử phi tinh nang (Functional va Non-Functional) Functional Testing: lién quan tới những việc kiêm thử cái mà đánh giá các chức năng
mà hệ thong nên thực hiện Fuentional Testing nên được thực thi ở tất cả các mức độ kiểm thử Functional Testin gcân nhắc hành vi của phần mềm, vậy nên kĩ thuật black-
box có thể được dùng để tạo test condition ( điều kiện test) và test cases cho tính năng
của phần mềm và hệ thong Việc kiểm thử sẽ dựa trên việc phân tích về tính năng
của một thành phần hay hệ thống Trong kiểm thử tính năng có rất nhiều loại chăng hạn như: unit testing, integration testing, regression testing, sanity testing
Non-Functional Testing: kiểm thử những đặc tính hay thuộc tính của hệ thống hay
phần mềm chăng hạn như khả năng sử dụng, độ hiệu quả của hiệu năng hoặc bao
mật Non-functional testing là kiểm thử xem hệ thong vận hành tối ưu như thế nào Non-functional testing thường được thực hiện ở tất cả các mức kiểm thử và được kiểm thử sớm nhất có thẻ Những kĩ thuật black-box có thê được sử dụng để tạo test cases va test condition cho non-functional testing