CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ CA KIỂM THỬ 1.Tổng quan về kiểm thử phần mềm 1.Khái niệm về kiểm thử phần mềm Kiểm thử phần mềm (software testing) là một trong những yếu tố góp phần bảo đảm chất lượng phần mềm (SQA), là khâu điển hình kiểm soát đặc tả, thiết lập, lập mã. Theo Glen Myers: “Kiểm thử phần mềm là quá trình vận hành chương trình để tìm ra lỗi”. Cần vận hành như thế nào để: - Hiệu suất tìm ra lỗi là cao nhất. - Chi phí (thời gian, công sức) ít nhất.
(Giáo trình kỹ nghệ phần mềm. Nguyễn Văn Vỵ, Nguyễn Việt Hà. Nhà xuất bản Giáo dục Việt Nam năm 2009) Kiểm thử phần mềm được đặt ra với những lý do: - Muốn nhận diện phần mềm như một phần tử của hệ thống hoạt động. - Hạn chế chi phí cho các thất bại do lỗi gây ra sau này (hiệu quả) - Có kế hoạch tốt nâng cao chất lượng suốt quá trình phất triển (giải pháp).
Kiểm thử giữ vai trò lớn trong quá trình phát triển phần mềm. Xét theo tiêu chí về chi phí thì kiểm thử chiếm: - 40% công sức phát triển; - ≥ 30% tổng thời gian phát triển; - Với các phần mềm có ảnh hưởng tới sinh mạng, chi phí có thể gấp từ 3 đến 5 lần tổng các chi phí khác cộng lại. - Giảm chi phí phát triển; - Tăng độ tin cậy của sản phẩm phần mềm. Vấn đề đặt ra là cần vận hành phần mềm như thế nào để: 14 - Hiệu suất tìm ra lỗi là cao nhất? - Chi phí (thời gian, công sức) ít nhất? Mục tiêu trước mắt của kiểm thử phần mềm là tạo ra các ca kiểm thử để tìm ra lỗi của phần mềm.
Mục đích cuối cùng của kiểm thử phần mềm nhằm có một chương trình tốt, chi phí ít. Glen Myers phát biểu một số quy tắc giống như mục đích kiểm thử: Kiểm thử là một tiến trình thực hiện một chương trình với ý định tìm ra lỗi. Một ca kiểm thử là một trường hợp kiểm thử có xác suất cao để tìm ra lỗi. Việc kiểm thử thành công là việc kiểm thử làm lộ ra một lỗi còn chưa được phát hiện.
Các mục đích trên dẫn đến một sự thay đổi lớn trong quan điểm.Chúng đi ngược lại quan điểm thông thường là một phép kiểm thử thành công là kiểm thử không tìm ra lỗi nào. Mục đích của chúng ta là thiết kế các ca kiểm thử để làm lộ ra một cách có hệ thống những lớp lỗi khác nhau và làm như vậy với một số lượng thời gian và công sức ít nhất. Nếu kiểm thử được tiến hành thành công, thì nó sẽ làm lộ ra những lỗi trong phần mềm. Việc kiểm thử phần mềm làm việc theo đặc tả nên các yêu cầu hiệu năng dường như là được đáp ứng.
Bên cạnh đó, dữ liệu thu thập được khi việc kiểm thử tiến hành đưa ra một chỉ dẫn tốt về độ tin cậy phần mềm và một chỉ dẫn nào đó về phẩm chất phần mềm với tư cách toàn cục. Có một điều mà kiểm thử không thể làm được: Kiểm thử không thể chứng minh được việc không có khiếm khuyết, nó chỉ có thể chứng minh được khiếm khuyết phần mềm hiện hữu. Khi kiểm thử, người ta đưa ra những khái niệm về ca kiểm thử “tốt” và “thắng lợi”: - Ca kiểm thử tốt là ca kiểm thử có xác suất cao tìm ra 1 lỗi. 15 - Ca kiểm thử thắng lợi là ca kiểm thử làm lộ ra ít nhất một lỗi.
Vấn đề đặt ra ở chỗ nếu không tìm được lỗi nào thì có thể kết luận phần mềm hoàn hảo? Câu trả lời chung là chưa hẳn như vậy. Kiểm thử có nhiều lợi ích, trong đó phải kể đến các lợi ích quan trọng: - Ca kiểm thử thắng lợi làm lộ ra khiếm khuyết - Kiểm thử mang lại các lợi ích phụ là thuyết minh: + Chức năng tương ứng với đặc tả, + Thực thi phù hợp yêu cầu và đặc tả, + Cung cấp các chỉ số tin cậy và chất lượng. Tuy kiểm thử có nhiều lợi ích như trên nhưng chưa thể khẳng định phần mềm không còn khiếm khuyết. Mục đích của kiểm thử phần mềm Cũng giống như các sản phẩm máy móc và các hệ thống vật lý, mục đích của kiểm thử phần mềm là để đảm bảo hệ thống phần mềm có thể làm việc tốt như mong muốn khi chúng được đem ra thị trường tới tay khách hàng và người sử dụng.
Cách thường dùng để đưa ra những kiểm chứng về chất lượng cho sản phẩm là đưa sản phẩm vào “chạy thử” hay được kiểm tra trong phòng thí nghiệm trước khi phân phối sản phẩm ra thị trường. Trong ngành Công Nghệ Phần Mềm, các sản phẩm phần mềm được kiểm tra, chạy thử được gọi chung là kiểm thử phần mềm. Mục đích của việc kiểm thử phần mềm là gì? Kiểm thử phần mềm nhằm vào hai mục đích chính là: Đưa ra những chứng nhận về chất lượng và phát hiện sửa lỗi phần mềm. Quy trình kiểm thử phần mềm Những hành động chính của kiểm thử phần mềm là: + Chuẩn bị và lập kế hoạch kiểm thử: Đặt ra các mục tiêu cụ thể cho việc kiểm thử, chọn chiến lược kiểm thử, chuẩn bị các trường hợp kiểm thử cụ thể và các thủ tục kiểm thử.
16 + Thực thi: Tiến hành kiểm thử theo kế hoạch, quan sát và thu thập các kết quả. + Phân tích và theo dõi: Trên những kết quả thu được, phân tích để tìm lỗi. Nếu một lỗi nào đó xuất hiện thì đưa ra giải pháp sửa đổi, sửa đổi và tiếp tục theo dõi tới khi lỗi đó được sửa. Điểm quan trọng trong thực thi kiểm thử đó là tránh để lỗi từ một trường hợp kiểm thử ảnh hưởng đến các trường hợp kiểm thử khác.Chiến lược kiểm thử phần mềm 1.Khái niệm chiến lược kiểm thử Chiến lược kiểm thử là sự tích hợp các kỹ thuật thiết kế ca kiểm thử tạo thành một dãy các bước nhằm hướng dẫn quá trình kiểm thử phần mềm thành công.
Chiến lược kiểm thử được đặt ra với mục tiêu nhằm phác thảo một lộ trình để: - Nhà phát triển tổ chức việc bảo đảm chất lượng bằng kiểm thử, - Khách hàng hiểu được công sức, thời gian và nguồn lực cần cho kiểm thử. Chiến lược kiểm thử cần phải đạt những yếu cầu sau: - Tích hợp được các khâu như lập kế hoạch, thiết kế ca kiểm thử, tiến hành kiểm thử, thu thập và đánh giá các thong tin kết quả. - Đủ mềm dẻo để cổ vũ óc sáng tạo, đáp ứng được nhu cầu khách hàng - Thích ứng với mức kiểm thử cụ thể - Đáp ứng các đối tượng quan tâm khác nhau. Kiểm thử là một tập hợp những hoạt động mà có thể được lập kế hoạch trước và tiến hành một cách có hệ thống.
Một tập các bước mà trong đó chúng ta có thể vận dụng những kỹ thuật thiết kế ca kiểm thử và phương pháp kiểm thử có những đặc trưng mang tính “khuôn mẫu”: 17 - Bắt đầu ở mức mô-đun và tiếp tục cho đến khi tích hợp ở mức hệ thống trọn vẹn. - Các kỹ thuật kiểm thử khác nhau là thích hợp cho những thời điểm khác nhau. - Được cả người phát triển và nhóm kiểm thử độc lập cùng tiến hành. - Kiểm thử đi trước gỡ lỗi, song việc gỡ lỗi phải thích ứng với từng chiến lược kiểm thử.
Chiến lược cần thích ứng với từng mức kiểm thử và phải đưa ra hướng dẫn cho người thực hành và một tập các cột mốc cho người quản lý. Có hai mức kiểm thử: - Kiểm thử mức thấp: thẩm định từng đoạn mã nguồn xem có tương ứng và thực thi đúng đắn hay không? - Kiểm thử mức cao: thẩm định và xác minh các chức năng hệ thống chủ yếu có đúng đặc tả và đáp ứng yêu cầu của khách hàng hay không? Mỗi chiến lược đáp ứng được yêu cầu cần quan tâm: - Có các hướng dẫn cho người thực hiện tiến hành kiểm thử. - Có các cột mốc cho các nhà quản lý kiểm soát hoạt động bảo đảm chất lượng. - Có thước đo để đo và nhận ra các vấn đề càng sớm càng tốt.
- Khách hàng có thể nhận biết được quá trình kiểm thử. Việc kiểm thử cung cấp một thành lũy cuối cùng để có thể thẩm định về chất lượng và có thể phát hiện ra lỗi. Có một số quan điểm sai lầm: - Người phát triển không nên tham gia kiểm thử. - Cho phép người lạ kiểm thử một cách thô bạo.
- Người kiểm thử chỉ quan tâm khi kiểm thử bắt đầu. Nên xuất phát từ thực tiễn mà phân công trách nhiệm thử: 18 - Người phát triển chịu trách nhiệm kiểm thử đơn vị do mình phát triển để bảo đảm thực hiện theo đúng thiết kế, có thể tham gia kiểm thử tích hợp; không khoán trắng chương trình cho người kiểm thử mà phải cùng làm việc với người kiểm thử xuyên suốt dự án. - Nhóm kiểm thử độc lập bắt đầu làm việc khi các khoản mục cấu trúc phần mềm đã đầy đủ, giúp gỡ bỏ những thành kiến: “người xây dựng không thể kiểm thử tốt sản phẩm”, gỡ bỏ mâu thuẫn giữa những người tham gia; đánh giá công sức người phát triển bỏ ra tìm lỗi; tạo ra báo cáo đầy đủ cho tổ chức bảo đảm chất lượng phần mềm.Mô hình chiến lược tổng thể Về mặt kỹ nghệ, việc kiểm thử gồm một số bước được thực hiện tuần tự. Ban đầu, việc kiểm thử tập trung vào từng mô-đun riêng biệt bảo đảm nó ban hành đúng đắn như một đơn vị.
Do đó mới có tên kiểm thử đơn vị. Kiểm thử đơn vị dùng rất nhiều các kỹ thuật kiểm thử hộp trắng, kiểm soát các đường đặc biệt trong cấu trúc điều khiển của một lớp mô-đun nhằm phát hiện tối đa các lỗi. Mặt khác, các mô-đun phải được lắp ghép hay tích hợp lại để tạo nên phần mềm hoàn chỉnh. Việc kiểm thử tích hợp có liên quan đến thẩm định và xây dựng chương trình.
Các kỹ thuật thiết kế kiểm thử hộp đen được dùng trong hầu hết quá trình tích hợp, mặc dù các kiểm thử hộp trắng cũng có thể được dùng để bao quát đa số các đường điều khiển. Sau khi phần mềm đã được dùng tích hợp (được xây dựng), một tập hợp các phép kiểm thử sẽ được tiến hành. Các tiêu chuẩn hợp lệ (được thiết lập trong phân tích yêu cầu) cũng phải được kiểm thử.Việc kiểm thử hợp lệ được tiến hành nhằm bảo đảm phần mềm đáp ứng đầy đủ các yêu cầu chức năng. Các kỹ thuật kiểm thử hộp đen được dùng chủ yếu trong kiểm thử hợp lệ.
Kiểm thử hệ thống nằm trong khung cảnh rộng hơn của kỹ nghệ hệ thống máy tính.