CHƯƠNG 1:CÁC KIẾN THỨC CƠ BẢN Trang: 7 Kiểm thử nhằm đánh giá chất lượng hoặc tính chấp nhQn được của sản phẩm. Ngoài ra, kiểm thử còn giúp phát hiện lỗi hoặc bất cứ vấn đề g= về sản phẩm. Chúng ta cần kiểm thử v= biết rằng con người luôn có thể mắc sai lầm. Điều này đặc biệt đúng trong lĩnh vực phát triển phần mềm và các hệ thống điều khiển bởi phần mềm.
Chương này sẽ giới thiệu các khái niệm trong lĩnh vực kiểm thử phần mềm. Phần mềm Phần mềm thường được mô tả bởi ba thành phần cấu thành [1]: - Tập các lệnh (chương tr=nh máy tính) trên máy tính khi thực hiện sẽ tạo ra các dịch vụ và đem lại những kết quả mong muốn cho người dùng. - Các cấu tr"c dữ liệu (lưu giữ trên các bộ nhớ) làm cho chương tr=nh thao tác hiệu quả với các thông tin thích hợp và nội dung thông tin được số hóa. - Các tài liệu để mô tả thao tác, cách sử dụng và bảo tr= phần mềm (hướng dẫn sử dụng, tài liệu kỹ thuQt, tài liệu phân tích, thiết kế, kiểm thử, v.
Kiểm thử phần mềm và một số khái niệm liên quan 2. Kiểm thử phần mềm Kiểm thử phần mềm là một cuộc kiểm tra được tiến hành để cung cấp cho các bên liên quan thông tin về chất lượng của sản phẩm hoặc dịch vụ được kiểm thử [2]. Kiểm thử có thể cung cấp cho doanh nghiệp một quan điểm, một cách nh=n độc lQp 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ỹ thuQt 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 Trang: 8 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 lQp tr=nh được hoàn tất nhưng trong Agile (là một tQp 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ư vQy, 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. M t s kh i ni m liên quan Chất lượng phần mềm (Software quality): là mức độ mà một hệ thống, thành phần hay quy tr=nh đáp ứng các yêu cầu của đặc tả phần mềm, các nhu cầu mong đợi của khách hàng hoặc người sử dụng [3]. Đảm bảo chất lượng phần mềm (Software quality assurance): là một quy tr=nh có kế hoạch và hệ thống của tất cả các hành động cần thiết để cung cấp các thông tin đầy đủ để đảm bảo các sản phẩm có phù hợp với các yêu cầu về kỹ thuQt hay không.
Mục đích cuối cùng là để đánh giá quy tr=nh sản xuất sản phẩm phần mềm [3]. Trang: 9 Xác minh, kiểm chứng (Verification): là quá tr=nh đánh giá một hệ thống hay thành phần để xác định xem các sản phẩm của một giai đoạn phát triển nhất định đáp ứng các điều kiện áp đặt tại lúc bắt đầu của giai đoạn đó [3]. Xác minh thường là hoạt động có tính kỹ thuQt cao hơn, sử dụng những tri thức về các yêu cầu, đặc tả phần mềm. Xác nhQn thường phụ thuộc vào tri thức về lĩnh vực tương ứng.
Cụ thể là, tri thức về ứng dụng của phần mềm được viết. Ví dụ, xác nhQn của phần mềm về máy bay yêu cầu tri thức từ kỹ sư hàng không và phi công. Sự cố (Incident): Khi thất bại xuất hiện, nó có thể hiển thị hoặc không, tức là rõ ràng hoặc không rõ ràng đối với người dùng hoặc người kiểm thử. Sự cố là triệu chứng liên kết với một thất bại và thể hiện cho người dùng hoặc người kiểm thử về sự xuất hiện của thất bại này [4].
Ca kiểm thử (Test case): Ca kiểm thử gồm một tQp các dữ liệu đầu vào và một xâu các giá trị đầu ra mong đợi đối với phần mềm, mục đích là dựa vào đó để kiểm tra xem phần mềm có thỏa các yêu cầu đặt ra hay không. Kịch bản kiểm thử (Test script): Một kịch bản kiểm thử là một nhóm mã lệnh dạng đặc tả kịch bản dùng để tự động hóa một quy tr=nh hay một ca kiểm tra, giúp cho việc kiểm tra nhanh hơn, hoặc cho những trường hợp mà kiểm tra bằng tay sẽ rất khó khăn hoặc không khả thi. Trang: 10 Hình 1-1: Ví dụ về 1 Kịch bản kiểm thử 3. Quy trình kiểm thử phần mềm Mục đích của kiểm thử là thiết kế một chuỗi các trường hợp kiểm thử mà có khả năng phát hiện lỗi cao.
Để cho việc kiểm thử đạt được kết quả tốt cần có sự chuẩn bị về kế hoạch kiểm thử, thiết kế các trường hợp kiểm thử và các dữ liệu kiểm thử cho các trường hợp. Đây chính là đầu vào cho giai đoạn kiểm thử. Và sản phẩm công việc của giai đoạn kiểm thử chính là “báo cáo kiểm thử” mà tài liệu hóa tất cả các trường hợp kiểm thử đã chạy, dữ liệu đầu vào, đầu ra mong đợi, đầu ra thực tế và mục đích của kiểm thử. Hình 1-2: Giai đoạn kiểm thử trong xử lý phần mềm Quy tr=nh kiểm thử bao gồm một số giai đoạn: - LQp kế hoạch kiểm thử: Bước đầu tiên là lQp kế hoạch cho tất cả các hoạt động sẽ được thực hiện và các phương pháp được sử dụng.
Các chuẩn IEEE bao gồm các thông tin về tác giả chuẩn bị kế hoạch, danh sách liệt kê của kế hoạch kiểm thử. Vấn đề quan trọng nhất đối với kế hoạch kiểm thử: Trang: 11 Mục đích: Quy định về phạm vi, phương pháp, tài nguyên và lịch biểu của các hoạt động kiểm thử. Các tài liệu tham khảo. Khái quát về xác minh và thẩm định (V&V): tổ chức, tài nguyên, trách nhiệm, các công cụ, kỹ thuQt và các phương pháp luQn.
Vòng đời của V&V: các nhiệm vụ, các dữ liệu vào và các kết quả ra trên một giai đoạn vòng đời. Báo cáo xác minh và thẩm định(V&V) phần mềm: mô tả nội dung, định dạng và thời gian cho tất cả các báo cáo V&V. Các thủ tục quản lý V&V bao gồm các chính sách, thủ tục, các chuẩn, thực nghiệm và các quy ước. - Giai đoạn bố trí nhân viên kiểm thử: Việc kiểm thử thường phải tiến hành một cách độc lQp và các nhóm độc lQp có trách nhiệm tiến hành các họat động kiểm thử, gọi là các nhóm kiểm thử.
- Thiết kế các trường hợp kiểm thử: Các trường hợp kiểm thử là các đặc tả đầu vào cho kiểm thử và đầu ra mong đợi của hệ thống cùng với các câu lệnh được kiểm thử. Các kỹ thuQt kiểm thử hộp đen để kiểm thử dựa trên chức năng. Các kỹ thuQt kiểm thử hộp trắng để kiểm thử dựa vào cấu trúc bên trong. - Xử lý đo lường kiểm thử bằng cách thu thQp dữ liệu.
- Đánh giá sản phẩm phần mềm để xác nhQn sản phẩm có thể sẵn sàng phát hành được chưa? 4. Các cấp độ kiểm thử Các mức kiểm thử phần mềm thông thường: - Unit Test – Kiểm thử mức đơn vị Trang: 12 - Integration Test – Kiểm thử tích hợp - System Test - Kiểm thử mức hệ thống - Acceptance Test - Kiểm thử chấp nhQn sản phẩm - Regression Test - Kiểm thử hồi quy 4. Kiểm thử mức đơn vị Một đơn vị kiểm thử là một thành phần phần mềm nhỏ nhất mà ta có thể kiểm thử được. Theo định nghĩa này, các hàm (Function), thủ tục (Procedure), lớp (Class), hoặc các phương thức (Method) đều có thể được xem là đơn vị kiểm thử.
V= đơn vị kiểm thử được chọn để kiểm thử thường có kích thước nhỏ và chức năng hoạt động đơn giản, chúng ta không khó khăn g= trong việc tổ chức, kiểm thử, ghi nhQn và phân tích kết quả kiểm thử. Nếu phát hiện lỗi, việc xác định nguyên nhân và khắc phục cũng tương đối dễ dàng v= chỉ khoanh vùng trong một đơn vị đang kiểm thử. Một nguyên lý đúc kết từ thực tiễn: thời gian tốn cho Kiểm thử đơn vị sẽ được đền bù bằng việc tiết kiệm rất nhiều thời gian và chi phí cho việc kiểm thử và sửa lỗi ở các mức kiểm thử sau đó. Kiểm thử đơn vị thường do lQp tr=nh viên thực hiện.
Công đoạn này cần được thực hiện càng sớm càng tốt trong giai đoạn viết code và xuyên suốt chu kỳ phát triển phần mềm. Thông thường, Kiểm thử đơn vị đòi hỏi kiểm thử viên có kiến thức về thiết kế và mã nguồn của chương tr=nh. Mục đích của Kiểm thử đơn vị là bảo đảm thông tin được xử lý và xuất ra là chính xác, trong mối tương quan với dữ liệu nhQp và chức năng của đơn vị kiểm thử. Điều này thường đòi hỏi tất cả các nhánh bên trong đơn vị kiểm thử đều phải được kiểm tra để phát hiện nhánh phát sinh lỗi.
Một nhánh thường là một chuỗi các lệnh được thực thi trong một đơn vị kiểm thử, ví dụ: chuỗi các lệnh sau điều kiện If và nằm giữa then … else là một nhánh. Thực tế việc chọn lựa các nhánh để đơn giản hóa việc kiểm thử và quét hết các đơn vị Trang: 13 kiểm thử đòi hỏi phải có kỹ thuQt, đôi khi phải dùng thuQt toán để chọn lựa. Cũng như các mức kiểm thử khác, Kiểm thử đơn vị cũng đòi hỏi phải chuẩn bị trước các ca kiểm thử hoặc kịch bản kiểm thử, trong đó chỉ định rõ dữ liệu vào, các bước thực hiện và dữ liệu mong chờ sẽ xuất ra. Các ca kiểm thử và kịch bản này nên được giữ lại để tái sử dụng.
Kiểm thử đơn vị thường sử dụng các Unit Test Framework, đó là các khung chương tr=nh được viết sẵn để hộ trợ cho việc test các mô đun, các đơn vị phần mềm. Kiểm thử tích hợp Kiểm thử tích hợp kết hợp các thành phần của một ứng dụng và kiểm thử như một ứng dụng đã hoàn thành.