Tìm hiểu về Testing 1.1 Chu trình kiểm thử phần mềm STLC - Software Testing Life Cycle Chu trình kiểm thử phần mềm đề cập đến quy trình có các bước testing cụ thể đượcthực hiện trong một
Trang 1KHOA ĐIỆN, ĐIỆN TỬ VÀ CÔNG NGHỆ VẬT LIỆU
NGÀNH ĐIỆN TỬ - VIỄN THÔNG
-o0o -BÁO CÁO THỰC TẬP TỐT NGHIỆP
Đơn vị thực tập : Công ty TNHH Giải pháp Phần mềm Tường Minh Người hướng dẫn : Nguyễn Phan Kính
Sinh viên thực tập : Nguyễn Hữu Tuyên
Mã sinh viên : 18T1051036
Trang 2LỜI CẢM ƠN i
DANH MỤC HÌNH ẢNH iii
CHƯƠNG I GIỚI THIỆU VỀ CÔNG TY TNHH GIẢI PHÁP PHẦN MỀM TƯỜNG MINH (TMA SOLUTIONS) 1
1 Tổng quan về công ty TMA Solutions 1
2 Sơ đồồ t chổ ức 1
3 Thành tựu 2
4 Cơ s h tở ạ ầồng 2
5 Các l nh v c tr ng tâm 4ĩ ự ọ 6 Dịch v chính 4ụ 7 Quy trình ch t lầấ ượng 5
Chương II NỘI DUNG THỰC TẬP 6
1 Tìm hiểu về Testing 6
1.1 Chu trình kiểm thử phần mềm (STLC - Software Testing Life Cycle) 6
1.2 Chu trình phát triển phần mềm (SDLC - Software Development Life Cycle) 7
1.3 Kiểm thử thủ công và kiểm thử tự động 7
1.4 Các kỹ thuật kiểm thử 10
1.5 Các cấp độ kiểm thử 12
1.6 Các loại kiểm thử 14
CHƯƠNG III CÁC HOẠT ĐỘNG TRONG QUÁ TRÌNH THỰC TẬP 16 1 Quá trình thực tập 16
2 Phần thực hành dự án liên quan 18
2.1 Nhiệm vụ chính 18
2.2 Thực hành dự án 19
2.3 Kết quả đạt được 23
KẾT LUẬN CHUNG 24
Trang 4Lời đầu tiên, em xin gửi lời cảm ơn đến quý Thầy Cô khoa Điện, Điện tử & Côngnghệ vật liệu trường Đại học Khoa học, Đại học Huế đã tạo điều kiện thuận lợi để emhoàn thành tốt khóa thực tập này Khóa thực tập đã giúp em tiếp cận với môi trườngthực tế của cơ hội việc làm.
Em xin chân thành cám ơn Ban giám đốc công ty, các Anh chị đồng nghiệp củaTMA Solutions đã nhiệt tình giúp đỡ và hướng dẫn cho em trong suốt quá trình thựctập tại công ty Được làm việc trong môi trường chuyên nghiệp của Quý công ty cũngnhư đã được tham gia vào dự án thực tế, những điều đó đã giúp em từng bước hoànthiện kỹ năng, kiến thức chuyên môn và đạo đức nghề nghiệp trước bước vào nghề saukhi tốt nghiệp
Đặc biệt, em xin chân thành cám ơn người hướng dẫn – anh Nguyễn Phan Kính
đã luôn nhiệt tình, sẵn lòng giúp đỡ, hướng dẫn để em có thể hoàn thành báo cáo thựctập đúng thời gian quy định
Khóa thực tập tốt nghiệp đã giúp em có cái nhìn tổng quan về nghề Tester nóichung và Manual Testing nói riêng trong thời điểm hiện tại & tương lai gần, hơn hết,khóa thực tập giúp em nắm rõ những yêu cầu và kỹ năng cần thiết để trau dồi học tập,rèn luyện & phát triển ở lĩnh vực này
Kết lời, em xin kính chúc quý Thầy Cô khoa Điện, điện tử & Công nghệ vật liệu,Quý anh chị đồng nghiệp trong của TMA Solutions thật nhiều sức khỏe, nhiệt huyếtvới công việc hiện tại & thành công trong cuộc sống
Một lần nữa em xin chân thành cám ơn!
TP Hồ Chí Minh, ngày 19 tháng 08 năm2022
Sinh viên
Nguyễn Hữu Tuyên
Trang 6Hình 1: Sơ đồ tăng trưởng trung bình của TMA Solutions 2
Hình 2: Các cơ sở của TMA Solutions tại Thành phố Hồ Chí Minh 3
Hình 3: Văn phòng đại diện của TMA Solutions ở nước ngoài 4
Hình 4: Quá trình kiểm thử phần mềm theo từng giai đoạn 6
Hình 5: Quá trình phát triển phần mềm theo từng giai đoạn 7
Hình 6: Các loại kỹ thuật kiểm thử 10
Hình 7: Các cấp độ trong kiểm thử 12
Hình 8: Giao diện đăng nhập Facebook 19
Trang 7
CHƯƠNG I GIỚI THIỆU VỀ CÔNG TY TNHH GIẢI PHÁP PHẦN
MỀM TƯỜNG MINH (TMA SOLUTIONS)
1 Tổng quan về công ty TMA Solutions
- TMA Solutions được thành lập năm 1997, là công ty Phần mềm hàng đầu Việt
Nam Với 25 năm phát triển bền vững, số lượng nhân sự năm 2022 tại TMA đạttới hơn 3500 nhân sự, với khách hàng từ 30 quốc gia trên thế giới Công ty nhậnđược nhiều bằng khen, giải thưởng và liên tục được báo chí, truyền thông trong
và ngoài nước đưa tin
- TMA hiện có 7 chi nhánh tại Việt Nam (6 tại Tp HCM và 1 ở Tp Quy
Nhơn) cùng 6 chi nhánh ở nước ngoài (Mỹ, Úc, Canada, Đức, Nhật,Singapore)
- Là công ty Gia công Phần mềm Viễn thông hàng đầu Đông Nam Á.
- Thực hiện nhiều dự án lớn và phức tạp.
- Có 4 chi nhánh ở nước ngoài: Canada, Mỹ, Châu Âu, Nhật Bản.
2 Sơ đồồ t ch c ổ ứ
DeliveryBusiness/ ITCDFCE0/ Chairman Finance/ Legal
Trang 83 Thành t u ự
- Tăng trưởng trung bình trong 14 năm đầu tiên là 50% mỗi năm (từ 6 nhân
sự tháng 10/1997 đã lên đến trên 3500 nhân sự như hiện nay)
Hình 1: Sơ đồ tăng trưởng trung bình của TMA Solutions
- Được nhiều đài truyền hình và báo chí quốc tế giới thiệu, minh chứng cho
sự phát triển của ngành phần mềm Việt Nam: CNN (Mỹ), NHK (Nhật),Global (Brazil), National (Thái Lan), Nikkei Computer (Nhật)…
- Đạt nhiều giải thưởng trong và ngoài nước:
Huy chương vàng Xuất khẩu Phần mềm (6 năm liền từ năm 2004 đếnnăm 2009)
Bằng khen của bộ Bưu chính Viễn thông, UBND Thành phố Hồ ChíMinh, hội Tin học Thành phố Hồ Chí Minh
Là một trong 15 công ty hàng đầu thế giới trong việc áp dụng hiệu quảquy trình Gia công Phần mềm (Báo cáo của công ty tư vấn MỹAberdeen, tháng 09/2002)
4 Cơ s h t ng ở ạ ầồ
- Có 6 cơ sở nằm tại Thành phố Hồ Chí Minh.
Cơ sở:
Có 6 văn phòng với sức chứa 4.000 người
Sàn nhà thiết kế để hỗ trợ các phòng thí nghiệm mạng viễn thông
Trang 9 Kết nối:
Kết nối internet với tốc độ cao, nâng cấp để hỗ trợ các yêu cầucủa khách hàng
Kết nối VPN với các trang web khách hàng
An ninh và kinh doanh liên tục:
ID xác thực thẻ từ
Cơ chế sao lưu dữ liệu doanh nghiệp
Đảm bảo cung cấp điện 24/7 (có máy phát điện trong tất cả cácvăn phòng)
Hình 2: Các cơ sở của TMA Solutions tại Thành phố Hồ Chí Minh
- Có 5 văn phòng đại diện ở nước ngoài (Canada, Mỹ, Châu Âu, Nhật
Bản, Australia)
Trang 10Hình 3: Văn phòng đại diện của TMA Solutions ở nước ngoài
5 Các l nh v c tr ng tâm ĩ ự ọ
- Phần mềm mạng và viễn thông (Telecommunications).
- Ứng dụng quản lý kinh doanh (Business Applications).
- Sản phẩm/ dịch vụ cho di động (Mobile Products/ Services).
- Đào tạo theo yêu cầu (IT Training).
Ứng dụng quản lý kinh doanh
- Dịch vụ triển khai mạng viễn thông:
Lắp đặt, nâng cấp mạng và thiết bị viễn thông
Kiểm thử toàn diện trước khi đưa hệ thống vào vận hành
Hỗ trợ kỹ thuật và bảo trì
Trang 11- Dịch vụ đánh giá an toàn thông tin: Kiểm thử toàn diện sự an toàn thông tin
và năng lực bảo mật của doanh nghiệp, tìm ra những rủi ro, đề ra những giảipháp khắc phục
- Dịch vụ cơ sở hạ tầng thông tin:
Tư vấn, lựa chọn giải pháp cho hệ thống thông tin và mạng máy tính
Thiết kế và cài đặt hệ thống mạng máy tính, mạng WiFi, WAN, VPN vàđiện thoại nội bộ
Tư vấn, triển khai và đào tạo về sử dụng phần mềm nguồn mở
7 Quy trình ch t l ầấ ượ ng
- ISO 9001:2000
- TL 9000
- CMMi-Level 3
Trang 12Chương II NỘI DUNG THỰC TẬP
1 Tìm hiểu về Testing
1.1 Chu trình kiểm thử phần mềm (STLC - Software Testing Life Cycle)
Chu trình kiểm thử phần mềm đề cập đến quy trình có các bước testing cụ thể đượcthực hiện trong một trình tự nhất định để đảm bảo rằng các mục tiêu chất lượng đãđược đáp ứng Trong STLC, mỗi hoạt động được thực hiện một cách có kế hoạch và có
hệ thống Mỗi giai đoạn có các mục tiêu và sản phẩm khác nhau Các tổ chức khácnhau có các giai đoạn khác nhau trong STLC
Các giai đoạn của STLC:
Giai đoạn yêu cầu - Requirements phase
Giai đoạn lập kế hoạch - Planning Phase
Phân tích yêu cầu - Analysis phase
Giai đoạn thiết kế - Design Phase
Giai đoạn Implementation - Implementation Phase
Giai đoạn Execution - Execution Phase
Giai đoạn kết thúc - Conclusion Phase
Giai đoạn chấm dứt - Closure Phase
Trang 13Hình 4: Quá trình kiểm thử phần mềm theo từng giai đoạn
1.2 Chu trình phát triển phần mềm (SDLC - Software Development Life Cycle)
SDLC là một cách tiếp cận có hệ thống và có trật tự để giải quyết các vấn đềliên quan đến hệ thống phần mềm hay nói cách khác nó là một cấu trúc đối với sựphát triển của một sản phẩm phần mềm Tuỳ thuộc vào các loại mô hình phát triểnphần mềm khác nhau mà các giai đoạn (phase) sau có thể được sắp xếp và tổ chứckhác nhau
Trang 14Hình 5: Quá trình phát triển phần mềm theo từng giai đoạn
1.3 Kiểm thử thủ công và kiểm thử tự động
a Kiểm thử thủ công (Manual Testing)
Kiểm thử thủ công là kiểm thử một phần mềm một cách thủ công (không sử dụngbất kỳ công cụ tự động hoặc bất kỳ đoạn code nào) Với loại kiểm thử này, tester nhưngười sử dụng cuối sẽ Kiểm thử phần mềm để xác định bất kỳ hành vi không mongmuốn hoặc lỗi Có rất nhiều giai đoạn để kiểm thử bằng tay: Kiểm thử đơn vị (Unittesting), Kiểm thử tích hợp (Integration testing), Kiểm thử hệ thống (System testing)
và Kiểm thử chấp nhận (User Acceptance testing)
Bất kỳ ứng dụng mới nào cũng phải được kiểm thử thủ công trước khi thực hiệnkiểm thử tự động Kiểm thử thủ công đòi hỏi nhiều nỗ lực hơn nhưng lại rất cần thiếtKiểm thử tính khả thi, sau đó mới thực hiện kiểm thử tự động
Tester sử dụng kế hoạch kiểm thử (test plans), trường hợp kiểm thử (test case),hoặc kịch bản kiểm thử (test scenarios) để đảm bảo tính đầy đủ của kiểm thử Kiểmthử thủ công cũng bao gồm kiểm thử phám phá, tester kiểm thử khám phá phần mềm
để tìm ra lỗi trong phần mềm đó
Trang 15Ưu điểm:
Nhận phản hồi trực quan nhanh và chính xác
Ít tốn kém hơn vì không cần phải chi ngân sách cho các công cụ và quy trình tựđộng
Sự phán đoán và trực giác của con người luôn có lợi cho yếu tố thủ công
Trong khi kiểm thử một thay đổi nhỏ, một kiểm thử tự động sẽ yêu cầu codinglàm tốn thời gian Trong khi kiểm thử thủ công lại không tốn thời gian
Một số phần nhất định khó thực hiện thủ công, có thể cần thêm thời gian
b Kiểm thử tự động (Automation Testing):
Kiểm thử tự động (Automation Testing) là khi tester viết kịch bản và sử dụngnhững công cụ hỗ trợ để kiểm thử phần mềm Quá trình này là chuỗi tự động hóa quátrình kiểm thử thủ công Kiểm thử tự động được sử dụng để chạy lại các kịch bản kiểmthử đã được kiểm thử thủ công, nhanh chóng, lặp lại nhiều lần
Ngoài kiểm thử hồi quy, kiểm thử tự động cũng được sử dụng để Kiểm thử ứngdụng từ load, performance, và stress Nó tăng thêm độ bao phủ, cải thiện độ chính xác,tiết kiệm thời gian và chi phí so với kiểm thử thủ công
Trang 16 Kiểm thử tự động giúp tăng phạm vi kiểm thử.
Kiểm thử thủ công có thể trở nên nhàm chán, do đó dễ bỏ sót lỗi
Phạm vi kiểm thử có thể được tăng lên vì công cụ kiểm thử tự động hóa không
bỏ qua các đơn vị kiểm thử, ngay cả đơn vị nhỏ nhất
Nhược điểm:
Không có yếu tố con người, thật khó để hiểu sâu hơn về các khía cạnh trựcquan của giao diện người dùng như màu sắc, phông chữ, kích thước, độ tươngphản hoặc kích thước nút bấm, layout
Các công cụ để chạy kiểm thử tự động có thể tốn kém, có thể làm tăng chi phíkiểm thử của dự án
Công cụ kiểm thử tự động chưa phải là bằng chứng đầy đủ Mỗi công cụ tựđộng đều có những hạn chế của chúng làm giảm phạm vi tự động
Gỡ lỗi test scripts là một vấn đề lớn trong kiểm thử tự động Kiểm thử bảo trì sẽtốn kém
Trang 171.4 Các kỹ thuật kiểm thử
Hình 6: Các loại kỹ thuật kiểm thử
a Phương pháp kiểm thử phần mềm White box testing
White box testing (Kiểm thử hộp trắng) là một kỹ thuật Kiểm thử cấu trúc bêntrong của phần mềm và lấy dữ liệu kiểm thử từ logic/ mã code Là phương pháp kiểmthử mà các chuyên gia tester tập trung vào các dữ liệu đầu vào và ra, truy cập thẳngvào bên trong source code Các tên khác của kiểm thử hộp trắng là kiểm thử hộp mở,kiểm thử theo hướng logic hoặc kiểm thử điều khiển đường dẫn hoặc kiểm thử cấutrúc
Ưu điểm:
Dễ dàng tự động
Cung cấp các quy tắc dựa trên kỹ thuật rõ ràng cho thời điểm ngừng kiểm thử
Buộc các chuyên gia kiểm thử phải suy luận cẩn thận về việc test lỗi vì vậy lỗi
sẽ được triệt để
Trang 18b Phương pháp kiểm thử phần mềm Black box testing
Black box testing (Kiểm thử hộp đen) là một phương pháp kiểm thử phần mềmKiểm thử chức năng của ứng dụng dựa trên các đặc điểm kỹ thuật của nó Nó cònđược gọi là kiểm thử dựa trên thông số kỹ thuật
Ưu điểm:
Các tester khi dùng phương pháp này sẽ không cần liên quan đến code
Có thể tìm được nhiều bug hơn
Việc kiểm thử được thực hiện bởi một cách độc lập với các Dev, cho phép quanđiểm khách quan và tránh sự thiên vị
c Phương pháp kiểm thử phần mềm Grey box testing
Phương pháp Grey box testing là một trong các phương pháp kiểm thử phần mềmphổ biến nhất hiện nay Có thể nói phương pháp Gray Box testing là phương pháp của
sự kết hợp giữa White box testing và Black box testing Kiểm thử hộp xám cho khảnăng Kiểm thử cả hai mặt của một ứng dụng, lớp trình bày cũng như phần code Nóchủ yếu là hữu ích trong kiểm thử tích hợp và kiểm thử thâm nhập Trong kiểm thửhộp xám, cấu trúc bên trong sản phẩm chỉ được biết một phần, Tester có thể truy cậpvào cấu trúc dữ liệu bên trong và thuật toán của chương trình với mục đích là để thiết
kế test case, nhưng khi kiểm thử thì kiểm thử như là người dùng cuối hoặc là ở mứckiểm thử hộp đen
Ưu điểm:
Là sự kết hợp của kiểm thử hộp đen và hộp trắng nên sẽ tối ưu hơn
Trang 19 Kiểm thử bằng phương pháp hộp màu xám có thể thiết kế kịch bản kiểm thửphức tạp một cách thông minh hơn.
1.5 Các cấp độ kiểm thử
Trang 20Kiểm thử đơn vị nằm trong phạm vi của kiểm thử hộp trắng (White-box testing),tức là kiểm thử code bên trong của một chức năng hoặc hệ thống để xem chức nănghoặc hệ thống đó được viết đúng chuẩn code hay chưa, đoạn code đó khi chạy hiệunăng có tốt hay không, có nhanh hay không, có tốn tài nguyên hay không
b Integration Testing (Kiểm thử tích hợp)
Kiểm thử tích hợp là kiểm thử sự tương tác giữa các chức năng với nhau trong hệthống và được thực hiện bởi tester Ví dụ: sau khi đã Unit test chức năng đăng nhập vàchức năng đăng ký thì ta có thể tiến hành kiểm thử tích hợp của 2 chức năng này đểxem chúng có tương tác tốt với nhau hay không, sau khi đăng ký thành công thì ta cóthể tiến hành đăng nhập bằng tài khoản đã đăng ký xem có thực hiện được không.Một ví dụ khác: Sau khi Unit test cho các chức năng con trong chức năng đăng kýmôn học như đăng nhập, đăng ký tài khoản, Kiểm thử điều kiện tiên quyết, Kiểm thửhọc phí thì ta Kiểm thử sự tích hợp giữa các chức năng này bằng cách tiến hành đăng
ký một môn học để xem sự tương tác giữa các chức năng này có thực hiện đượckhông, có trơn tru không, có bị mất liên kết chỗ nào không …
Integration Testing có 2 cách tiếp cận phổ biến: Tích hợp từ dưới đi lên
(Bottom-up Integration) và tích hợp từ trên đi xuống (Top- down Integration)
c System Testing (Kiểm thử hệ thống)
Kiểm thử hệ thống là kiểm thử một hệ thống đã hoàn thành, đã tích hợp đầy đủ cácchức năng nhằm Kiểm thử xem hệ thống phần mềm đó có đáp ứng đầy đủ các yêu cầuchức năng theo bản đặc tả yêu cầu phần mềm (SRS) hay không Người thực hiện kiểmthử ở mức độ này thường là Tester
Kiểm thử hệ thống thuộc phạm vi kiểm thử hộp đen (tức là Tester chỉ quan tâm đầuvào và kết quả mong đợi ở đầu ra mà không cần Kiểm thử code bên trong được viếtnhư thế nào)
d Acceptance Testing (Kiểm thử chấp nhận)
Mức độ kiểm thử phần mềm cuối cùng chính là Acceptance Test (Kiểm thử chấpnhận) – Kiểm thử xem hệ thống có đáp ứng đúng nhu cầu và mong đợi của khách hànghay không
Trang 21Kiểm thử chấp nhận thường là trách nhiệm của người dùng hoặc khách hàng.Trong kiểm thử hệ thống, khách hàng sẽ Kiểm thử xem phần mềm được viết có hoạtđộng đúng như mong đợi của mình không, có đảm bảo tính tiện dụng, hiệu suất hoạtđộng có như mong đợi không, có bảo mật tốt hay không…
Tìm lỗi không phải là trọng tâm chính trong kiểm thử chấp nhận, vì việc tìm lỗi đãđược đội Developer và Tester thực hiện trong các giai đoạn kiểm thử đơn vị, kiểm thửtích hợp, kiểm thử hệ thống rồi
Acceptance test gồm 2 loại kiểm thử là:
Alpha Test, người dùng kiểm thử phần mềm ngay tại nơi phát triển phần mềm,
lập trình viên sẽ ghi nhận các lỗi hoặc phản hồi, và lên kế hoạch sửa chữa
Beta Test, phần mềm sẽ được gửi tới cho người dùng để kiểm thử ngay trong
môi trường thực, lỗi hoặc phản hồi cũng sẽ gửi ngược lại cho lập trình viên đểsửa chữa Lưu ý, không nhất thiết phải thực hiện tất cả các loại kiểm thử nêutrên Tùy theo yêu cầu và đặc trưng của từng hệ thống, tuỳ vào khả năng và thờigian cho phép của dự án, khi lập kế hoạch, trưởng dự án sẽ quyết định áp dụngnhững loại kiểm thử nào
1.6 Các loại kiểm thử
a Kiểm thử chức năng là gì?
Kiểm thử chức năng là một loại kiểm thử để xác minh rằng mỗi chức năng của ứngdụng phần mềm hoạt động phù hợp với đặc tả yêu cầu Kiểm thử này chủ yếu liên quanđến kiểm thử hộp đen, và nó không quan tâm đến mã nguồn của ứng dụng
Mọi chức năng của hệ thống được kiểm thử bằng cách cung cấp đầu vào thích hợp,