CHƯƠNG 1 CƠ SỞ LÝ THUYẾT VỀ KIỂM THỬ VÀ CÁC PHƯƠNG PHÁP KIỂM THỬ 1.1 Tổng quan về kiểm thử Kiểm thử phần mềm là một cuộc kiểm tra nhằm cung cấp cho các bên liên quan (khách hàng hay nhóm phát triển phần mềm, .) thông tin về chất lượng của sản phẩm hoặc dịch vụ đang kiểm thử (under test). Kiểm thử phần mềm cũng cung cấp mục tiêu, cái nhìn độc lập về phần mềm, điều này giúp đánh giá và hiểu rõ các rủi ro liên quan khi thực thi phần mềm. Kiểm thử có thể cung cấp cho doanh nghiệp một quan điểm, một cách nhìn độc lập về phần mềm để từ đó cho phép đánh giá và thấu hiểu được những rủi ro trong quá trình triển khai phần mềm. Trong kỹ thuật kiểm thử không chỉ giới hạn ở việc thực hiện một chương trình hoặc ứng dụng với mục đích đi tìm các lỗi phần mềm (bao gồm các lỗi và các thiếu sót) mà còn là một quá trình phê chuẩn và xác minh một chương trình máy tính / ứng dụng / sản phẩm nhằm: Đáp ứng được mọi yêu cầu hướng dẫn khi thiết kế và phát triển phần mềm.
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ự. Và đáp ứng được mọi nhu cầu của các bên liên quan. Tùy thuộc vào từng phương pháp, việc kiểm thử có thể được thực hiện bất cứ lúc nào trong quá trình phát triển phần mềm.
Theo truyền thống thì các nỗ lực kiểm thử được tiến hành sau khi các yêu cầu được xác định và việc lập trình được hoàn tất nhưng trong Agile (là một tập hợp các phương pháp phát triển phần mềm linh hoạt dựa trên việc lặp đi lặp lại và gia tăng giá trị) thì việc kiểm thử được tiến hành liên tục trong suốt quá trình xây dựng phần mềm. Như vậy, mỗi một phương pháp kiểm thử bị chi phối theo một quy trình phát triển phần mềm nhất định. Kiểm thử không thể xác định hoàn toàn được tất cả các lỗi bên trong phần mềm.[2] Thay vào đó, nó so sánh trạng thái và hành vi của sản phẩm với các oracle - các nguyên tắc hay cơ chế để phát hiện vấn đề. Các oracle này có thể bao gồm (nhưng không giới hạn ở) các đặc tả phần mềm, hợp đồng, [3] sản phẩm tương đương, các phiên bản trước của cùng một sản phẩm, phù hợp với mục đích dự kiến nhằm đáp ứng sự kỳ vọng của người dùng, khách hàng, quy định của pháp luật hiện hành và các tiêu chuẩn liên quan khác.
2 Mục đích chính của kiểm thử là phát hiện ra các lỗi phần mềm để từ đó khắc phục và sửa chữa. Việc kiểm thử không thể khẳng định được rằng các chức năng của sản phẩm đúng trong mọi điều kiện, mà chỉ có thể khẳng định rằng nó không hoạt động đúng trong những điều kiện cụ thể. Phạm vi của kiểm thử phần mềm thường bao gồm việc kiểm tra mã, thực hiện các mã trong môi trường và điều kiện khác nhau, và việc kiểm thử các khía cạnh của mã: nó có làm đúng nhiệm vụ của nó hay không, và nó có làm những gì cần phải làm hay không. Trong môi trường phát triển phần mềm hiện nay, một đội kiểm thử có thể tách biệt với đội phát triển.
Các thành viên trong đội kiểm thử giữ các vai trò khác nhau. Các thông tin thu được từ kiểm thử có thể được sử dụng để điều chỉnh quá trình phát triển phần mềm. Mỗi sản phẩm phần mềm có một đối tượng phục vụ riêng. Ví dụ như đối tượng của phần mềm trò chơi điện tử là hoàn toàn khác với đối tượng của phần mềm ngân hàng.
Vì vậy, khi một tổ chức phát triển hoặc đầu tư vào một sản phẩm phần mềm, họ có thể đánh giá liệu các sản phẩm phần mềm có được chấp nhận bởi người dùng cuối, đối tượng phục vụ, người mua, hay những người giữ vai trò quan trọng khác hay không. Và việc kiểm thử phần mềm là một quá trình nỗ lực để đưa ra những đánh giá này.2 Mục đích, vai trò của kiểm thử a) Mục đích của kiểm thử phần mềm: Tìm kiếm lỗi Đảm bảo được một mức độ chất lượng Cung cấp thông tin để đưa ra quyết định Ngăn ngừa lỗi *) Bảy nguyên tắc kiểm thử: Kiểm tra sự hiện diện của lỗi Kiểm tra toàn bộ là không thể Thực hiện kiểm thử sớm Phân loại lỗi Phương pháp thuốc trừ sâu Kiểm thử phụ thuộc vào bối cảnh Sự vắng mặt của lỗi b) Tại sao phải kiểm thử phần mềm? Vai trò của kiểm thử trong phát triển phần mềm, bảo trì và vận hành: 3 Kiểm thử nghiêm ngặt hệ thống và tài liệu có thể giúp giảm thiểu những vấn đề rủi ro xảy ra trong quá trình vận hành và góp phần nâng cao chất lượng của hệ thống phần mềm, nếu như các lỗi được tìm thấy và sửa chữa trước khi hệ thống được vận hành thực tế. Kiểm thử phần mềm có được yêu cầu để đạt được tính hợp pháp và đảm bảo hợp đồng, hoặc những tiêu chuẩn trong ngành công nghiệp đặc biệt. Kiểm thử và chất lượng: Kiểm thử mang lại sự tự tin về chất lượng của phần mềm nếu nó tìm thấy một vài hoặc không tìm thấy lỗi.
Kiểm thử đúng sẽ giảm thiểu được tổng thể mức độ rủi ro của hệ thống. Khi quá trình kiểm thử tìm thấy lỗi, chất lượng của hệ thống phần mềm được nâng cao sau khi những lỗi đó được sửa chữa. Kiểm thử bao nhiêu là đủ: Việc quyết định kiểm thử bao nhiêu là đủ phụ thuộc vào mức độ của rủi ro, bao gồm kỹ thuật, độ an toàn, rủi ro trong kinh doanh, và hạn mức của dự án như là thời gian và ngân sách. Kiểm thử nên cung cấp đủ thông tin để các bên liên quan có thể quyết định về việc bàn giao phần mềm hoặc hệ thống đã qua kiểm thử, cho các bước phát triển tiếp theo hay bàn giao cho khách hàng.
c) Vai trò của Kiểm thử Kiểm thử phần mềm có nhiệm vụ chỉ ra các lỗi và sai sót hình thành trong các giai đoạn phát triển sản phẩm. Kiểm thử là điều cần thiết vì nó đảm bảo độ tin cậy của khách hàng và sự hài lòng của họ về ứng dụng. Nó rất quan trọng trong việc đảm bảo chất lượng của sản phẩm. Sản phẩm chất lượng được giao cho khách hàng giúp họ sử dụng hiệu quả hơn.
Thử nghiệm phần mềm là cần thiết để cung cấp các phần mềm chất lượng cao cho khách hàng hoặc ứng dụng phần mềm đòi hỏi chi phí bảo trì thấp hơn và do đó dẫn đến kết quả chính xác, nhất quán và đáng tin cậy hơn. Thử nghiệm là cần thiết cho một hiệu suất hiệu quả của ứng dụng phần mềm hoặc sản phẩm. 4 Điều quan trọng là đảm bảo rằng ứng dụng không dẫn đến bất kỳ lỗi nào vì nó có thể rất tốn kém trong tương lai hoặc trong các giai đoạn sau của quá trình phát triển. Nó là khâu quan trọng để đảm bảo hoạt động kinh doanh phần mềm phát triển.
Đảm bảo uy tín của chủ sở hữu sản phẩm đối với khách hàng. Hình 1-1 Vai trò của Kiểm thử viên (Tester) d) Vai trò, nhiệm của Kiểm thử viên (Tester) trong một dự án phần mềm: Hiểu được các yêu cầu của dự án. Chuẩn bị/Cập nhật tài liệu trường hợp thử nghiệm để thử nghiệm các ứng dụng từ tất cả các khía cạnh. Chuẩn bị các thiết lập thử nghiệm.
(Môi trường test, thiết bị test, dữ liệu test .) Triển khai xây dựng trong các thiết lập cần thiết. (Cơ sỏ dữ liệu, phần mèm điều kiện tiền đề) Xây dựng các trường hơp kiểm tra và thực hiện các trường hợp thử nghiệm. Cập nhật các tài liệu kết quả thử nghiệm. Tham dự các cuộc meeting của khách hàng thường xuyên.
Log các defect lên công cụ theo dõi bug (Bug tracking tool/bug report). Kiểm tra các defect. Thảo luận nghi ngờ/truy vấn với đội phát triển/Client. 5 Tiến hành đào tạo nội bộ trên các sản phẩm khác nhau.3 Quy trình kiểm thử phần mềm cơ bản a) Quy trình kiểm thử phần mềm cơ bản: Hình 1-2 Quy trình Kiểm thử phần mềm Các bước thực hiện quy trình kiểm thử phần mềm 1.
Lập kế hoạch và kiểm soát việc kiểm thử 2. Phân tích và Thiết kế 3. Thực thi viết Testcase và Chạy test 4. Đánh giá và Báo cáo 5.
Đóng hoạt động (Closed) kiểm thử Lập kế hoạch và kiểm soát việc kiểm thử Test Manager hoặc Test Leader sẽ xây dựng kế hoạch ban đầu về kiểm thử. o Định nghĩa phạm vi kiểm thử o Định nghĩa các chiến lược kiểm thử o Nhận dạng các rủi ro và yếu tố bất ngờ o Nhận dạng các hoạt động kiểm thử và xây dựng lịch kiểm thử 6 o Nhận dạng môi trường kiểm thử o Kế hoạch kiểm thử cần được: Xem lại bởi QC team, Developer, Business Analysis, PM và Customer o Chấp thuận bởi: Project Manager và Customer Phân tích và thiết kế 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) o 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. o Các testcase cần bao phủ tất cả yêu cầu trong chiến lược kiểm thử. o 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: o 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. o Chấp thuận bởi Test Leader hoặc Customer o 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ó. Thực thi viết Testcase và Chạy Test 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?