Bài giảng Kiểm thử phần mềm (Software testing)

Kiểm thử hệ thống (system testing)  Kiểm thử thành phần (component testing)  Thiết kế test case (test case design)  Kiểm thử tự động (test automation)

pdf45 trang | Chia sẻ: candy98 | Lượt xem: 488 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Kiểm thử phần mềm (Software testing), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Software testing Kiểm thử phần mềm Nội dung  Kiểm thử hệ thống (system testing)  Kiểm thử thành phần (component testing)  Thiết kế test case (test case design)  Kiểm thử tự động (test automation) Tiến trình Kiểm thử  Kiểm thử thành phần  Kiểm thử các thành phần riêng biệt của chương trình  Thường là trách nhiệm của người phát triển phần mềm  Kiểm thử xuất phát từ kinh nghiệm của người phát triển phần mềm. Kiểm thử hệ thống - Kiểm thử các nhóm thành phần tích hợp để tạo ra 1 hệ thống hoặc 1 hệ thống phụ - Là trách nhiệm của nhóm kiểm thử độc lập - Kiểm thử dựa trên đặc tả hệ thống Giai đoạn kiểm thử Component testing System testing Software developer Independent testing team Kiểm tra lỗi  Mục tiêu của việc kiểm tra lỗi là để phát hiện ra những lỗi trong chương trình  Kiểm tra thành công là làm cho chương trình chạy 1 cách bất thường Mục tiêu của tiến trình kiểm tra  Kiểm thử xác nhận - Để giải thích cho người phát triển phần mềm và khách hàng thấy được các yêu cầu mà hệ thống có. - kiểm thử thành công là cho thấy hệ thống hoạt động như dự định  Defect testing - Để phát hiện lỗi hoặc khiếm khuyết trong hệ thống mà hoạt động của nó không đúng hoặc không phù hợp với đặc tả. - Một kiểm thử thành công là làm cho hệ thống thực hiện không chính xác và để lộ một khiếm khuyết trong hệ thống. Quy trình kiểm thử phần mềm Test case Test data Test results Test reports Design test cases Prepare test data Run program with test data Compare results to test cases Chính sách kiểm thử  Chỉ có kiểm thử đầy đủ mới có thể cho thấy 1 chương trình luôn có khiếm khuyết. Tuy nhiên, kiểm thử đầy đủ là việc không thể.  Chính sách kiểm thử xác định các phương pháp được sử dụng trong việc chọn lựa kiểm thử hệ thống. - Tất cả các chức năng truy cập trong trình đơn nên được kiểm thử - Sự kết hợp các chức năng trong cùng 1 trình đơn cần được kiểm thử. - Trường hợp đầu vào là từ phía người dùng thì tất cả các chức năng đều phải được kiểm thử với cả đầu vào đúng và sai. Kiểm thử hệ thống  Bao gồm các thành phần tích hợp để tạo ra 1 hệ thống hoặc 1 hệ thống phụ.  Có thể bao gồm việc kiểm thử 1 increment được giao cho khách hàng.  Hai giai đoạn: - Kiểm thử tích hợp: nhóm kiểm thử có thể truy cập vào mã nguồn của hệ thống. Hệ thống được kiểm thử là các thành phần được tích hợp. - Kiểm thử phát hành(release testing): nhóm kiểm thử kiểm thử hệ thống hoàn chỉnh sẽ được chuyển giao như một black-box. Kiểm thử tích hợp  Bao gồm việc xây dựng 1 hệ thống từ các thành phần và kiểm thử để phát hiện vấn đề phát sinh từ các tương tác thành phần.  Tích hợp đầu-cuối: Phát triển khung sườn hệ thống và populate nó với các thành phần.  Tịch hợp trên-dưới:  Để đơn giản hóa các lỗi cục bộ, hệ thống nên được tích hợp từng bước một. Incremental integration testing A B A B C A B C D T1 T2 T3 T1 T2 T3 T1 T2 T3 T4 T4 T5 Tiếp cận kiểm thử  Xác nhận kiến trúc: Kiểm thử tích hợp Top- Down để phát hiện ra sai sót trong kiến trúc của hệ thống. Black-box testing Nguyên tắc kiểm thử  Nguyên tắc kiểm thừ là các gợi ý cho nhóm kiểm thử để giúp họ chọn cách kiểm thử mà sẽ làm bộc lộ các khuyết điểm trong hệ thống.  Chọn các đầu vào tác động đến hệ thống để tạo ra tất cả các thông báo lỗi.  Thiết kế đầu vào để gây ra lỗi tràn bộ đệm  Lặp lại các đầu vào giống nhau hoặc hàng loạt đầu vào trong 1 vài lần.  Lượng kết quả tính toán là quá nhiều hay quá ít. Kịch bản kiểm thử A student in Scotland is studying American History and has been asked to write a paper on ‘Frontier mentality in the American West from 1840 to 1880’. To do this, she needs to find sources from a range of libraries. She logs on to the LIBSYS system and uses the search facility to discover if she can access riginal documents from that time. She discovers sources in various US university libraries and downloads copies of some of these. However, for one document, she needs to have confirmation from her university that she is a genuine student and that use is for non-commercial purposes. The student then uses the facility in LIBSYS that can request such permission and registers her request. If granted, the document will be downloaded to the registered library’s server and printed for her. She receives a message from LIBSYS telling her that she will receive an e-mail message when the printed document is available for collection. Các kiểm thử hệ thống  Kiểm tra cơ chế đăng nhập bằng cách sử dụng thông tin đăng nhập chính xác và không chính xác để kiểm tra rằng người dùng hợp lệ được chấp nhận và người sử dụng không hợp lệ bị từ chối.  Kiểm tra các tìm kiếm cơ sở bằng cách sử dụng các truy vấn khác nhau đối với nguồn đã biết đê kiểm tra xem cơ chế tìm kiếm có thực sự tìm kiếm các tài liệu.  Kiểm tra hệ thống trình bày cơ sở để kiểm tra xem thông tin về các văn bản có được hiển thị đúng cách.  Kiểm tra các cơ chế để yêu cầu sự cho phép để tải về.  Kiểm tra e-mail phản hồi cho biết rằng các tài liệu được tải về là tồn tại. Use cases  Use cases có thể là các cơ sở để phát sinh các kiểm thử cho hệ thống. Chúng giúp cho việc xác định các hoạt động để kiểm thử và giúp cho việc thiết kế test case.  Từ một lược đồ trình tự liên quan, các đầu vào và đầu ra phải được tạo ra cho các lần kiểm thừ có thể được xác định. Collect weather data sequence chart Kiểm thử hiệu suất  Một phần của release testing có thể bao gồm thử nghiệm sự nổi lên đặc tính của một hệ thống, chẳng hạn như hiệu suất và độ tin cậy.  Hiệu suất kiểm tra thường liên quan đến kế hoạch hàng loạt các bài kiểm tra nơi nạp là ổn định tăng cho đến khi hệ thống hoạt động trở nên không thể chấp nhận. Kiểm thử thành phần  Thành phần test là quá trình thử nghiệm thành phần riêng biệt trong hệ thống. Đây là một quá trình kiểm tra lỗi như vậy mục đích của nó là để lộ những lỗi lầm trong các thành phần. Có nhiều loại khác nhau của thành phần có thể sẽ được thử nghiệm ở giai đoạn này:  chức năng cá nhân hoặc các chức năng trong một đối tượng.  các lớp đối tượng có nhiều thuộc tính và chức năng.  các chức năng của thành phần hỗn hợp được tạo thành từ các đối tượng khác nhau. các thành phần hỗn hợp có một giao diện được định nghĩa được sử dụng để truy cập các chức năng của nó  chức năng cá nhân hoặc các phương pháp cá nhân là loại đơn giản nhất của thành phần, các test của bạn là một tập hợp các đường dẫn đến những thói quen với các thông số đầu vào khác nhau. bạn có thể sử dụng các phương pháp tiếp cận để kiểm tra , thảo luận trong phần tiếp theo, để thiết kế các test chức năng hoặc các chức năng. Giao diện đối tượng trạm thời tiết Trạm thử nghiệm thời tiết  Cần phải xác định trường hợp thử nghiệm cho báo cáo thời tiết, hiệu chỉnh, kiểm tra, khởi động và tắt máy.  Sử dụng một mô hình nhà nước, xác định trình tự của chuyển trạng thái để thử nghiệm và sự kiện trình tự để gây ra những hiệu ứng chuyển tiếp  Ví dụ: Chờ đợi -> đo đạc -> Kiểm tra -> Truyền -> Chờ đợi Kiểm thử giao diện  Mục tiêu là để phát hiện lỗi do Giao diện hoặc giả định không hợp lệ về giao diện.  Đặc biệt quan trọng đối với hướng đối tượng phát triển các đối tượng được xác định bằng các giao diện của nó. Interface testing Các loại giao diện Các thông số giao diện  Dữ liệu truyền từ một thủ tục khác. Chia sẻ bộ nhớ giao diện. _ Block của bộ nhớ được chia sẻ giữa các thủ tục hoặc chức năng. Giao diện thủ tục _ Hệ thống đóng gói là một tập hợp các thủ tục và bởi các hệ thống phụ khác. Thông báo qua giao diện _ Hệ thống yêu cầu dịch vụ từ system.s Lỗi giao diện *Sử dụng sai giao diện Một thành phần giao diện gọi thành phần khác và làm cho một lỗi trong việc sử dụng thành phần đó ví dụ: sai thứ tự các thông số . *Sự hiểu lầm giao diện Những giả định về hành vi của các thành phần không chính xác. *Lỗi thời Các tên gọi của tốc độ hoạt động và các thông tin mới được truy cập về thành phần khác . Hướng dẫn kiểm tra giao diện  Thiết kế các bài kiểm tra để các tham số được gọi là thủ tục tại phạm vi các đầu cực của của nó.  Luôn luôn kiểm tra các tham số con trỏ với con trỏ null.  Thiết kế các bài kiểm tra thành phần gây thất bại.  Sử dụng qua tin nhắn thử nghiệm trong hệ thống.  Trong chia sẻ hệ thống bộ nhớ, thay đổi thứ tự các thành phần được kích hoạt. Trường hợp kiểm tra thiết kế  Liên quan đến việc thiết kế các trường hợp thử nghiệm (đầu vào và kết quả đầu ra) dùng để kiểm tra hệ thống.  Mục tiêu của thiết kế trường hợp thử nghiệm là tạo ra một thiết lập các bài kiểm tra có hiệu quả trong quá trình xác nhận và lỗi thử nghiệm.  Thiết kế phương pháp tiếp cận:  Dựa trên yêu cầu thử nghiệm;  Phân vùng thử nghiệm;  thử nghiệm Kết cấu. Thử nghiệm dựa trên yêu cầu  Một nguyên tắc chung của yêu cầu kỹ thuật này là yêu cầu cần được kiểm chứng.  Yêu cầu dựa trên thử nghiệm là một xác nhận kiểm tra kỹ thuật, nơi bạn xem xét từng yêu cầu và rút ra một tập hợp các yêu cầu kiểm thử. yêu cầu LIBSYS  Người dùng sẽ có thể tìm kiếm hoặc là tất cả các thiết lập ban đầu của cơ sở dữ liệu hoặc chọn một tập con từ đó.  Hệ thống sẽ cung cấp cho người xem thích hợp cho người sử dụng để đọc tài liệu trong tài liệu lưu trữ.  Mỗi đơn hàng được cấp một định danh duy nhất (ORDER_ID) mà người dùng phải có thể sao chép vào khu vực lưu trữ lâu dài của tài khoản. Kiểm thử LIBSYS  Bắt đầu tìm kiếm: cho người sử dụng tìm kiếm cho các hạng mục được biết đến  Bắt đầu dùng tìm kiếm cho các hạng mục đó được biết là có mặt và được biết không có mặt, nơi tập hợp các cơ sở dữ liệu bao gồm 2 cơ sở dữ liệu  Bắt đầu dùng tìm kiếm cho các hạng mục đó được biết là có mặt và được biết không có mặt nơi đặt cơ sở dữ liệu, bao gồm hơn 2 cơ sở dữ liệu.  Chọn một cơ sở dữ liệu từ các thiết lập cơ sở dữ liệu và bắt đầu người dùng tìm kiếm cho các hạng mục được biết là hiện tại và được biết đến không có mặt.  Chọn nhiều hơn một cơ sở dữ liệu từ các thiết lập cơ sở dữ liệu và bắt đầu tìm kiếm cho các hạng mục đó được biết là có mặt và được biết không có mặt. Phân vùng thử nghiệm  Dữ liệu đầu vào và kết quả đầu ra thường rơi vào các lớp học khác nhau mà tất cả các thành viên của một lớp học có liên quan.  Mỗi của các lớp này là tương đương phân vùng, lĩnh vực mà chương trình cư xử một cách tương đương cho mỗi lớp thành viên.  trường hợp kiểm tra nên được lựa chọn từ mỗi phân vùng. phân vùng tương đương search routine - input partitions  Nhập vào những gì phù hợp với điều kiện ban đầu  Nhập vào nơi yếu tố khóa là 1 thành phần của mảng  Nhập vào nơi yếu tố khóa không là 1 thành phần của mảng search routine - input partitions Nguyên tắc kiểm thử( tuần tự)  Kiểm thử phần mềm với trình tự mà chỉ có 1 giá trị đơn  Sử dụng các kích thước khác nhau của trình tự trong những kiểm thử khác nhau  Xuất phát từ việc kiểm thử : phần đầu giữa cuối của trình tự cho phép  Kiểm thử với chiều dài trình tự là 0 Kiểm thử cấu trúc  Thông thường gọi là kiểm thử white-box  Dẫn xuất của trường hợp kiểm thử dựa theo cấu trúc chương trình. Sự nhận biết của chương trình được dùng để xác nhận trường hợp kiểm thử thêm vào  Đối tượng để thi hành tất cả dòng lệnh chương trình( không phải tất cả đường kết hợp) Kiểm thử cấu trúc Tìm kiếm nhị phân- phân vùng tương đương  Thỏa mãn điều kiện ban đầu, yếu tố khóa trong mảng  Thỏa mãn điều kiện ban đầu, yếu tố khóa không ở trong mảng  Không thỏa mãn điều kiện ban đầu, yếu tố khóa trong mảng  Không thỏa mãn điều kiện ban đầu, yếu tố khóa không ở trong mảng  Mảng nhập vào giá trị đơn  Mảng nhập vào giá trị chẵn  Mảng nhập vào giá trị lẻ Tìm kiếm nhị phân- phân vùng tương đương Kiểm thử đường đi  Đối tượng của kiểm thử đường đi là để chắc chắn rằng bộ trường hợp kiểm thử là mỗi đường trong chương trình được thực thi tệ nhất 1 lần  Điểm bắt đầu cho kiểm thử đường đi là chương trình luồng đồ thị, biểu diễn node mô tả sự giải quyết của chương trình và vòng cung biểu thị luồng điều khiển  Những dòng lệnh với các điều kiện là node trong luồng đồ thị Kiểm thử tự động  Kiểm thử là giai đoạn tốn kém.quy trình kiểm thử cung cấp loạt các công cụ để giảm thời gian và chi phí  Hệ thống như là Junit hỗ trợ sự thực thi kiểm thử tự động  Hầu hết quy trình kiểm thử là hệ thống mở vì kiểm thừ cần là đặc tả tổ chức  Chúng thông thường khó để tích hợp vói quy trình thiết kế và phần tích thân thiện A testing workbench Testing workbench adaptation  Các tập lệnh phải được phát triển để thích ứng với giao diện người dùng, kiểu dáng cho bộ sinh dữ liệu thử  Kiểm tra kết quả đầu ra phải được kiểm chứng lại bằng phương pháp thủ công  Đặc biệt có thể so sánh các tập tin để phát triển Key points  Kiểm thử giao diện là tìm ra những lỗi trong việc thiết kế giao diện của những thành phần hỗn hợp cấu thành  Phân tích cấu trúc dựa vào việc phân tích 1 chương trình và kiểm tra những phát sinh từ việc phân tích đó.  Hệ thống kiểm thử tự động làm giảm chi phí kiểm thử bằng cách hỗ trợ trong việc kiểm thử chương trình với 1 loạt các công cụ phần mềm.