Quy trình và kế hoạch kiểm thử phần mềm

Có lẽ chủ đề này đã khá phổ biến với tất cả mọi người trong lĩnh vực kiểm thử phần mềm. Nhưng để hiểu rõ chi tiết cụ thể từng giai đoạn thì có khi không phải ai cũng biết hết và trình bày hết ra được. Nên mình quyết định viết bài chia sẻ này mong phần nào giúp được cho mọi người tham khảo.

1. Giới thiệu

1.1 Quy trình kiểm thử phần mềm là gì?

  • Chế độ kiểm thử được định nghĩa bởi tổ chức phát triển phần mềm là gì.
  • Cần có chiến lược kiểm thử và nó sẽ lý giải tại sao tổ chức phần mềm kiểm thử các thành phần mà mình tạo ra.
  • Cần nhận dạng cái gì là quan trọng đối với tổ chức (chi phí, chất lượng, thời gian, phạm vi...) và cách nào, bởi ai và khi nào việc kiểm thử sẽ được thực hiện.
  • Tất cả các thông tin trên sẽ được lập thành tài liệu cho hoạt động kiểm thử và ta có thể gọi quy trình tạo lập tài liệu này là quy trình kiểm thử phần mềm (Test Process)

1.2 Tại sao cần phải thực hiện quy trình kiểm thử phần mềm?

  • Cần làm rõ vai trò và trách nhiệm của việc kiểm thử phần mềm.
  • Cần làm rõ các công đoạn, các bước kiểm thử.
  • Cần phải hiểu và phân biệt các tính chất kiểm thử (tại sao phải kiểm thử), các bước kiểm thử (khi nào kiểm thử) và các kĩ thuật kiểm thử (kiểm thử bằng cách nào).

1.3 Chúng ta cần phải kiểm thử phần mềm khi nào?

Mô hình phát triển và kiểm thử phần mềm hình chữ V

Các tính chất cần ghi nhận trên mô hình chữ V:

  • Các hoạt động hiện thực và các hoạt động kiểm thử được tách biệt nhưng độ quan trọng là như nhau.
  • Chữ V minh họa các khía cạnh của hoạt động Verification và Validation.
  • Cần phân biệt giữa các mức độ kiểm thử ở đó mỗi mức kiểm thử là kiểm thử trên mức phát triển phần mềm tương ứng. Mô hình phát triển tăng tiến tương tác:
  • Quy trình thiết lập các yêu cầu phần mềm, thiết kế, xây dựng, kiểm thử hệ thống phần mềm được thực hiện như một chuỗi các chu kì phát triển ngắn hơn.
  • Hệ thống có được từ một bước lặp được kiểm thử ở nhiều cấp trong việc phát triển hệ thống đó.
  • Kiểm thử hồi quy có độ quan trọng tăng dần theo các bước lặp (không cần trong bước đầu tiên).
  • Thanh kiểm tra và kiểm định có thể được thực hiện theo kiểu tăng dần trên từng bước lặp. Các tính chất của quy trình kiểm thử tốt:
  • Cần có 1 mức độ kiểm thử cho mỗi công đoạn phát triển phần mềm.
  • Các mục tiêu kiểm thử sẽ bị thay đổi, mỗi mức kiểm thử nên có các mục tiêu đặc thù của mình.
  • Việc phân tích và thiết kế testcase cho một mức độ kiểm thử nên bắt đầu sớm nhất có thể.
  • Các tester nên xem xét các tài liệu sớm có thể, ngay sau khi các tài liệu này được tạo ra trong chu kì phát triển phần mềm.
  • Số lượng và cường độ của các mức kiểm thử được điều khiển theo các yêu cầu đặc thù của project phần mềm đó.

1.4 Ai liên quan đến việc kiểm thử phần mềm?

2. Quy trình kiểm thử tổng quát

Xây dựng kế hoạch kiểm thử

Test Manager hoặc Test Leader sẽ xây dựng kế hoạch ban đầu về kiểm thử.

  • Định nghĩa phạm vi kiểm thử
  • Định nghĩa các chiến lược kiểm thử
  • Nhận dạng các rủi ro và yếu tố bất ngờ
  • Nhận dạng các hoạt động kiểm thử và xây dựng lịch kiểm thử
  • Nhận dạng môi trường kiểm thử
  • .... Kế hoạch kiểm thử cần được:
  • Xem lại bởi QC team, Developer, Business Analysis. TA (nếu cần), PM và Customer
  • Chấp thuận bởi: Project Manager và Customer
  • Hiểu chỉnh trong suốt chu kỳ kiểm thử để phản ánh các thay đổi nếu cần thiết

Phân tích và thiết kế kiểm thử

Test Analysis hoặc test Designer sẽ thiết kế (định nghĩa) các testcase từ các yêu cầu liên quan (ví dụ từ thông tin trong usecase)

  • Thiết kế (định nghĩa) các testcase từ các yêu cầu chức năng và yêu cầu không chức năng của phần mềm.
  • Các testcase cần bao phủ tất cả yêu cầu trong chiến lược kiểm thử.
  • Nếu cần kiểm thử tự động, Test Designer sẽ xây dựng các kịch bản dựa trên các testcase/test procedures. Các testcase cần được:
  • Xem xét lại bởi Project Leader, Developer có liên quan, các Tester khác, Test Leader, Business Analysis và Customer.
  • Chấp thuận bởi Test Leader hoặc Customer
  • Hiệu chỉnh/cập nhật nếu Tester đã tìm được những lỗi mà không nằm trong testcase hiện có.

Thi hành kiểm thử

Tester sẽ được bố trí công việc bởi Test Leader để thi hành kiểm thử.

  • Thi hành kiểm thử theo tưng testcase
  • Thực hiện kiểm thử đặc biệt
  • Thực hiện kịch bản kiểm thử mà không được định nghĩa trong testcase
  • Kiểm thử lại các lỗi đã được sửa
  • Tester sẽ tạo các báo cáo về lỗi trong suốt quá trình kiểm thử lỗi và theo dõi chúng cho đến khi chúng đã được xử lý.
  • Ở công đoạn kiểm thử độ chấp thuận, Customer sẽ thi hành kiểm thử để kiểm định xem hệ thống phần mềm có thỏa mãn các nhu cầu người dùng không?

Test Report và Evaluation

Test Manager hoặc Test Leaser sẽ phân tích các lỗi trong hệ thống theo dõi các lỗi

  • Tạo các báo cáo lỗi
  • Đánh giá các kết quả kiểm thử, thống kê các yêu cầu thay đổi
  • Tính và phân phối các thông tin đo lường hoạt động kiểm thử
  • Tạo bảng tổng kết đánh giá hoạt động kiểm lỗi
  • Xác định xem đã đạt tiêu chí thành công và hoàn thành kiểm thử chưa.

3. Kế hoạch kiểm thử

3.1 Định nghĩa

Kế hoạch kiểm thử thường được để trong 1 file và chứa các kết quả của các hoạt động sau:

  • Nhận dạng các chiến lược được dùng để kiểm tra và đảm bảo rằng sản phẩm thỏa mãn đặc tả thiết kế phần mềm và các yêu cầu khác về phần mềm.
  • Định nghĩa các mục tiêu và phạm vi của nỗ lực kiểm thử
  • Nhận dạng phương pháp luận mà đội kiểm thử sẽ dùng để thực hiện công việc kiểm thử.
  • Nhận dạng phần cứng, phần mềm và các tiện ích cần cho kiểm thử
  • Nhận dạng các tính chất và các chức năng sẽ được kiểm thử
  • Xác định các hệ số rủi ro gây nguy hại cho việc kiểm thử
  • Lập lịch kiểm thử và phân phối công việc cho mỗi thành viên tham gia.
  • ... Test Manager hoặc Test Leader sẽ xây dựng kế hoạch kiểm thử.

3.2 Nhu cầu cần phải có kế hoạch kiểm thử

Kế hoạch kiểm thử cần phải được xây dựng sớm như có thể có trong mỗi chu kì phát triển phần mềm để:

  • Tập hợp và tổ chức các thông tin kiểm thử cần thiết
  • Cung cấp thông tin về quy trình kiểm thử sẽ xảy ra trong tổ chức kiểm thử
  • Cho mỗi thành viên trong đội kiểm thử có hướng đi đúng
  • Gán các trách nhiệm rõ ràng cụ thể cho mỗi thành viên đội kiểm thử
  • Có lịch biểu làm việc rõ ràng và các thành viên có thể làm việc với nhau tốt

3.3 Kế hoạch kiểm thử

Cần chứa các thông tin sau:

  • Phạm vi/mục tiêu kiểm thử
  • Các chiến lược được dùng
  • Các tài nguyên phần cứng và phần mềm phục vụ kiểm thử
  • Các nhu cầu về nhân viên và huấn luyện nhân viên
  • Các tính chất cần được kiểm thử
  • Các rủi ro và sự cố bất ngờ
  • Lịch kiểm thử cụ thể
  • Các kênh thông tin liên lạc
  • Cấu hình cho từng phần tử như kế hoạch kiểm thử, testcase, thủ tục kiểm thử...
  • Môi trường kiểm thử
  • Tiêu chí đầu vào và tiêu chí dừng kiểm thử
  • Các kết quả phân phối

3.4 Quy trình xây dựng kế hoạch kiểm thử

Ghi chú quan trọng: Sau khi xây dựng xong kế hoạch kiểm thử, ta có thể thay đổi nó nhưng phải tuân thủ quy trình yêu cầu thay đổi.

3.5 Các hoạt động chính trong việc xây dựng kế hoạch kiểm thử

  • Định nghĩa mục đích, phạm vi, chiến lược, cách tiếp cận, các điều kiện chuyển, các rủi ro, kế hoạch giảm nhẹ và tiêu chí chấp thuận
  • Định nghĩa cách thức thiết lập môi trường và các tài nguyên được dùng cho việc kiểm thử
  • Thiết lập cơ chế theo dõi lỗi phát hiện
  • Chuẩn bị ma trận theo dõi bao phủ mọi yêu cầu phần mềm
  • Báo cáo trạng thái kiểm thử
  • Phát hành leo thang

4. Các thành phần chính trong kế hoạch kiểm thử

4.1 Mục đích và phạm vi kiểm thử

  • Đặc tả mục đích của tài liệu về kế hoạch kiểm thử
  • Cung cấp vắn tắt về phạm vi mà project được hỗ trợ như platform, loại database, hay danh sách vắn tắt về các loại project con trong project kiểm thử

4.2 Cách tiếp cận và các chiến lược được dùng

  • Đắc tả về phương pháp luận kiểm thử sẽ được dùng để thực hiện kiểm thử
  • Ví dụ: Tổng quan về Testing Process Approach cho Project ABC

Đề cập các cấp độ kiểm thử cần thực hiện Các kỹ thuật được dùng cho mỗi kiểu kiểm thử trong project:

  • Kiểm thử tích hợp (Integration Testing)
  • Kiểm thử hệ thống (System Testing)
  • Kiểm thử độ chấp thuận (Acceptant Testing)
  • Kiểm thử chức năng của người dùng (Functionality Testing)
  • Kiểm thử hồi quy (Regresstion Testing)
  • Kiểm thử việc phục hồi sau lỗi (Failover and Recovery Testing)
  • Kiểm thử việc kiểm soát an ninh và truy xuất (Security and Access Control Testing)
  • Kiểm thử việc cấu hình và cài đặt (Configuration and Installation Testing)
  • Kiểm thử đặc biệt
  • Kiểm thử hiệu xuất (Performance Testing)

4.3 Các tính chất cần được kiểm thử

Danh sách các tính chất của phần mềm cần được kiểm thử, đây là catalog chưa tất cả các testcase (bao gồm chỉ số testcase, tiêu đề testcase) cũng như tất cả các trạng thái cơ bản.

4.4 Các tính chất không cần được kiểm thử

Danh sách các vùng phần mềm được loại trừ khỏi kiểm thử, cũng như các testcase đã được định nghĩa nhưng không cần kiểm thử.

4.5 Rủi ro và các sự cố bất ngờ

  • Danh sách tất cả rủi ro có thể xảy ra trong chu kì kiểm thử
  • Phương pháp mà ta cần thực hiện để tối thiểu hóa hay sống chung với rủi ro.

4.6 Tiêu chí đình chỉ và phục hồi kiểm thử

  • Tiêu chí đình chỉ kiểm thử là các điều kiện mà nếu thỏa mãn thì kiểm thử sẽ dừng lại
  • Tiêu chí phục hồi là những điều kiện được đòi hỏi để tiếp tục việc kiểm thử đã được ngừng trước đó.

4.7 Môi trường kiểm thử

Đặc tả đầy đủ về các môi trường kiểm thử, bao gồm đặc tả phần cứng, phần mềm, mạng, database, hệ điều hành và các thuộc tính môi trường khác ảnh hưởng đến kiểm thử.

4.8 Lịch kiểm thử

Lịch kiểm thử ở dạng ước lượng, nên chứa các thông tin: các cột mốc với ngày xác định + Kết quả phân phối của từng cột mốc

4.9 Tiêu chí dừng kiểm thử và chấp nhận

Bất kỳ chuẩn chât lượng mong muốn nào mà phần mềm phải thỏa mãn cho việc phân phối đến khách hàng. Có thể bao gồm các thứ sau:

  • Các yêu cầu mà phần mềm phải được kiểm thử dưới các môi trường xác định
  • Số lỗi tối thiểu ở các cấp an ninh và ưu tiên khác nhau, số phủ kiểm thử tối thiểu
  • Ký kết và đồng thuận của các bên liên quan

4.10 Nhân sự

Vai trò và trách nhiệm từng người :

  • Danh sách các vai trò xác định của các thành viên đội kiểm thử trong hoạt ₫ộng kiểm thử.
  • Các trách nhiệm của từng vai trò.
  • Công tác huấn luyện.
  • Danh sách các huấn luyện cần thiết cho các QC

4.11 Các tiện ích phục vụ kiểm thử

  • Danh sách tất cả các tiện ích cần dùng trong suốt chu kỳ kiểm thử.
  • Với project kiểm thử tự ₫ộng, các tiện ích cần ₫ược liệt kê với chỉ số version cùng thông tin license.

4.12 Các kết quả phân phối

Danh sách tất cả tài liệu hay artifacts dự ₫ịnh phân phối nội bộ sau khi mỗi cột mốc kết thúc hay sau khi project kết thúc.

5. Một số điểm chính cần nhớ

  • Mục đích và phạm vi kiểm thử
  • Cách tiếp cận và các chiến lược kiểm thử được dùng.
  • Các tính chất cần được kiểm thử/ không cần kiểm thử
  • Lịch kiểm thử
  • Nhân sự
  • Môi trường kiểm thử
  • Tạm dừng/Tiếp tục kiểm thử
  • Kiểm thử ₫ộ chấp thuận
  • Các tiện ích kiểm thử cần dùng
  • Rủi ro và yếu tố bất ngờ
  • Các kết quả phân phối nội bộ

6. Kết chương

Bài viết này ₫ã giới thiệu 1 số vấn đề cơ bản liên quan ₫ến quy trình kiểm thử phần mềm như qui trình kiểm thử là gì, tạo sao phải kiểm thử phần mềm, khi nào kiểm thử, ai có liên quan đến việc kiểm thử, quy trình kiểm thử gồm các bước chi tiết nào? Chúng ta cũng ₫ã trình bày các nội dung trong bản kế hoạch kiểm thử phần mềm như mục đích & phạm vi kiểm thử, cách tiếp cận và các chiến lược kiểm thử được dùng, các tính chất cần được kiểm thử/ không cần kiểm thử, lịch kiểm thử, nhân sự, môi trường kiểm thử, khi nào tạm dừng/tiếp tục kiểm thử, kiểm thử độ chấp thuận, các tiện ích kiểm thử cần dùng, rủi ro và yếu tố bất ngờ, các kết quả phân phối nội bộ...