Các giai đoạn kiểm thử phần mềm giúp phần mềm được kiểm tra một cách kỹ lưỡng từ trong ra ngoài, từ đó thỏa mãn nhu cầu của khách hàng và người sử dụng. Hiểu rõ về từng giai đoạn kiểm thử phần mềm là cần thiết đối với mỗi tester.
Giai đoạn 1: Unit Testing – kiểm thử mức đơn vị
Unit là một thành phần phần mềm nhỏ nhất mà tester có thể kiểm tra được. Thành phần này bao gồm các phương thức (method), lớp (class), hàm (function) và thủ tục (procedure). Unit Testing được thực hiện để biết được từng module riêng lẻ của mã nguồn hoạt động chính xác không.
Kiểm thử mức đơn vị là một kiểu kiểm thử hộp trắng để chắc chắn rằng mỗi đơn vị phần mềm được thực hiện như thiết kế. Tester có thể bắt kịp lỗi do thay đổi nếu kiểm tra đơn vị được viết tốt và nếu nó được chạy mỗi khi mã thay đổi.
Các kỹ thuật bao phủ code được sử dụng khi kiểm thử đơn vị bao gồm: Condition Coverage, Statement Coverage, Branch Coverage, Decision Coverage và Finite State Machine Coverage. Thông thường, quy trình kiểm thử đơn vị như sau:
-
Tạo các test cases
-
Rework/review
-
Baseline
-
Thực hiện các test cases
Ưu điểm
-
Giúp các lập trình viên hiểu được cơ bản về Unit API khi muốn tìm hiểu về từng chức năng được cung cấp bởi đơn vị và cách sử dụng chức năng đó.
-
Unit Testing cho phép lập trình viên có thể cấu trúc lại code nhanh chóng, đảm bảo mô-đun vẫn hoạt động bình thường, chính xác.
-
Unit Testing có tính chất mô-đun, cho phép kiểm thử các phần của dự án mà không cần chờ người khác hoàn thiện.
-
Về chi phí, phát hiện và sửa lỗi ở giai đoạn Unit Testing sẽ ít hơn so với lỗi phát hiện ở những giai đoạn sau.
Nhược điểm
-
Unit Testing không thể bắt lỗi hệ thống, lỗi tích hợp bởi vì bản chất của nó là tập trung vào một đơn vị code.
-
Giai đoạn Unit Testing không thể phát hiện hết các lỗi trong một chương trình, cũng khó có thể đánh giá mọi luồng thực hiện ngay cả trong chương trình đơn giản nhất.
Giai đoạn 2: Integration Testing – kiểm thử tích hợp
Integration Testing - kiểm thử tích hợp là giai đoạn thứ 2 trong các giai đoạn kiểm thử phần mềm. Kiểm thử tích hợp rất quan trọng, nó góp phần đảm bảo chất lượng sản phẩm, đồng thời giúp cho hệ thống vận hành theo ý muốn của người dùng.
Kiểm thử tích hợp là việc kiểm tra một nhóm module nhỏ có liên quan với nhau xem chúng hoạt động theo đúng chức năng như thiết kế hay không. Giai đoạn này giúp phát hiện lỗi khi tương tác giữa các thành phần, hệ thống tích hợp và cả lỗi về giao diện.
Kiểm thử tích hợp hệ thống là kiểm tra sự tương tác giữa các hệ thống con đã pass ở những lần kiểm thử trước. Trong khi đó, kiểm thử tích hợp thành phần là kiểm tra sự tương tác giữa các thành phần đã pass ở những lần kiểm thử trước.
Khi thực hiện kiểm thử tích hợp, kiểm thử viên cần có tài liệu chi tiết, phù hợp để biết được sự tương tác giữa các đơn vị. Hãy chắc chắn rằng, hệ thống quản lý cấu hình phần mềm của bạn mạnh mẽ. Đặc biệt, cần thực hiện kiểm thử đơn vị trước khi bắt đầu kiểm thử tích hợp.
Người thực hiện Integration Testing có thể là một developer, tester, test team chuyên biệt. Một số phương pháp kiểm thử tích hợp được sử dụng: Big Bang, Top-down, Bottom-up và Sandwich.
Ưu nhược điểm
Phương pháp
|
Ưu điểm
|
Nhược điểm
|
Big Bang
|
- Phù hợp với hệ thống nhỏ
|
- Khó khăn để phát hiện bug
- Có thể bỏ qua một số giao diện liên kết
- Nhóm kiểm thử có ít thời gian thực hiện
|
Top-down
|
- Dễ dàng tìm lỗi
- Có thể thực hiện kiểm thử tích hợp từ trên xuống khá sớm
- Ưu tiên kiểm thử module quan trọng
- Phát hiện và sửa chữa lỗi thiết kế quan trọng trước tiên
|
- Cần nhiều stub
- Không kiểm thử được hết các module ở mức thấp hơn
|
Bottom-up
|
- Dễ dàng phát hiện lỗi
- Các module được xây dựng khác phương pháp Big Bang
|
- Thực hiện kiểm thử tích hợp Bottom-up sớm là không thể
- Có nhiều luồng điều khiển kiểm thử lần cuối các module quan trọng, cho nên dễ bị sót lỗi
|
Sandwich
|
- Dễ dàng tìm ra lỗi
- Kiểm thử tích hợp sớm
- Có thể kiểm tra song song lớp dưới và trên cùng
|
- Trước khi tích hợp không kiểm tra mở rộng các hệ thống con
|
Giai đoạn 3: System Testing – kiểm thử mức hệ thống
Đây là giai đoạn tiến hành kiểm tra lại toàn bộ hệ thống sau khi tích hợp. Thực chất, đây là loại kiểm thử sự tương tác tổng thể giữa các thành phần, liên quan đến tải, độ tin cậy, hiệu suất, kiểm tra bảo mật. Kiểm thử mức hệ thống thuộc loại kiểm thử hộp đen.
Trong các giai đoạn kiểm thử phần mềm, System Testing là giai đoạn vô cùng quan trọng, góp phần tạo nên một sản phẩm thực sự chất lượng. Kiểm thử hệ thống chú trọng vào các chức năng của cả một hệ thống.
Các loại kiểm thử được sử dụng trong giai đoạn này gồm: kiểm thử cài đặt, kiểm thử chức năng, kiểm thử khả năng sử dụng, kiểm thử khả năng chịu tải, kiểm thử hồi quy, kiểm tra bảo mật, kiểm thử di chuyển, kiểm thử khả năng tương tác và kiểm thử khả năng phục hồi.
Kiểm thử mức hệ thống gồm các bước: Lên kế hoạch test => phân tích & thiết kế => thực hiện test và chạy test (chuẩn bị data test, chạy case, so sánh kết quả) => đánh giá kết quả thực thi, báo cáo kết quả test => đóng hoạt động kiểm thử.
Ưu điểm
-
Dễ dàng tự động hóa, không cần truy cập mã nguồn
-
Tester có kỹ năng vừa phải có thể kiểm tra ứng dụng mà không cần kiến thức về hệ điều hành hay ngôn ngữ lập trình
-
Khi số lượng các dòng lệnh của hệ thống lớn, System Testing rất phù hợp và hiệu quả
-
Có sự đánh giá khách quan, phân biệt rõ ràng quan điểm của nhà phát triển và người dùng
Nhược điểm
-
Các dữ liệu thực tế không được sử dụng trong kiểm thử hệ thống
Giai đoạn 4: Acceptance Testing – Kiểm thử chấp nhận
Kiểm thử chấp nhận là bước cuối cùng trong các giai đoạn kiểm thử phần mềm nhằm xác định hệ thống có đạt yêu cầu kỹ thuật hay không. Tức là, sau khi sản phẩm được kiểm tra kỹ lưỡng sẽ tiến hành kiểm thử chấp nhận.
Phân tích giá trị biên, phân vùng tương đương và sử dụng bảng quyết định là một số kỹ thuật được sử dụng trong kiểm thử chấp nhận. Kiểm thử chấp nhận được thực hiện bởi người dùng cuối để kiểm tra xem hệ thống được xây dựng phù hợp với yêu cầu và họ có chấp nhận sản phẩm hay không.
Các bước thực hiện kiểm thử chấp nhận gồm: phân tích yêu cầu nghiệp vụ của phần mềm => lên kế hoạch kiểm thử chấp nhận => xác định các kịch bản kiểm thử => tác các trường hợp kiểm thử chấp nhận => chuẩn bị data test => thực hiện kiểm thử => xác định kết quả => xác nhận chức năng của sản phẩm.
Các giai đoạn kiểm thử phần mềm sẽ mang lại sự nhất quán trong cách làm việc của cả nhóm. Hơn hết, kiểm thử phần mềm theo từng giai đoạn giúp các tester sắp xếp công việc hợp lý, đơn giản hóa, theo dõi mọi hoạt động, cải thiện chất lượng sản phẩm để có được kết quả như mong đợi.
Khóa học Tester của NIIT: Khóa học Kiểm thử phần mềm (Tester)
Đọc thêm: