CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1. Một số định nghĩa về quá trình kiểm thử Kiểm thử là việc kiểm tra kết quả thực hiện của chương trình máy tính xem có đúng với các mục tiêu đã đặt ra với nó không thông qua việc thực hiện ở một số mẫu thử.Kiểm thử phần mềm bao gồm quá trình kiểm tra và kiểm định để đảm bảo phần mềm đáp ứng nhu cầu người dùng, phần mềm chạy đúng chức năng.Kiểm thử phần mềm có thể được thực hiện ở bất kỳ giai đoạn nào trong phát triển phần mềm, phổ biến nhất là kiểm thử sau khi yêu cầu người dùng hoàn thiện hoặc phần mềm vừa xong giai đoạn phát triển. Tuy nhiên, trong quy trình phát triển phần mềm theo kiểu Agile thì kiểm thử phần mềm là quy trình đi cùng với việc phát triển phần mềm.Kiểm thử là việc tìm ra những lỗi trong bản thân phần mềm, việc kiểm thử này trong phần mềm sẽ biểu thị ra những thiếu sót mà ta có thể nhận thấy trong hành vi của phần mềm, và tìm ra những phần không tuân theo quy định và đi lệch ra khỏi những yêu cầu của phần mềm. Theo một số nhà nghiên cứu thì kiểm thử phần mềm được định nghĩa như sau: Dijkstra: Kiểm thử sẽ hiện thị những lỗi hiện có, nhưng không hiển thị lỗi chưa thấy.
Beizer Định luật 1: Mọi phương pháp bạn sử dụng để ngăn ngừa hoặc tìm thấy lỗi bỏ đi một phần lỗi rắc rối, cái mà những phương thức cần. Định luật 2: Phần mềm phức tạp lớn hơn những giới hạn khả năng quản lý. Những người kiểm thử không tốt hơn trong thiết kế lỗiso với những lập trình viên kiểm thử trong thiết kế mã. IEEE: Kiểm thử là tiến trình vận hành hệ thống hoặc thành phần dưới những điều kiện xác định, quan sát hoặc ghi nhận kết quả và đưa ra đánh giá về hệ thống hoặc thành phần đó.
Myers: Kiểm thử là tiến trình thực thi chương trình với mục đích tìm thấy lỗi. (The art of software testing) 2 Giữa kiểm thử và gỡ rối có sự khác biệt: Kiểm thử nhằm phát hiện ra lỗi trong khi đó gỡ rối là việc xác định bản chất lỗi và định lỗi trong chương trình, sau đó tiến hành sữa lỗi. Một số định nghĩa về quá trình kiểm thử phần mềm Một sai sót(Error): Là một sự nhầm lẫn hay một sự hiểu sai trong quá trình phát triển phần mềm của người phát triển.Một lỗi(fault, defect): Xuất hiện trong phần mềm như là kết qủa của một sai sót.Một hỏng hóc(failure):là kết quả của một lỗi xuất hiện làm cho chương trình không hoạt động được hoặc hoạt động được nhưng không cho kết quả như mong muốn. Sai sót Lỗi Hỏng hóc Dữ liệu thử(test data): Dữ liệu vào cần cung cấp cho phần mềm khi thực thi.Kịch bản kiểm thử(test scenario): Các bước thực hiện khi kiểm thử.Phán xét kiểm thử(test oracle): Là việc đánh giá của kiểm thử, có hai cách đánh giá đó là bằng chương trình(tự động), bằng con người(thủ công).Kiểm thử viên(tester): Người thực hiện kiểm thử.Ca kiểm thử(test case):Tập dữ liệu kiểm thử, điều kiện kiểm thử, để đưa ra kết quả mong đợi.
Mục tiêu của kiểm thử Bằng việc kiểm thử sẽ tìm ra được những lỗi trong phần mềm (Myers,1979)và thiết lập chất lượng của phần mềm(Hetzel,1988).Việc kiểm thử thành công khi bạn tìm được ít nhất một lỗi, và đưa ra sự đánh giá với độ tin cậy lớn.Đáp ứng được các yêu cầu công việc và kỹ thuật đã được qui định trong thiết kế và trong lúc phát triển, làm việc như mong đợi và có thể thực thi với các đặc tính giống nhau. Vai trò của kiểm thử - Testing để tìm ra lỗi, ghi nhận các thông tin về lỗi, nhưng không sữa lỗi. - Testing giúp kiểm định phần mềm, đảm bảo rằng phần mềm “đủ tốt” với độ rủi ro “thấp nhất” có thể. 3 CHƯƠNG 2: NHỮNG VẤN ĐỀ LIÊN QUAN TỚI QUÁ TRÌNH KIỂM THỬ PHẦN MỀM 2.
Vòng đời kiểm thử Vòng đời của kiểm thử bắt đầu từ việc kiểm điểm yêu câu, lập kế hoạch kiểm thử. Sau đó là ghi ra các ý tưởng các trường hợp kiểm thử. Từ các trường hợp kiểm thử này đưa ra tất cả các trường hợp kiểm thử và các kịch bản kiểm thử.Sử dụng các thủ tục hay kịch bản kiểm thử này, người kiểm thử có thể phát họa toàn bộ kiểm thử hệ thống hay kiểm thử tích hợp. Kết quả kiểm thử sẽ được đánh giá bởi các tiêu chí kiểm thử đặt ra ban đầu.
Mô hình kiểm thử là một dãy các kế hoạch, các trường hợp kiểm thử và các thủ tục kiểm thử. Trong tiến trình bảo trì và nâng cấp dự án, thì kiểm thử đóng vai trò quan trọng. Cụ thể là: Hình 1.1: Vòng đời kiểm thử Kiểm điểm yêu cầu: Người kiểm thử kiểm điểm yêu cầu phần mềm để dùng chúng và chắc rằng chúng là kiểm thử được. (Nếu chúng không kiểm thử được thì yêu cầu là mơ hồ và cần được xem lại); đây là một hoạt động quan trọng trong 4 nguyên lí kĩ nghệ phần mềm chủ trương người kiểm thử phải tham gia sớm trong dự án phần mềm và làm việc chặt chẽ với các kĩ sư yêu cầu để chắc rằng các yêu cầu phần mềm là tốt và đầy đủ trước khi dự án bắt đầu.
Lập kế hoạch kiểm thử: Người kiểm thử biết cái gì cần được kiểm thử, và lập kế hoạch các hoạt động kiểm thử của họ như: Chuẩn bị chiến lược kiểm thử, kế hoạch kiểm thử, lịch biểu kiểm thử và ước lượng thời gian kiểm thử. Bởi vì người kiểm thử tham gia sớm vào trong dự án, họ có thể làm việc chặt chẽ với kiến trúc sư phần mềm và người thiết kế phần mềm trong việc xác định mọi cấu phần của sản phẩm phần mềm, cả yêu cầu chức năng và phichức năng.Người kiểm thử cũng giúp nhận diện giao diện giữa phần cứng và phần mềm cũng như lập kế hoạch cách kiểm thử các yêu cầu này. - Để thiết kế 1 kế hoạch kiểm thử thường dùng Msproject Cách tạo test plan bằng Msproject : Muốn lên được test plan tốt, người lên kế hoạch cần phải dựa vào một số yếu tố sau:’’ master plan kế hoạch tổng thể của dự án Code Plan, kế hoạch coding sản phẩm, nhân sự trong nhóm, trình độ và năng lực của các thành viên trong nhóm,chính sách mục tiêu chất lương của công ty , các yêu cầu test của khách hàng hoặc hệ thống,khách hàng cần test như thế nào, đảm bảo dự án hoạt động tốt trên các môi trường gì, có cần dùng công cụ test hiệu năng, hiệu suất hay không? Ví dụ: Tạo 1 test plan bao gồm các nội dung công việc của tester để thực hiện test 1 website đơn giản. o Yêu cầu: Hoàn thành test trong vòng 1 tháng o Test trên các môi trường : IE7, 8, 9, FF3.8, chrome o Thực hiện test hiệu năng, hiệu suất của website Các bước thực hiện Bước 1: Viết đầy đủ các đầu mục công việc cần thực hiện vào phần Task Name Bước 2: Điền thông tin người làm các task Bước 3: Điền thông tin Predecessors.
Nối các task lại với nhau 5 Bước 4: Xác định ngày bắt đầu và ngày hoàn thành task. Hệ thống tự động bỏ qua 2 ngày nghỉ là thứ 7 và CN. Tuy nhiên người làm plan vẫn có thể chọn thứ 7 và chủ nhật theo chủ ý. Bước 5: Điền % complete nếu các task đã hoàn thành hoặc comment lại nếu có các vấn đề phát sinh.
Thiết kế kiểm thử: Người kiểm thử bắt đầu xây dựng các trường hợp kiểm thử, kịch đoạn kiểm thử và dữ liệu kiểm thử dựa trên yêu cầu/thiết kế của phần mềm. Họ cũng tạo ra việc dõi vết các yêu cầu để chắc việc kiểm thử là đầy đủ bao quát mọi chi tiết của yêu cầu phần mềm.Bằng việc hiểu thiết kế trong chi tiết, người kiểm thử có thể phát triển các trường hợp kiểm thử tốt hơn và dữ liệu kiểm thử cho dự án. Các modul mà người kiểm thử cần phải thiết kế khi kiêm thử:Viết tescase modul quản trị hệ thống,viết testcase modul quản trị dự án, viết testcase modul quản trị thiết bị, unit test modul quản trị hệ thống,unit test modul quản trị dự án, unit test modul quản trị thiết bị,modul test : liệt kê các modul của hệ thống, system test toàn bộ hệ thống, thực hiện test hiệu năng hệ cho hệ thống, tổng hợp và lên báo cáo kết quả test, viết tài liệu hướng dẫn sử dụng hệ thống, viết tài liệu đào tạo hệ thống,lưu tài liệu lên tài nguyên chung và kết thúc dự án Thiết lập môi trường kiểm thử: Người kiểm thử thiết lập môi trường kiểm thử và chắc rằng nó là hệt như với môi trường người dùng. Thực hiện kiểm thử: Người kiểm thử thực hiện các trường hợp kiểm thử của họ và kịch đoạn kiểm thử trong môi trường kiểm thử để xác định chất lượng của phần mềm (Qua/Hỏng) và phát sinh kết quả kiểm thử và báo cáo khiến khuyết.
Người kiểm thử tiến hành kiểm thử chức năng, kiểm thử tích hợp, và kiểm thử hệ thống và giúp khách hàng tiến hành kiểm thử chấp nhận của người dùng. Tiến trình test và các dạng test trong các giai đoạn Các dự án có thể được chia thành 3 giai đoạn test. Giai đoạn đầu tiên gọi là kiểm thử Alpha, giai đoạn thứ 2 là kiểm thử Beta, giai đoạn 3 là giai đoạn cuối 6 cùng. Trong từng giai đoạn, có những gợi ý và đề xuất các phương pháp test phù hợp, gồm: - Kiểm thử chức năng là một nhóm kiểm thử rất rộng bao gồm FAST, TOFT, kiểm thử biên, kiểm thử dạng khám phá và các dạng khác.
Để định nghĩa tốt hơn phạm vi của kiểm thử chức năng, hãy xem các mức hoạt động khác nhau của một ứng dụng.FAST: Mỗi đầu vào và điều khiển duyệt có hoạt động đúng như mong đợi? TOFT: Ứng dụng có thể thực hiện các chức năng hữu ích như mong đợi? Kiểm thử biên điều gì xảy ra khi sử dụng các giá trị biên? Kiểm thử lỗi ép buộc điều gì xảy ra khi một điều kiện lỗi xuất hiện? Kiểm thử dạng khám phá kinh nghiệm nói lên điều gì về các vùng tiềm ẩn vấn đề trong ứng dụng? Kiểm thử dạng khám phá bao gồm việc nghiên cứu, lập kế hoạch, và thực thi kiểm thử một cách đồng thời. Tấn công phần mềm: Tại sao phần mềm bị lỗi? Làm thế nào bạn có thể biến những bài học kinh nghiệm thành các hoạt động tương tác nhằm công kích và phát hiện các lỗi phần mềm? - FAST FAST: (Funcitonal acceptance simple testing) Kiểm thử đơn giản chấp nhận chức năng .Kiểm thử đơn giản chấp nhận chức năng-FAST là mức thứ hai của kiểm thử chấp nhận phát hành(Release acceptance testing- RAT).