Chương 1 Tổng quan về kiểm thử và kiểm thử tự động 1. Kiểm thử phần mềm 1. Khái niệm kiểm thử phần mềm Kiểm thử phần mềm là hoạt động khảo sát thực tiễn sản phẩm hay dịch vụ phần mềm 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ụ phần mềm ấy. Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm khuyết phần mềm nhằm đảm bảo hiệu quả hoạt động tối ưu của phần mềm trong nhiều ngành khác nhau.
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 [12]. Vấn đề đặt ra là: Cần vận hành như thế nào để hiệu suất tìm ra lỗi là cao nhất và chi phí (công sức, thời gian) là ít nhất. Mục tiêu kiểm thử Các nguyên tắc được xem như mục tiêu kiểm thử là: Kiểm thử là một quá trình thực thi chương trình với mục đích tìm lỗi. Một trường hợp kiểm thử tốt là trường hợp kiểm thử mà có khả năng cao việc tìm thấy các lỗi chưa từng được phát hiện.
Một kiểm thử thành công là kiểm thử mà phát hiện lỗi chưa từng được phát hiện. Luồng thông tin kiểm thử Luồng thông tin cho kiểm thử được biểu diễn bởi mô hình trong hình 1. Hai kiểu của đầu vào được truyền cho quá trình kiểm thử: Cấu hình phần mềm: gồm các đặc tả yêu cầu, đặc tả thiết kế, và mã nguồn. Cấu hình kiểm thử: gồm có kế hoạch kiểm thử, các thủ tục, trường hợp kiểm thử, và các công cụ kiểm thử.
TIEU LUAN MOI download : skknchat@gmail.1 Luồng thông tin kiểm thử 1. Kiểm thử tự động 1. Khái niệm kiểm thử tự động Trong hầu hết các mô hình phát triển phần mềm, “lập trình – phát triển – sửa lỗi” có thể lặp đi lặp lại rất nhiều lần trước khi phát hành, tuy nhiên hầu hết trong số chúng vẫn tồn tại lỗi. Mặc dù nhóm phát triển đã cố gắng phát hiện và sửa lỗi thông qua kiểm thử thủ công nhưng lỗi luôn tiềm ẩn và xuất hiện trở lại.
Kiểm thử tự động là cách tốt nhất để nâng cao hiệu quả của kiểm thử phần mềm. Kiểm thử thủ công được thực hiện bởi kiểm thử viên thông qua việc quan sát ứng dụng trên màn hình, từ dữ liệu đầu vào, so sánh dữ liệu nhận được với kết quả mong đợi và lưu lại. Kiểm thử thủ công được lặp đi lặp lại trong suốt vòng đời phát triển của phần mềm, mỗi khi có sự thay đổi về mã nguồn chương trình, sự thay đổi về môi trường, phần cứng đều phải tiến hành kiểm thử lại. Nếu một phần mềm phải thực hiện vài nghìn Test Case thì có thể chỉ đủ thời gian thực hiện số Test Case ấy 1 lần, tuy nhiên, để đảm bảo phần mềm khi phát hành không có lỗi, nhóm phát triển phải kiểm thử rất nhiều lần để kiểm tra xem lỗi tìm ra trong lần kiểm thử trước đó đã được sửa hay chưa và đảm bảo không có lỗi mới phát sinh.
Kiểm thử tự động có thể giải quyết vấn đề này. Kiểm thử tự động phần mềm là tiến trình thực hiện một cách tự động một số bước của các ca kiểm thử, bằng cách sử dụng một công cụ nhằm rút ngắn thời gian và công sức kiểm thử [1]. Công cụ kiểm thử tự động có thể thực hiện lại các hành động được xác định trước, so sánh với kết qua mong đợi và ghi lại kết quả. Để kiểm thử tự động cần thực hiện các công việc sau [1]: - Thu thập các đặc tả yêu cầu hoặc các ca kiểm thử, lựa chọn những phần cần thực hiện kiểm thử tự động.
TIEU LUAN MOI download : skknchat@gmail.com 5 - Phân tích và thiết kế mô hình cho kiểm thử tự động. - Sử dụng công cụ để tiến hành kiểm thử, với các bước cho ở bảng sau: Bước Nội dung thực hiện Mô tả 1 Tạo testScript Sử dụng công cụ kiểm thử để ghi lại các thao tác lên phần mềm và sinh tự động các testScript 2 Chỉnh sửa testScript Chỉnh testScript để thực hiện kiểm tra đúng yêu cầu đặt ra, tức alf làm theo ca kiểm thử cần thực hiện. 3 Chạy testScript Vận hành và giám sát hoạt động kiểm tra phần mềm bằng testScript 4 Đánh giá kết quả Kiểm tra kết quả sau khi thực hiện kiểm thử tự động. Bổ sung, chỉnh sửa những sai sót nếu cần.1 Các bước sử dụng công cụ để tiến hành kiểm thư tự động 1.
Lợi ích và hạn chế của kiểm thử tự động Kiểm thử tự động có một số ưu điểm: Tiết kiệm thời gian và chi phí Sau khi xây dựng, công cụ kiểm thử tự động có thể làm đi làm lại mà không mất thêm chi phí và nhanh hơn kiểm thử thủ công thông thường. Kiểm thử tự động có thể giảm thời gian kiểm thử từ thời lượng ngày, sang giờ. Tiết kiệm được thời gian tức là tiết kiệm được chi phí. Tăng độ chính xác Ngay cả những kiểm thử viên nhiều kinh nghiệm cũng có thể có những sai lầm khi thực hiện kiểm thử thủ công.
Kiểm thử tự động sẽ thực hiện các bước một cách chính xác vào mọi thời điểm và luôn ghi lại kết quả kiểm thử. Tăng độ bao phủ của kiểm thử Kiểm thử tự động tăng phạm vi của kiểm thử từ đó cải thiện chất lượng phần mềm. Kiểm thử tự động có thể thực hiện những công việc mà kiểm thử thủ công không làm được, như chạy trên nhiều máy tính với cấu hình khác nhau. Kiểm thử tự động có thể “nhìn” bên trong của ứng dụng, xem nội dung của bộ nhớ, bảng dữ liệu, nội dung tập tin và trạng thái của chương trình để xác định xem sản phẩm có đáp ứng được mong đợi không.
Kiểm thử tự động có thể thực hiện hàng nghìn Test Case phức tạp một cách dễ dàng trong suốt thời gian kiểm thử để bao phủ hết tất cả các trường hợp. TIEU LUAN MOI download : skknchat@gmail.com 6 Kiểm thử tự động làm những việc mà kiểm thử thủ công không làm được Với một công ty phần mềm lớn nhất cũng không thể thực hiện việc kiểm soát ứng dụng web với hàng nghìn người truy cập cùng 1 lúc. Kiểm thử tự động có thể mô phỏng hàng chục, hàng trăm hay thậm chí hàng nghìn người sử dụng ảo tương tác với mạng hay ứng dụng web. Bên cạnh đó cũng có những khó khăn cơ bản sau [1]: - Cần chi phí để tạo và bảo trì các đặc tả kiểm thử (script).
- Đòi hỏi kỹ thuật viên phải có kĩ năng sử dụng công cụ tạo script. - Không áp dụng được trong việc tìm lỗi mới của phần mềm. Phân loại công cụ kiểm thử tự động Chi phí kiểm thử phần mềm thường chiếm tới 40% tổng các nỗ lực dành cho một dự án phát triển phần mềm. Vì thế, các nhà nghiên cứu và người thực hành đã cố gắng phát triển một số thế hệ các công cụ kiểm thử tự động khác nhau để giúp giảm thiểu chi phí này.
Chúng bao gồm: - Bộ phân tích tĩnh. Các hệ thống phân tích chương trình hỗ trợ cho “việc chứng minh” các lỹ lẽ tĩnh để phát hiện những vấn đề yếu kém về cấu trúc và định dạng của chương trình. - Bộ kiểm toán mã. Những bộ lọc chuyên dụng dùng để kiểm tra chất lượng chương trình để đảm bảo rằng, nó đáp ứng các chuẩn mã hoá tối thiểu.
- Bộ xử lý khẳng định. Những hệ thống tiền xử lý/hậu xử lý này được sử dụng để cho biết liệu những mệnh đề do người lập trình tạo ra, được gọi là khẳng định về hành vi của chương trình có thực sự đáp ứng được yêu cầu khi thực hiện chương trình hay không. - Bộ sinh tệp kiểm thử. Những bộ xử lý sinh ra và điền các giá trị đã xác định vào các tệp để chương trình đọc vào khi kiểm thử.
- Bộ sinh dữ liệu kiểm thử. Những hệ thống phân tích hỗ trợ cho người dùng trong việc lựa chọn dữ liệu kiểm thử làm cho chương trình hành xử theo một cách cụ thể. - Bộ kiểm chứng kiểm thử. Chúng đo mức bao quát của việc kiểm thử bên trong, thường liên quan tới cấu trúc điều khiển của sự vật kiểm thử và báo cáo về giá trị bao quát cho chuyên gia đảm bảo chất lượng.
- Bộ mô phỏng môi trường. Nó là một hệ thống dựa trên máy tính giúp người kiểm thử mô hình hoá môi trường bên ngoài của hệ thời gian thực để mô phỏng các điều kiện vận hành thực một cách động. - Bộ phân tích luồng dữ liệu. Công cụ này theo dõi dấu vết luồng dữ liệu đi qua hệ thống (tương tự như bộ phân tích đường đi) và cố gắng tìm ra những TIEU LUAN MOI download : skknchat@gmail.com 7 tham chiếu dữ liệu không xác định, đặt chỉ số sai và các lỗi khác có liên quan tới dữ liệu.
Việc dùng công cụ để tự động hoá kiểm thử phần mềm đang phát triển, và có thể sẽ phát triển rất nhanh trong thập kỉ tới. Các công cụ kiểm thử tạo ra những thay đổi lớn trong kiểm thử phần mềm, đem lại hiệu quả kinh tế cũng như cải tiến độ tin cậy của các hệ thống dựa trên máy tính một cách đáng kể. TIEU LUAN MOI download : skknchat@gmail.com 8 Chương 2 Phương pháp sinh ca kiểm thử tự động Ca kiểm thử (Test Case) là một thành phần mô tả đầu vào, hành động hoặc sự kiện và một kết quả mong đợi để xác định liệu một chức năng của ứng dụng đó làm việc đúng không. Một trong những lý do quan trọng nhất trong kiểm thử phần mềm là thiết kế và tạo ra các Test Case có hiệu quả.
Chi phí kiểm thử phần mềm thường chiếm tới 40% tổng các nỗ lực dành cho một dự án phát triển phần mềm. Vì thế, giảm chi phí cho việc tạo Test Case (thời gian, công sức) cũng là một trong những vấn đề được quan tâm trong kiểm thử phần mềm. Tự động hoá việc tạo Test Case không những giúp giảm chi phí trong việc tạo Test Case mà còn giúp đồng nhất hoá chất lượng Test Case. Có hai phương pháp tạo Test Case tự động: phương pháp tĩnh và phương pháp động.
Phương pháp tĩnh dựa trên thực thi các ký hiệu mô tả; phương pháp động đạt được từ dữ liệu cần thiết bằng việc chạy chương trình trong khi kiểm thử. Đã có nhiều nghiên cứu về việc sinh các Test Case tối ưu dựa trên các đặc tả, tuy nhiên, không thể đạt 100% các Test Case tối ưu.