Mục tiêu cần đạt được khi hoàn thành đề tài
- Hiểu về quy trình và phương pháp kiểm thử phần mềm
- Áp dụng công cụ kiểm thử phần mềm
- Kết luận, đánh giá, bài học kinh nghiệm cho bản thân và hướng phát triển của đề tài.
Nội dung và phương pháp thực hiện đề tài
Để kiểm thử thủ công ứng dụng Fixel, chúng tôi đã thực hiện các bước quan trọng Đầu tiên, chúng tôi xác định và hiểu rõ yêu cầu kiểm thử bằng cách đọc tài liệu đặc tả yêu cầu, thiết kế và các tài liệu liên quan khác, nhằm có cái nhìn tổng quan về phần mềm Fixel.
Chúng tôi sẽ xác định quy trình và phạm vi các loại kiểm thử như kiểm thử đơn vị, kiểm thử tích hợp và kiểm thử hệ thống Đồng thời, chúng tôi sẽ lập danh sách các trường hợp kiểm thử và xác định các tiêu chí chấp nhận hoặc hạn chế cho từng trường hợp.
Sau đó chuẩn bị môi trường kiểm thử: sử dụng thiết bị đã cài đặt ứng dụng Fixel để thực hiện các trường hợp kiểm thử
Cuối cùng là viết báo cáo kiểm thử chi tiết với thông tin về kết quả kiểm thử và đánh giá tổng thể về chất lượng phần mềm
Chúng tôi sẽ tiến hành kiểm tra và đánh giá chất lượng ứng dụng Fixel để đảm bảo rằng nó hoạt động hiệu quả và đáp ứng các yêu cầu về tính ổn định và độ tin cậy trước khi đưa vào sử dụng.
Kết cấu của đề tài
Đề tài được tổ chức gồm phần mở đầu, 4 chương nội dung và phần kết luận
- Chương 1: Tổng quan về Công ty Meta technology
- Chương 2: Cơ sở lý thuyết về Kiểm thử phần mềm
- Chương 3: Triển khai “Dự án ứng dụng Fixel”
- Kết luận và hướng phát triển
TỔNG QUAN VỀ ĐƠN VỊ THỰC TẬP
Giới thiệu về Công ty Meta Technology
META Technology là một công ty Start-up chuyên cung cấp dịch vụ CNTT với quy mô vừa và nhỏ, gồm 30 nhân viên Công ty tập trung vào khách hàng và công nghệ, cung cấp dịch vụ phát triển ứng dụng và phần mềm doanh nghiệp, cũng như kỹ thuật sản phẩm, nhằm giúp khách hàng tạo ra giá trị tối ưu cho các dự án phát triển phần mềm của họ.
Hình 1 Logo Công ty Meta Technology
1.1.1 Tầm nhìn Được thành lập trong thời kỳ Việt Nam đang hội nhập mạnh mẽ với thế giới, META xác định sẽ là một phần quan trọng của ngành CNTT toàn cầu
META cam kết nâng cao năng lực toàn thể nhân viên, với mục tiêu mang lại thành công tối đa cho khách hàng Con người luôn được ưu tiên trong mọi hoạt động, và khách hàng là trung tâm trong mọi định hướng phát triển META không ngừng tiếp thu công nghệ và quy trình tiên tiến để phục vụ tốt nhất cho nhu cầu của khách hàng.
META sử dụng các công nghệ phổ biến như JavaScript, JAVA, NET, IOS và Android để đáp ứng nhu cầu của khách hàng Đồng thời, bộ phận R&D của META liên tục nghiên cứu các công nghệ mới như Điện toán đám mây và Phân tích dữ liệu nhằm nâng cao năng lực và đáp ứng các yêu cầu khắt khe nhất từ phía khách hàng.
Lĩnh vực hoạt động
Meta Technology chuyên cung cấp dịch vụ phần mềm toàn diện, bao gồm tư vấn công nghệ thông tin, phát triển ứng dụng và phần mềm tùy chỉnh theo yêu cầu khách hàng Chúng tôi cũng cung cấp dịch vụ kiểm thử phần mềm, hỗ trợ và bảo trì, cùng với giải pháp bảo mật ứng dụng hiệu quả.
Tổng quan về chương trình Thực tập tại Công ty
Công ty Meta Technology có Chương trình Thực tập với nhiều vị trí như: Node JS, React JS, React Native và Tester
1.3.1 Quyền lợi chung của Thực tập sinh
- Đào tạo miễn phí, chuyên sâu không yêu cầu kinh nghiệm với Chương trình đào tạo bài bản cùng Mentor nhiều kinh nghiệm
Tham gia trực tiếp vào các dự án thực tế tại công ty giúp bạn tích lũy kinh nghiệm quý giá và có cơ hội trở thành nhân viên chính thức sau thời gian thực tập.
- Môi trường làm việc trẻ trung, chuyên nghiệp, nhiều hoạt động team building, event hấp dẫn, đặc biệt #HappyTime vào thứ 6 hàng tuần
1.3.2 Nhiệm vụ chính của Thực tập Kiểm thử
- Tham gia test các dự án sản phẩm của công ty bao gồm: Web, Mobile App
- Tiếp nhận yêu cầu từ các bộ phận trong công ty, phân tích rõ yêu cầu
- Lập kế hoạch Test, Xây dựng Testcase, Test Script, thực hiện test sản phẩm phần mềm
- Báo cáo lỗi, đánh giá mức độ nghiêm trọng của lỗi và theo dõi trạng thái lỗi
- Phối hợp với các bộ phận khác để đảm bảo chất lượng sản phẩm
- Hoàn thành các công việc theo yêu cầu của quản lý.
CƠ SỞ LÝ THUYẾT VỀ KIỂM THỬ PHẦN MỀM
Tổng quan về kiểm thử phần mềm
2.1.1 Giới thiệu về kiểm thử phần mềm
Kiểm thử phần mềm là quá trình thực thi ứng dụng nhằm phát hiện lỗi, bao gồm cả vòng lặp tĩnh và động trong việc lập kế hoạch, chuẩn bị và đánh giá sản phẩm Mục tiêu chính là xác định xem sản phẩm có đáp ứng đầy đủ các yêu cầu của người dùng và yêu cầu đặc tả hay không Ngoài ra, kiểm thử còn chứng minh sản phẩm phù hợp với yêu cầu sử dụng và phát hiện lỗi trong quá trình phát triển phần mềm.
2.1.2 Mục tiêu của kiểm thử phần mềm Đáp ứng được nhu cầu của các bên liên quan:
- Yêu cầu của doanh nghiệp và người dùng
- Đáp ứng SRS (System Requirement Specifications) - đặc tả yêu cầu hệ thống
Phát hiện và khắc phục lỗi phần mềm, bao gồm cả lỗi và thiếu sót, là một nhiệm vụ quan trọng do lập trình viên thực hiện trong quá trình phát triển phần mềm Việc này không chỉ giúp nâng cao chất lượng sản phẩm mà còn đảm bảo trải nghiệm người dùng tốt nhất.
- Đạt được sự tín nhiệm và mang đến sự hài lòng cho khách hàng bằng cách cung cấp cho họ một sản phẩm chất lượng
- Thực hiện công việc đúng như kỳ vọng
- Có thể triển khai được với những đặc tính tương tự
2.1.3 Vai trò của kiểm thử phần mềm Đảm bảo độ tin cậy, bảo mật, chất lượng và hiệu suất của sản phẩm → Tiết kiệm thời gian, hiệu quả về chi phí → Sự hài lòng và niềm tin của khách hàng
2.1.4 Lợi ích của kiểm thử phần mềm
Kiểm tra sớm và thường xuyên không chỉ giúp tiết kiệm chi phí mà còn giảm thiểu thời gian sửa lỗi, đồng thời việc khắc phục các vấn đề sẽ trở nên dễ dàng và nhanh chóng hơn.
Kiểm thử bảo mật là quá trình quan trọng giúp phát hiện và khắc phục các lỗ hổng trong sản phẩm trước khi ra mắt, từ đó bảo vệ thông tin nhạy cảm và giảm thiểu nguy cơ tấn công Việc này không chỉ loại bỏ các rủi ro mà còn đảm bảo sản phẩm hoạt động an toàn và hiệu quả.
- Chất lượng sản phẩm: cung cấp sản phẩm chất lượng đến tay khách hàng
Sự hài lòng của khách hàng đóng vai trò quan trọng trong việc tạo ra trải nghiệm tốt nhất cho họ, đồng thời góp phần vào mối quan hệ hợp tác lâu dài và bền vững.
2.1.5 Nguyên tắc kiểm thử phần mềm
Kiểm thử phần mềm là một hoạt động phức tạp và đầy thách thức, nhưng cũng tuân theo những nguyên tắc riêng biệt Những nguyên tắc này đóng vai trò như kim chỉ nam, giúp nâng cao hiệu quả và định hướng cho các hoạt động kiểm thử.
Có 7 nguyên tắc cơ bản trong kiểm thử phần mềm:
1 Kiểm thử chứng minh sự hiện diện của lỗi (Testing shows presence of defects)
2 Kiểm thử toàn bộ là không thể (Exhaustive testing is not possible)
3 Kiểm thử càng sớm càng tốt (Early testing)
4 Lỗi thường được phân bố tập trung (Defect clustering)
5 Nghịch lý thuốc trừ sâu (Pesticide paradox)
6 Kiểm thử phụ thuộc vào ngữ cảnh (Testing is context dependent)
7 Quan niệm sai lầm về việc “hết lỗi” (Absence of errors fallacy)
2.1.6 Các phương pháp quản lý dự án
- Đây được coi như là mô hình phát triển phần mềm đầu tiên được sử dụng
Mô hình phát triển phần mềm này tuân theo quy trình tuần tự, trong đó đầu ra của mỗi giai đoạn trở thành đầu vào cho giai đoạn tiếp theo Mỗi giai đoạn chỉ được tiến hành khi giai đoạn trước đó đã hoàn tất.
- Đặc biệt không được quay lại giai đoạn trước để xử lý các yêu cầu khi muốn thay đổi Ưu điểm
- Đơn giản và dễ hiểu và sử dụng
- Dễ dàng quản lý đo độ cứng của mô hình - mỗi giai đoạn có các sản phẩm cụ thể và quy trình xem xét
- Các giai đoạn được xử lý và hoàn thành cùng một lúc Các giai đoạn không trùng lặp
- Hoạt động tốt cho các dự án nhỏ hơn, nơi các yêu cầu được xác định rõ ràng và hiểu rất rõ
- Trong giai đoạn thử nghiệm, rất khó để quay lại và thay đổi một thứ gì đó chưa được nghĩ ra trong giai đoạn ý tưởng
- Lượng rủi ro cao và không chắc chắn
- Không phải là một mô hình tốt cho các dự án phức tạp và hướng đối tượng
- Mô hình kém cho các dự án dài và đang diễn ra
- Không phù hợp với các dự án mà các yêu cầu có nguy cơ thay đổi từ trung bình đến cao
Scrum là một quy trình phát triển phần mềm thuộc phương pháp Agile, được sử dụng phổ biến để quản lý dự án Phương pháp này phù hợp cho cả các dự án nhỏ với nhóm phát triển ít thành viên lẫn các dự án lớn, phức tạp với hàng trăm người tham gia, bao gồm cả những dự án có thời gian thực hiện cố định.
Scrum là phương pháp phát triển sản phẩm thông qua các vòng lặp gọi là sprint, cho phép cải tiến liên tục sản phẩm, kỹ thuật và môi trường làm việc Nhờ vào quy trình này, giá trị được cung cấp cho khách hàng trong suốt quá trình phát triển.
Các vị trí trong mô hình Scrum
- Product Owner (chủ sản phẩm)
- Development Team (Đội sản xuất, hay Nhóm phát triển)
Các loại meeting trong mô hình Scrum
Lập kế hoạch Sprint là sự kiện quan trọng diễn ra đầu mỗi Sprint, giúp xác định những công việc cần hoàn thành trong giai đoạn sắp tới Việc này không chỉ tạo ra một lộ trình rõ ràng cho nhóm mà còn đảm bảo rằng tất cả các thành viên đều hiểu và đồng thuận về mục tiêu của Sprint.
Cuộc họp Scrum hằng ngày là một sự kiện ngắn diễn ra mỗi ngày trong suốt vòng sprint, nhằm giúp nhóm phát triển tổ chức và đồng bộ hóa công việc Đây là cơ hội để các thành viên trong nhóm chia sẻ thông tin và giải quyết các vấn đề liên quan đến tiến độ công việc, từ đó nâng cao hiệu quả làm việc chung.
Cuộc họp đánh giá sprint diễn ra vào cuối mỗi vòng sprint, nhằm kiểm tra và điều chỉnh sản phẩm đang phát triển Trong cuộc họp này, nhóm sẽ trình bày những gì đã hoàn thành, nhận phản hồi từ các bên liên quan và xác định các bước tiếp theo để cải tiến sản phẩm.
9 phát triển cho người dùng trải nghiệm sản phẩm, và đón nhận những phản hồi về sản phẩm vừa chuyển giao
Cuộc họp đánh giá sau sprint (Sprint retrospective meeting) diễn ra ngay sau cuộc họp đánh giá sprint và trước khi bắt đầu một sprint mới Mục đích của cuộc họp này là xem xét và đánh giá quá trình làm việc trong sprint vừa qua, nhằm xác định các điểm mạnh, điểm yếu và đề xuất cải tiến cho các sprint tiếp theo Qua đó, cuộc họp giúp tối ưu hóa hiệu quả và chất lượng sản phẩm.
- Một người có thể làm nhiều việc Ví dụ: Dev có thể test
- Phát hiện lỗi sớm hơn rất nhiều so với các phương pháp truyền thống
- Khách hàng nhanh chóng thấy được sản phẩm qua đó đưa ra phản hồi sớm
- Có khả năng áp dụng được cho những dự án mà yêu cầu khách hàng không rõ ràng ngay từ đầu
- Trình độ của nhóm là có một kỹ năng nhất định
- Phải có sự hiểu biết về mô hình agile
- Khó khăn trong việc xác định ngân sách và thời gian
- Luôn nghe ý kiến phản hồi từ khách hàng và thay đổi theo nên thời gian sẽ kéo dài khi có quá nhiều yêu cầu thay đổi từ khách hàng
- Vai trò của PO rất quan trọng, PO là người định hướng sản phẩm Nếu PO làm không tốt sẽ ảnh hưởng đến kết quả chung.
Quy trình kiểm thử phần mềm (Software Testing Life Cycle - STLC)
Quy trình kiểm thử phần mềm xác định các giai đoạn/ pha trong kiểm thử phần mềm Bao gồm 6 giai đoạn sau:
2.2.1 Phân tích yêu cầu (Requirement analysis)
Phân tích yêu cầu là bước khởi đầu quan trọng trong Vòng đời kiểm thử phần mềm (STLC), nơi đội ngũ QA cần nắm rõ các yêu cầu để thực hiện kiểm thử hiệu quả Nếu có bất kỳ thông tin nào còn thiếu hoặc khó hiểu, nhóm đảm bảo chất lượng sẽ phối hợp với các bên liên quan để làm rõ các chi tiết cần thiết.
2.2.2 Lập kế hoạch kiểm thử (Test planning)
Lập kế hoạch kiểm thử là giai đoạn quan trọng nhất trong vòng đời kiểm thử phần mềm, nơi các kế hoạch kiểm thử được xác định rõ ràng Trong giai đoạn này, quản lý kiểm thử sẽ tính toán nỗ lực và chi phí ước tính cho công việc kiểm thử Giai đoạn này bắt đầu sau khi hoàn thành việc thu thập yêu cầu.
2.2.3 Phát triển trường hợp thử nghiệm (Test case development)
Giai đoạn phát triển trường hợp thử nghiệm bắt đầu sau khi hoàn thành kế hoạch thử nghiệm Trong giai đoạn này, nhóm kiểm thử ghi lại các trường hợp kiểm thử chi tiết và chuẩn bị dữ liệu thử nghiệm cần thiết Sau khi chuẩn bị xong, nhóm đảm bảo chất lượng sẽ xem xét các trường hợp kiểm thử.
2.2.4 Thiết lập môi trường kiểm thử (Test environment set up)
Cài đặt môi trường kiểm thử là một giai đoạn quan trọng trong vòng đời phát triển phần mềm, được xác định dựa trên yêu cầu của khách hàng và đặc thù sản phẩm Nhóm kiểm thử cần chuẩn bị các trường hợp thử nghiệm để xác minh môi trường đã sẵn sàng cho việc kiểm thử Hoạt động này có thể diễn ra độc lập và song song với quá trình phát triển trường hợp thử nghiệm.
2.2.5 Thực hiện kiểm thử (Test execution)
Sau khi hoàn thành giai đoạn thiết lập môi trường kiểm thử, nhóm kiểm thử sẽ tiến hành phát triển các trường hợp kiểm thử Trong giai đoạn này, các thành viên trong nhóm bắt đầu thực hiện các kiểm thử để đảm bảo chất lượng sản phẩm.
11 trường hợp kiểm thử dựa trên các trường hợp kiểm thử đã chuẩn bị ở bước trước đó Các hoạt động diễn ra trong giai đoạn này:
- Chuẩn bị dữ liệu kiểm tra
- Thiết lập môi trường thử nghiệm
- Phân tích kết quả kiểm tra
2.2.6 Đóng chu trình kiểm thử (Test cycle closure)
Giai đoạn kết thúc kiểm thử là bước cuối cùng trong Vòng đời kiểm thử phần mềm (STLC), nơi mọi hoạt động kiểm thử đã được hoàn tất và ghi chép đầy đủ Mục tiêu chính của giai đoạn này là đảm bảo tất cả các hoạt động thử nghiệm đã hoàn thành, đồng thời xác nhận rằng phần mềm đã sẵn sàng để phát hành.
Loại hình kiểm thử phần mềm
2.3.1 Kiểm thử thủ công (Manual Testing)
Manual testing là phương pháp kiểm thử phần mềm được thực hiện hoàn toàn bằng tay bởi người kiểm thử, nhằm phát hiện lỗi trong quá trình phát triển phần mềm Kiểm thử viên thực hiện các trường hợp kiểm thử mà không sử dụng bất kỳ công cụ tự động nào, đảm bảo tính chính xác và chi tiết trong quá trình kiểm tra.
2.3.2 Kiểm thử tự động (Automation Testing)
Kiểm thử tự động, hay còn gọi là automation testing, là phương pháp mà người kiểm thử viết kịch bản và sử dụng công cụ hỗ trợ để thực hiện kiểm thử Phương pháp này không chỉ nâng cao hiệu quả kiểm thử mà còn tiết kiệm thời gian đáng kể.
Kiểm thử tự động cho phép thực hiện các kịch bản kiểm thử lặp đi lặp lại và xử lý những nhiệm vụ kiểm thử phức tạp mà khó có thể thực hiện bằng tay, như kiểm thử hiệu năng và kiểm tra sức chịu đựng.
Phân loại kiểm thử phần mềm
Có 2 loại kiểm thử cơ bản đó là Kiểm thử tĩnh và Kiểm thử động
2.4.1 Kiểm thử tĩnh (Static testing)
- Kiểm thử tĩnh là loại kiểm tra trong đó code không được thực hiện Nó có thể được thực hiện bằng tay hoặc bằng một bộ công cụ
- Nó chủ yếu tập trung vào tài liệu yêu cầu và tài liệu thiết kế để tìm lỗi
- Mục tiêu chính là để cải thiện chất lượng sản phẩm phần mềm
2.4.2 Kiểm thử động (Dynamic testing)
Kiểm thử động là quá trình thử nghiệm khi mã nguồn đang hoạt động trong môi trường thực thi của ứng dụng Trong quá trình này, đầu vào sẽ được cung cấp một giá trị và kết quả đầu ra sẽ được so sánh với kết quả dự kiến ban đầu.
Kiểm thử động bao gồm: Kiểm thử hộp trắng (Kiểm thử cấu trúc) và Kiểm thử hộp đen (Kiểm thử chức năng)
2.4.3 Các phương pháp kiểm thử phần mềm
2.4.3.1 Kiểm thử hộp trắng (White box testing)
Kiểm thử hộp trắng là phương pháp kiểm thử phần mềm, trong đó cấu trúc, thiết kế và mã nguồn được kiểm tra để xác minh luồng đầu vào và đầu ra, đồng thời cải thiện thiết kế, khả năng sử dụng và bảo mật Phương pháp này cho phép người thử nghiệm xem mã, vì vậy nó còn được gọi là Kiểm thử hộp rõ ràng, Kiểm thử hộp mở, Kiểm thử hộp trong suốt, Kiểm thử dựa trên mã hay Kiểm thử hộp thủy tinh.
Với phương pháp kiểm thử này, người kiểm thử không cần hiểu biết về mã lệnh để xử lý chức năng đó thế nào
Phương pháp Kiểm thử Hộp trắng áp dụng cho các mức độ kiểm tra phần mềm sau đây:
- Unit Testing (Kiểm thử đơn vị): Để kiểm tra đường dẫn trong một đơn vị
- Integration Testing (Test tích hợp): Để kiểm tra đường dẫn giữa các đơn vị
- System Testing (Test hệ thống): Để kiểm tra các đường dẫn giữa các hệ thống con
→ Tuy nhiên, nó là chủ yếu áp dụng cho các kiểm thử đơn vị Ưu điểm
- Tối ưu hóa mã code bằng cách tìm các lỗi ẩn
- Các trường hợp kiểm thử hộp trắng có thể dễ dàng được tự động hóa
- Thử nghiệm kỹ lưỡng hơn vì có thể bao phủ được hầu hết tất cả các đường dẫn mã
Kiểm thử phần mềm có thể bắt đầu ngay từ những giai đoạn đầu trong quy trình phát triển, ngay cả khi giao diện đồ họa người dùng (GUI) chưa có sẵn.
- Kiểm thử hộp trắng yêu cầu nguồn lực chuyên nghiệp với sự hiểu biết chi tiết về lập trình và triển khai
- Kiểm thử hộp trắng tốn nhiều thời gian, các ứng dụng lập trình lớn hơn cần thời gian để kiểm tra đầy đủ
Phương pháp thử nghiệm này gắn liền với ứng dụng đang được kiểm tra, do đó, các công cụ hỗ trợ cho mọi loại triển khai hoặc nền tảng có thể không có sẵn.
Các kỹ thuật kiểm thử hộp trắng
- Bao phủ câu lệnh (Statement Coverage)
- Phạm vi chi nhánh (Branch Coverage)
- Bao phủ nhánh (Path Coverage)
Các loại kiểm thử hộp trắng
- Kiểm thử đơn vị (Unit Testing)
- Kiểm tra rò rỉ bộ nhớ (Testing for Memory Leaks)
2.4.3.2 Kiểm thử hộp đen (Black box testing)
Kiểm thử hộp đen là phương pháp kiểm thử phần mềm mà không cần biết về cấu trúc mã nội bộ, tập trung vào đầu vào và đầu ra của ứng dụng Phương pháp này hoàn toàn dựa trên các yêu cầu và thông số kỹ thuật của phần mềm, còn được gọi là kiểm thử hành vi Ưu điểm của kiểm thử hộp đen bao gồm khả năng phát hiện lỗi từ góc độ người dùng và đảm bảo rằng ứng dụng hoạt động đúng như mong đợi.
- Thích hợp trong việc kiểm tra từng phân đoạn lớn các mã lệnh, chức năng lớn
- Người kiểm thử không cần hiểu biết về mã lệnh được viết trong chương trình
- Tách biệt giữa quan điểm của người sử dụng và người phát triển phần mềm
- Độ bao phủ hạn chế vì chỉ thực hiện được một phần nhỏ trong số các kịch bản kiểm thử
- Kiểm tra không hiệu quả do người thử nghiệm không hiểu biết gì về cấu trúc bên trong phần mềm
- Người kiểm thử có hiểu biết hạn chế về ứng dụng
Các kỹ thuật kiểm thử hộp đen
- Kiểm thử lớp tương đương (Equivalence Class Testing)
- Kiểm thử giá trị biên (Boundary Value Testing)
- Kiểm thử bảng quyết định (Decision Table Testing)
Các loại kiểm thử hộp đen
Kiểm thử chức năng (Functional testing) là một phương pháp kiểm thử hộp đen, tập trung vào việc đánh giá các yêu cầu chức năng của hệ thống Hoạt động này thường được thực hiện bởi đội ngũ kiểm thử phần mềm, nhằm đảm bảo rằng sản phẩm đáp ứng đầy đủ các tiêu chí chức năng đã đề ra.
Kiểm thử phi chức năng (Non-functional testing) là một phương pháp kiểm thử hộp đen không tập trung vào các chức năng cụ thể của phần mềm, mà chú trọng vào các yêu cầu phi chức năng như hiệu suất, khả năng mở rộng và khả năng sử dụng.
Kiểm thử hồi quy là một dạng kiểm tra không chức năng, được thực hiện sau khi có sự thay đổi trong mã, nâng cấp hoặc bảo trì hệ thống Mục tiêu của kiểm thử hồi quy là đảm bảo rằng mã mới không gây ảnh hưởng xấu đến các chức năng hiện có của hệ thống.
2.4.3.3 Kiểm thử hộp xám (Gray box testing)
Ngoài 2 phương pháp đã được nhắc đến: Black box test và White box test, thì có Gray box test là sự kết hợp giữa Black box test và White box test
Kiểm thử hộp xám là phương pháp kiểm thử phần mềm, cho phép đánh giá sản phẩm hoặc ứng dụng dựa trên kiến thức về cấu trúc bên trong của nó Mục tiêu chính của kiểm thử hộp xám là phát hiện và xác định các lỗi phát sinh từ cấu trúc mã không chính xác hoặc việc sử dụng ứng dụng không đúng cách.
Trong quá trình này, các lỗi ngữ cảnh cụ thể liên quan đến hệ thống được xác định, giúp tăng cường phạm vi kiểm tra Điều này tập trung vào tất cả các lớp của bất kỳ hệ thống phức tạp nào.
Các kỹ thuật kiểm thử hộp xám
- Kiểm thử ma trận (Matrix Testing)
- Kiểm thử hồi quy (Regression Testing)
- Kiểm thử mảng trực giao (Orthogonal Array Testing or OAT)
- Kiểm thử mẫu (Pattern Testing)
Các cấp độ kiểm thử phần mềm
Có 4 giai đoạn kiểm thử phần mềm: Unit testing, Integration Testing, System Testing, Acceptance Testing
2.5.1 Kiểm thử đơn vị (Unit testing)
Unit testing là quá trình kiểm thử các module nhỏ trong hệ thống để xác nhận rằng từng thành phần phần mềm hoạt động đúng theo thiết kế Các module chính được kiểm thử bao gồm Hàm (Function), Lớp (Class) và Phương thức (Method).
Unit Testing là giai đoạn kiểm thử đầu tiên trong quy trình phát triển phần mềm, giúp phát hiện lỗi sớm và dễ dàng sửa chữa mà không phát sinh chi phí cho dự án Việc sửa lỗi ngay sau khi phát hiện không chỉ tiết kiệm thời gian mà còn giảm thiểu việc quản lý lỗi như trong các giai đoạn kiểm thử khác.
Kiểm thử đơn vị chủ yếu được thực hiện bởi các lập trình viên hoặc tester có kinh nghiệm lập trình Các lập trình viên sẽ tiến hành viết mã, phát triển các chức năng riêng lẻ và kiểm tra lại để đảm bảo rằng mã hoạt động đúng trước khi chuyển sang giai đoạn tiếp theo Trong giai đoạn này, phương pháp kiểm thử mà lập trình viên áp dụng là kiểm thử hộp trắng (White box testing).
2.5.2 Kiểm thử tích hợp (Integration Testing)
Kiểm thử tích hợp (Integration Testing) là quá trình kiểm tra các module riêng lẻ được kết hợp lại với nhau trong một dự án phần mềm Mỗi dự án thường bao gồm nhiều module do các lập trình viên khác nhau phát triển, vì vậy kiểm thử tích hợp chủ yếu tập trung vào việc xác minh khả năng truyền dữ liệu giữa các module này.
Có 4 cách tiếp cận được sử dụng trong giai đoạn Integration Testing:
Big Bang là phương pháp kiểm thử trong đó tất cả các module của sản phẩm sẽ được tích hợp và kiểm tra đồng thời Cách tiếp cận này chỉ được thực hiện khi tester nhận được toàn bộ các module của sản phẩm.
Kiểm thử Top Down diễn ra theo luồng điều khiển của hệ thống, bắt đầu từ các đơn vị cao nhất và tiến dần xuống các đơn vị cấp thấp hơn Phương pháp này giúp phát hiện lỗi ở các thành phần quan trọng trước, đảm bảo tính khả dụng của hệ thống tổng thể.
- Bottom up: Ngược lại với Top Down, các đơn vị cấp thấp sẽ được kiểm tra trước rồi mới chuyển sang cấp đơn vị cao hơn
Phương pháp Sandwich/Hybrid là sự kết hợp giữa hai cách tiếp cận Top Down và Bottom Up, trong đó kiểm thử được thực hiện khi các module cấp cao được tích hợp xen kẽ với các module cấp thấp.
2.5.3 Kiểm thử hệ thống (System Testing)
System Testing là bước kiểm tra hệ thống đã được tích hợp đầy đủ để xác nhận rằng hệ thống hoạt động đúng theo các yêu cầu đã được xác định.
System Testing là một phần của kiểm thử hộp đen, tập trung vào việc đánh giá chức năng tổng thể của hệ thống Quá trình này không chỉ kiểm tra các chức năng mà còn xem xét giao diện và các hành vi của hệ thống liên quan đến các hoạt động bên ngoài phần mềm từ góc độ người dùng.
Thông thường, sản phẩm phần mềm chỉ được kiểm thử trong môi trường demo, nhưng kiểm thử hệ thống lại đảm bảo rằng hệ thống hoạt động hiệu quả trên nhiều môi trường khác nhau Sau khi hoàn tất kiểm thử tích hợp, người kiểm thử cần kiểm tra độ tương thích và tương tác với các thiết bị ngoại vi để đánh giá tính khả dụng của sản phẩm.
2.5.4 Kiểm thử chấp nhận (Acceptance Testing)
Kiểm thử chấp nhận, tương tự như kiểm thử hệ thống, thường được thực hiện bởi khách hàng Mục tiêu của giai đoạn này là đánh giá xem hệ thống có đáp ứng đúng các yêu cầu của khách hàng hay không, từ đó quyết định có chấp nhận bàn giao sản phẩm hay không.
Kỹ thuật thiết kế Test case
Các kỹ thuật kiểm thử phần mềm thiết kế Test Case phổ biến nhất bao gồm: Phân vùng tương đương, Phân tích giá trị biên
2.6.1 Phân vùng tương đương (Equivalence partitioning)
Phân vùng tương đương là một kỹ thuật quan trọng trong việc chia đầu vào thành các nhóm tương đương Theo nguyên tắc này, nếu một giá trị trong nhóm hoạt động chính xác, thì tất cả các giá trị khác trong nhóm cũng sẽ hoạt động đúng Ngược lại, nếu một giá trị không hoạt động, điều đó có thể cho thấy rằng tất cả các giá trị trong nhóm đó cũng không hiệu quả.
Thiết kế test-case bằng phương pháp phân vùng tương đương bao gồm hai bước chính: xác định các lớp tương đương và xác định các ca kiểm thử Kỹ thuật này chia nhỏ đầu vào dựa trên nguyên tắc phân vùng, giúp tối ưu hóa quá trình kiểm thử và nâng cao hiệu quả phát hiện lỗi.
● 1 lớp các giá trị lớn hơn
● 1 lớp các giá trị nhỏ hơn
● 1 lớp các giá trị hợp lệ
2.6.2 Phân tích giá trị biên (Boundary value analysis)
Phân tích giá trị biên là kỹ thuật kiểm tra các giá trị ở rìa của dữ liệu đầu vào và đầu ra Các kiểm thử viên sẽ chú trọng vào những giá trị biên thay vì kiểm tra toàn bộ dữ liệu Nhờ vậy, thay vì kiểm thử toàn bộ dữ liệu, chúng ta có thể tập trung vào các giá trị quan trọng để đảm bảo tính chính xác và hiệu quả trong quá trình kiểm thử.
4 - 6 case mà vẫn đảm bảo hệ thống hoạt động tốt
Giá trị biên là các điểm nằm ở giữa, trên và dưới các biên của lớp tương đương Kỹ thuật phân tích giá trị biên giúp người kiểm thử lựa chọn các giá trị phù hợp để đảm bảo tính chính xác và hiệu quả trong quá trình kiểm tra.
● Giá trị ngay dưới giá trị nhỏ nhất
● Giá trị ngay trên giá trị lớn nhất
TRIỂN KHAI Dự án “Kiểm thử thủ công ứng dụng Fixel”
Mô tả ứng dụng Fixel
Hệ thống Fixel là một ứng dụng đa năng do Công ty Meta Technology phát triển, nhằm kết nối người dùng cần sửa chữa thiết bị gia dụng với các thợ sửa chữa (Handyman) Hệ thống bao gồm hai ứng dụng riêng biệt: một dành cho thợ sửa chữa và một dành cho khách hàng/chủ sở hữu.
Fixel cung cấp hai phiên bản ứng dụng riêng biệt cho thợ sửa chữa và khách hàng, với logo và giao diện màu sắc khác nhau để dễ nhận biết Mỗi ứng dụng được thiết kế với các chức năng tùy chỉnh nhằm đáp ứng nhu cầu cụ thể của người dùng, với mục tiêu chính là kết nối nhanh chóng và hiệu quả giữa những người cần sửa chữa và thợ sửa chữa.
Hình 2 Giao diện ứng dụng dành cho Handyman và Customer
Màn hình chức năng
Hình 3 Sơ đồ luồng màn hình
3.2.1.1 Màn hình Đăng nhập (Sign-in)
Cho phép người dùng truy cập vào tài khoản cá nhân bằng cách xác thực thông tin đăng nhập
Hình 4 Màn hình Đăng nhập
1 Email textbox required; email format
Bảng 1 Items của màn hình Đăng nhập (Sign-in)
Click “Forgot your password” link
Forward to CHANGE PASSWORD screen
POST “/api/auth/customer/sign-in” and verify account as below:
“Incorrect email or password Please try again.”
Account is activated Forward to HOME screen
Forward to SIGN-IN UNSUCCESFUL screen
3 Click “Sign up” link Forward to SIGN-UP screen
Bảng 2 Actions của màn hình Đăng nhập (Sign-in)
3.2.1.2 Màn hình Đăng ký (Sign-up)
Cho phép người dùng tạo một tài khoản cá nhân mới trên ứng dụng
Hình 5 Màn hình Đăng ký
1 Upload Avatar image upload required; image size 1MB - 5MB; only 1 image
2 First Name textbox required; 2-30 characters
3 Last Name textbox required; 2-30 characters
4 Username textbox required; must be at least 5 characters to max
20 characters, only alphanumeric, no symbol, no space
5 Email Address textbox required; email format
6 Mobile Number textbox required; 8 digits
7 Password textbox required; must be minimum 8 characters, maximum of 30 characters, at least 1 digit, 1 capital letter, 1 symbol !@#$%^&*()_- _=+{[]}\|,/?
8 Confirm password textbox required; value is same as password
11 Home Number textbox optional; 8 digits
12 Blk No textbox required; number only; 3 digits
14 Unit No textbox required; only number and at least 1 symbol –; 2-5 characters
15 Building Name textbox required; only letter; 6 -50 characters
16 Street Name textbox required; only letter; 6 - 50 characters
18 Postal Code textbox required; number only; 6 digits
Bảng 3 Items của màn hình Đăng nhập (Sign-up)
1 Click on image Allow user to upload avatar
2 Click “Next” button Forward to next step
3 Click “Sign in” link Forward to SIGN-IN screen
Point to Term of Services & Privacy Policy URL
POST /api/auth/sign-up and forward to SIGN-UP SUCCESSFUL screen
Bảng 4 Actions của màn hình Đăng nhập (Sign-up)
3.2.1.3 Màn hình Quên mật khẩu
Cho phép người dùng khôi phục mật khẩu của họ khi họ đã quên mật khẩu hiện tại
Hình 6 Màn hình Quên mật khẩu
1 Email textbox required; email format
Bảng 5 Items của màn hình Forgot password (Quên mật khẩu)
1 Click “Send” button PATCH “/api/auth/send”
Bảng 6 Actions của màn hình Forgot password (Quên mật khẩu)
3.2.1.4 Màn hình Đổi mật khẩu
Cho phép người dùng thay đổi mật khẩu của tài khoản cá nhân để tăng cường bảo mật
Hình 7 Màn hình Thay đổi mật khẩu
Bảng 7 Items của màn hình Change Password (Đổi mật khẩu)
1 Click “Change password” button PATCH “/api/auth/change-password”
Bảng 8 Actions của màn hình Change Password (Đổi mật khẩu)
3.2.1.5 Màn hình Đăng công việc mới (New job posting)
Cho phép người dùng tạo ra công việc tìm người sửa chữa trong ứng dụng
Hình 8 Màn hình Đăng công việc mới
Appears depending on (default); Other required
Other textbox Display when “Other” required; only letter; 5-50
Display when “New location” required
Display when “New location” required
Display when “New location” required
Display when “New location” required
Display when “New location” required
Display when “New location” required
Any task that is within 24 hours is considered urgent required
The date/ time the owner expect HM to come required; 3 hours from the current time – 14 days; Select only in interval of 30 minutes
$500 and above Open offer required
Photo is more than 3 MB after compression, show message:
“Image file is too big
Please reduce the resolution.” required
At least 1 video or 1 photo
Limit of upload: 5 photo, 1 video
If user tries to upload 6th photo, show message:
“Only 5 photos are allowed Delete a photo before you upload.”
Video is more than 15 MB after compression, show message:
“Video file is too big
Please reduce the resolution or duration.”
If user tries to upload 2nd video, show message:
Delete the video before you upload.”
Bảng 9 Items của màn hình New job posting (Đăng công việc mới)
1 Post Click on “Post” button POST “/api/job”
2 Cancel Click on “Cancel” button Forward to HOME screen
Bảng 10 Actions của màn hình New job posting (Đăng công việc mới)
3.2.1.6 Màn hình Tạo phương thức thanh toán mới (Add Payment Method)
Cho phép người dùng thêm thông tin về thẻ tín dụng của họ vào hệ thống để thực hiện các giao dịch trực tuyến
Hình 9 Màn hình Tạo phương thức thanh toán mới
1 Card type radio button required
2 Name textbox required; only letter; 5-50
3 Card number textbox required; 16 digits 4xxx xxxx xxxx xxxx: Visa Card 5xxx xxxx xxxx xxxx: Master Card 6xxx xxxx xxxx xxxx: Discover Card
6 Expires datetime required; valid for 6 months
Bảng 11 Items của màn hình Add Payment Method (Tạo phương thức thanh toán mới)
1 Click “Save” button POST /api/payment
Bảng 12 Actions của màn hình Add Payment Method (Tạo phương thức thanh toán mới)
Q&A cùng mentor
Quá trình xây dựng bộ câu hỏi và trả lời trong kiểm thử là rất quan trọng để đảm bảo tính hoàn thiện, nhất quán và đáng tin cậy của ứng dụng Những câu hỏi và trả lời này giúp làm rõ các yêu cầu cốt lõi của hệ thống Fixel và cách thức tương tác của nó với người dùng.
Hệ điều hành và thiết bị dùng để thực thi các trường hợp kiểm thử (Execute test) 35 3.5 Thiết kế và thực thi các trường hợp kiểm thử (Testcase)
3.5 Thiết kế và thực thi các trường hợp kiểm thử (Testcase)
3.5.1 Chức năng Đăng nhập (Sign In)
Hình 12 Testcase 01-09 của chức năng Sign In
Hình 13 Testcase 10-13 của chức năng Sign In
Hình 14 Testcase 14-18 của chức năng Sign In
3.5.2 Chức năng Đăng ký (Sign Up)
Hình 15 Testcase 01-13 của chức năng Sign Up
Hình 16 Testcase 20-23 của chức năng Sign Up
Hình 17 Testcase 31-33 của chức năng Sign Up
Hình 18 Testcase 41-43 của chức năng Sign Up
Hình 19 Testcase 52-57 của chức năng Sign Up
Hình 20 Testcase 58-64 của chức năng Sign Up
Hình 21 Testcase 71-74 của chức năng Sign Up
Hình 22 Testcase 82-83 của chức năng Sign Up
Hình 23 Testcase 84-86 của chức năng Sign Up
Hình 24 Testcase 92-95 của chức năng Sign Up
Hình 25 Testcase 100-102 của chức năng Sign Up
Hình 26 Testcase 107-109 của chức năng Sign Up
Hình 27 Testcase 116-118 của chức năng Sign Up
Hình 28 Testcase 126-130 của chức năng Sign Up
Hình 29 Testcase 138-142 của chức năng Sign Up
Hình 30 Testcase 143-144 của chức năng Sign Up
Hình 31 Testcase 149-151 của chức năng Sign Up
3.5.3 Chức năng Quên mật khẩu (Forgot password)
Hình 32 Testcase 01-05 của chức năng Forgot password
Hình 33 Testcase 07-11 của chức năng Forgot password
3.5.4 Chức năng Thay đổi mật khẩu (Change password)
Hình 34 Testcase 01-05 của chức năng Change password
Hình 35 Testcase 06-07 của chức năng Change password
Hình 36 Testcase 08-16 của chức năng Change password
Hình 37 Testcase 17-19 của chức năng Change password
3.5.5 Chức năng Tạo công việc mới (Create job)
Hình 38 Testcase 01-04 của chức năng Create job
Hình 39 Testcase 05-09 của chức năng Create job
Hình 40 Testcase 10-15 của chức năng Create job
Hình 41 Testcase 25-34 của chức năng Create job
Hình 42 Testcase 35-38 của chức năng Create job
Hình 43 Testcase 39-43 của chức năng Create job
Hình 44 Testcase 57-62 của chức năng Create job
Hình 45 Testcase 63-68 của chức năng Create job
Hình 46 Testcase 79-85 của chức năng Create job
3.5.6 Chức năng Tạo Phương thức thanh toán mới (Create credit card)
Hình 47 Testcase 01-06 của chức năng Create credit card
Hình 48 Testcase 07-11 của chức năng Create credit card
Hình 49 Testcase 23-28 của chức năng Create credit card
Hình 50 Testcase 37-43 của chức năng Create credit card
Hình 51 Testcase 44-50 của chức năng Create credit card
Thống kê Testcase
3.6.1 Chức năng Đăng nhập (Sign In)
Hình 52 Thống kê Testcase chức năng Đăng nhập (Sign In)
3.6.2 Chức năng Đăng ký (Sign Up)
Hình 53 Thống kê Testcase chức năng Đăng ký (Sign Up)
3.6.3 Chức năng Quên mật khẩu (Forgot password)
Hình 54 Thống kê Testcase chức năng Quên mật khẩu (Forgot password)
3.6.4 Chức năng Thay đổi mật khẩu (Change password)
Hình 55 Thống kê Testcase chức năng Thay đổi mật khẩu (Change password)
3.6.5 Chức năng Tạo công việc mới (Create job)
Hình 56 Thống kê Testcase chức năng Tạo công việc mới (Create job)
3.6.6 Chức năng Tạo Phương thức thanh toán mới (Create credit card)
Hình 57 Thống kê Testcase chức năng Tạo Phương thức thanh toán mới (Create credit card)
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Được đào tạo về quy trình phát triển phần mềm và kiểm thử phần mềm, tôi đã áp dụng những lý thuyết đã học vào các dự án thực tế, giúp nâng cao kỹ năng và hiểu biết của mình trong lĩnh vực này.
Khả năng tự học, tự tìm tòi, nghiên cứu tài liệu được nâng cao
Rèn luyện được tính kỷ luật và thái độ làm việc có trách nhiệm
Tương tác với các thành viên trong nhóm không chỉ giúp chúng em nâng cao sự tự tin mà còn phát triển kỹ năng giao tiếp trong môi trường làm việc chuyên nghiệp Qua việc làm quen với môi trường thực tế và tiếp xúc với các chuyên gia trong lĩnh vực kiểm thử, chúng em có cơ hội học hỏi và trau dồi kiến thức quý giá từ họ.
- Kỹ năng chuyên môn trong việc thiết kế và viết test case vẫn còn nhiều thiếu sót
Với kinh nghiệm thực tế còn hạn chế so với các chuyên gia trong ngành, chúng tôi thường cảm thấy thiếu tự tin khi phải đối mặt với những rủi ro và vấn đề phức tạp.
Cần cải thiện khả năng quản lý thời gian và áp lực công việc để đảm bảo hoàn thành đúng tiến độ theo kế hoạch đã đề ra.
- Chúng em chưa có cơ hội để học và thực hành kiểm thử tự động trong môi trường thực tế
Chúng em cam kết không ngừng nghiên cứu và cập nhật kiến thức trong lĩnh vực Manual Testing để nâng cao giá trị công việc trong tương lai Đồng thời, chúng em chủ động học hỏi về kiểm thử tự động và làm quen với các công cụ như Selenium, Appium nhằm tăng cường năng suất và độ chính xác trong quy trình kiểm thử.
Tham gia tích cực vào các cộng đồng kiểm thử phần mềm giúp bạn tìm kiếm cơ hội việc làm đa dạng và nâng cao kỹ năng chuyên môn Đây là cách hiệu quả để phát triển sự nghiệp trong lĩnh vực kiểm thử phần mềm.
Nâng cao kỹ năng cần thiết và quản lý thời gian hiệu quả là yếu tố quan trọng giúp cá nhân đóng góp tích cực vào sự phát triển của dự án và tổ chức.
BẢNG PHÂN CÔNG CÔNG VIỆC
STT Họ và tên Công việc Mức độ hoàn thành
Tìm hiểu cơ sở lý thuyết về
Thiết kế và thực thi testcase chức năng Đăng nhập (Sign- in)
5 Huỳnh Thị Minh Anh Thiết kế sơ đồ trên figma 100%
Thiết kế và thực thi testcase chức năng Đăng ký (Sign-up) 100%
Thiết kế và thực thi testcase chức năng Quên mật khẩu (Forgot password)
Thiết kế và thực thi testcase chức năng Đổi mật khẩu (Change Password)
Thiết kế và thực thi testcase chức năng Đăng công việc mới (New job posting)
10 Thiết kế và thực thi testcase chức năng Tạo phương thức
100% thanh toán mới (Add Payment Method)