Chương 1. Tổng quan về KTPM. Tổng quan về kiểm thử ứng dụng web. Giới thiệu hệ thống website kinh doanh rượu của công ty Thiên Long, trình bày usecase, kế hoạch thực hiện kiểm thử đối với hệ thống - Chương4: thực nghiệm trên hệ thống website bán rượu cho công ty TNHH Thiên Long.
Phần này viết testcase cho hệ thống. TỔNG QUAN VỀ KTPM 1. Vai trò và mục tiêucủa kiểm thử 1. Vai trò Có thể nói testing là khâu sống còn của việc phát triển phần mềm, nóquyết định khá nhiều vào sự thành công chung của dự án.
Nó giúp kiểm định phần mềm, tìm ra lỗi, ghi nhận các thông tin về lỗi, đảm bảo rằng PM “đủ tốt” với độ rủi ro “thấp nhất” trước khi giao cho khách hàng, Vậy tại sao cần KTPM. Có 4 lí do chính nói về tầm quan trọng của kiểm thử PM: - KTPM là yếu tố quyết định chất lượng PM và khâu điển hình của rà soát đặc tả thiết kế. - Muốn nhìn thấy PM như một phần tử của hệ thống hoạt động và hạn chế chi phí phải trả cho các thất bại do lỗi gây ra sau này. - Phát hiện ra lỗi trong chương trình(nếu có) với chi phí thấp nhất.
- Chứng minh PM hoạt động theo đúng thiết kế,PM được viết đúng và đáp ứng được yêu cầu của người dùng. Mục tiêu - Tìm lỗi và ngăn chặn lỗi. - Đảm bảo PM đáp ứng đúng yêu cầu đề ra. - KTPM giúp chúng ta biết rằng PM đang được thử nghiệm thành công.
- KTPM giúp xác nhận được rằng PM đủ điều kiện đến tay người sử dụng. - KTPM để đảm bảo chất lượng phần mềm. - Mục tiêu chính của KTPM là cung cấp và duy trì một sản phẩm chất lượng cho khách hàng. Một số định nghĩa về KTPM KTPM có nhiều định nghĩa khác nhau - Theo Myer(1979): “kiểm thử là quá trình thực thi một chương trình với mục đích tìm ra lỗi”.[1] - Theo Daniel Galin: "KTPM là một quá trình được tiến hành bởi một nhóm chuyên viên kiểm thử, trong đó một đơn vị phần mềm, một nhóm các đơn vị được tích hợp, hoặc cả gói PM được kiểm tra bằng các chạy các chương trình trên máy tính.
Tất cả các bước kiểm tra liên được tiến hành theo các thủ tục kiểm thử và các trường hợp kiểm thử đã được thông qua". - Hai định nghĩa của IEEE (1990): Định nghĩa 1: Kiểm thử phần mềm là quá trình vận hành một hệ thống hoặc một thành phần của hệ thống với các điều kiện xác định, nhận xét và ghi lại các kết quả, tạo ra đánh giá về những khía cạnh của hệ thống hay thành phần hệ thống. Định nghĩa 2: Kiểm thử phần mềm là quá trình phân tích các yếu tố phần mềm để phát hiện những khác biệt giữa chương trình với các điều kiện yêu cầu và đánh giá các đặc điểm của các yếu tố phần mềm. Theo như định nghĩa 2, việc chạy chương trình như một phần của tiến trình kiểm thử phần mềm là không cần thiết.[10] - “KTPM là quá trình khảo sát một hệ thống hay thành phần dưới những điều kiện xác định, quan sát và ghi lại các kết quả, và đánh giá một khía cạnh nào đó của một hệ thống hay thành phần đó”[2] - KTPM là hoạt động khảo sát thực tiễn sản phẩm hay dịch vụ PM trong đúng môi trường chúng dự định sẽ được triển khai nhằm cung cấp cho người có lợi ích liên quan những thông tin về chất lượng của sản phẩm hay dịch vụ 6 PM ấy.
Mục đích của KTPM là tìm ra các lỗi hay khiếm khuyết PM nhằm đảm bảo hiệu quả hoạt động tối ưu của PM trong nhiều ngành khác nhau[3] Có thể định nghĩa một cách dễ hiểu như sau: KTPM là một tiến trình hay một tập hợp các tiến trình được thiết kế để đảm bảo mã hóa máy tính thực hiện theo cái mà chúng đã được thiết kế để làm, và không thực hiện bất cứ thứ gì không mong muốn. Đây là một pha quan trọng trong quá trình phát triển hệ thống, giúp cho người xây dựng hệ thống và khách hàng thấy được hệ thống mới đã đáp ứng yêu cầu đặt ra hay chưa? 1. Nguyên tắc trong KTPM - Sự sai lầm về việc không có lỗi: không sửa lỗi triệt để mà tránh né lỗi bằng cách sửa chức năng này thành chức năng khác không dùng được và không đáp ứng yêu cầu thiết kế, hoặc sửa lỗitạm bợ để chương trình không có lỗi khi bàn giao cho khách hàng nhưng khi sử dụng một thời gian thì gây ra lỗi thì cũng như là thất bại mặc dù đã kiểm tra xong. - Kiểm thử theo các ngữ cảnh khác nhau và độc lập nhau: việc kiểm thử phụ thuộc vào ngữ cảnh và thực hiện kiểm tra với nhiều ngữ cảnh khác nhau.
Ví dụ: kiểm thử cho một phép toán bậc một với một ẩn như ax+b=0(với a, b là hằng số) thì chỉ cần xét các trường hợp của x; phép toán với 2 ẩn x và y như ax+by=0 thì phải xét đồng thời các trường hợp của cả x và y; với phương trình axn = b thì cần chú ý đến số mũ n, nếu n là bậc 2 cần chú ý đến căn bậc 2,… - Nghịch lí thuốc trừ sâu: cũng như nghệ thuật hay y học càng ngày càng phong phú, càng ngày càng có ý tưởng mới thì việc kiểm thử cũng vậy. Chắc bạn cũng biết thuốc trừ sâu với sâu bọ nếu ko cải tiến, thay đổi thành phần thì sâu bọ lâu ngày sẽ nhờn thuốc và không chết nữa nên với việc kiểm thử cũng vậy, ta phải thường xuyên làm phong phú bộ testcase, thực hiện với nhiều app và PM khác nhau. 7 - Sự tập trung của lỗi: tập trung một cách cân đối vào mật độ dự kiến lỗi và lỗi phát hiện sau khi kiểm thử các module. Quá chú trọng vào một hay một vài lỗi chức năng nào đó thường gây ra thiếu sót vì thời gian release là có hạn dành nhiều thời gian cho module này sẽ khó tránh khỏi việc không kiểm thử full case cho các module khác.
Nhưng nếu bug ở module này thì chức năng tương tự hoặc liên quan ở module khác cũng sẽ vướng bug tương ứng. - Kiểm thử sớm: để phát hiện lỗi sớm nhất có thể thì nên kiểm thử ngay từ giai đoạn đầu của dự án. Kiểm thử sớm giúp tiết kiệm thời gian và kinh phí do phát hiện sớm được những rủi ro ngay từ giai đoạn đầu. - Kiểm thử đầy đủ là không thể: kiểm thử tất cả các trường hợp là một điều không thể vì còn phụ thuộc vào yếu tố thời gian và kinh phí.
Vì vậy việc phân tích các rủi ro và đưa ra mức độ ưu tiên để kiểm tra các trường hợp cần thiết nhất, có khả năng gây ra lỗi nghiêm trọng nhất trước rồi sau đó, tùy thuộc vào tiến trình của dự án mà kiểm tra các trường hợp còn lại theo mức độ ưu tiên thấp hơn. - Kiểm thử đưa ra lỗi: kiểm thử có thể cho thấy rằng PM đang có lỗi, nhưng không thể chứng minh rằng PM không có lỗi. kiểm thử làm giảm xác suất lỗi chưa tìm thấy vẫn còn trong phần mềm, thậm chí là không còn lỗi nào, nó không phải là bằng chứng của sự chính xác. Quy trình kiểm thử phần mềm Tùy vào từng tổ chức, hệ thống, ngữ cảnh, mức độ rủi ro của PM mà quy trình KTPM có thể gồm nhiều bước khác nhau.
Nhưng nhìn chung mọi quy trình kiểm thử đều có những bước cơ bản như quy trình dưới đây: 8 Sơ đồ 1.1: Quy trình KTPM Bước 1: Lập kế hoạch Chỉ định và mô tả các loại kiểm tra sẽ được triển khai và thực hiện. Kết quả của bước lập kế hoạch là bản tài liệu kế hoạch kiểm tra phần mềm, bao gồm nhiều chi tiết từ các loại kiểm tra, chiến lược kiểm tra, cho đến thời gian và phân định lực lượng kiểm tra viên. Bước 2: Thiết kế TestCase Chỉ định các Test Case và các bước kiểm tra chi tiết cho mỗi phiên bản phần mềm. Giai đoạn thiết kế test là hết sức quan trọng, nó bảo đảm tất cả các tình huống kiểm tra “quét” hết tất cả yêu cầu cần kiểm tra.
Bước 3: Phát triển Test Script Bước này thường không bắt buộc trong các loại và mức kiểm tra, chỉ yêu cầu trong những trường hợp đặc thù cần thiết kế, tạo ra các Test Script có khả năng chạy trên máy tính giúp tự động hóa việc thực thi các bước kiểm tra đã định nghĩa ở bước thiết kế test. Bước 4: Thực hiện kiểm tra Test Thực hiện các bước kiểm tra đã thiết kế (hoặc thực thi các Test Script nếu tiến hành kiểm tra tự động) và ghi nhận, phân tích kết quả. 9 Bước 5: Đánh giá Đánh giá toàn bộ quá trình kiểm tra, bao gồm xem xét và đánh giá kết quả kiểm tra, liệt kê lỗi, chỉ định các yêu cầu thay đổi, và tính toán các số liệu liên quan đến quá trình kiểm tra (chẳng hạn số giờ, thời gian kiểm tra, số lượng lỗi, phân loại lỗi…). Lưu ý, việc đánh giá kết quả kiểm tra ở bước này hoàn toàn khác với bước thẩm định kết quả kiểm tra sau khi hoàn tất một vòng kiểm tra.
Đánh giá kết quả kiểm tra ở giai đoạn này mang tính toàn cục và nhằm vào bản thân giá trị của các kết quả kiểm tra. Các bước đánh giá - Đánh giá độ bao phủ: Xác định quá trình kiểm tra có đạt được độ bao phủ yêu cầu hay không, tỷ lệ yêu cầu đã được kiểm tra (tính trên các yêu cầu của PM và số lượng code đã viết). - Phân tích lỗi: Đưa ra số liệu phục vụ cho việc cải tiến các qui trình phát triển, giảm sai sót cho các chu kỳ phát triển và kiểm tra sau đó. - Xác định quá trình kiểm tra có đạt yêu cầu? Từ đó, kiểm tra viên xác định kế hoạch có hoặc không thay đổi chiến lược hoặc cách thức kiểm tra.
- Báo cáo tổng hợp: Tổng hợp kết quả các bước ở trên và phải được gửi cho tất cả những người có liên quan. Các kỹ thuật kiểm thử phần mềm 1. Kiểm thử hộp đen Một trong những chiến lược kiểm thử quan trọng là kiểm thử hộp đen, hướng dữ liệu, hay hướng vào/ra. Kỹ thuật kiểm thử này hoàn toàn không quan tâm về cách hoạt động và cấu trúc bên trong của chương trình.
Thay vào đó, tập trung vào tìm các trường hợp mà chương trình không thực hiện theo các đặc tả của nó.