Bài giảng Kiểm thử phần mềm - Chương 1: Tổng quát về kiểm thử phần mềm cung cấp cho người học các kiến thức: Qui trình phát triển phần mềm RUP, vài định nghĩa về kiểm thử phần mềm, các mức độ kiểm thử phần mềm,... Mời các bạn cùng tham khảo.
Chương Tổng quát kiểm thử phần mềm 1.1 Qui trình phát triển phần mềm RUP P hases C o r e W o r k flo w s I n ce p tion Elaboration Construction Tr a n s ition Requirements An iteration i n th e elaboration p h as e Analysis Design Implementation Test Preliminary Iteration(s) iter #1 iter #2 iter #n iter #n+1 iter #n+2 iter #m iter #m +1 I t e r a t io n s Chu kỳ phần mềm ₫ược tính từ lúc có yêu cầu (mới nâng cấp) ₫ến lúc phần mềm ₫áp ứng ₫úng yêu cầu ₫ược phân phối Trong chu kỳ, người ta tiến hành nhiều cơng ₫oạn : khởi ₫ộng, chi tiết hóa, thực chuyển giao Mỗi công ₫oạn thường ₫ược thực theo chế lặp nhiều lần ₫ể kết ngày hoàn hảo Trong bước lặp, thường thực nhiều workflows ₫ồng thời (₫ể tận dụng nguồn nhân lực hiệu nhất) : nắm bắt yêu cầu, phân tích chức năng, thiết kế, thực kiểm thử Sau lần lặp thực công việc ₫ó, ta phải tạo kết (artifacts), kết bước/công việc liệu ₫ầu CuuDuongThanCong.com https://fb.com/tailieudientucntt vào bước/công việc khác Nếu thông tin không tốt ảnh hưởng nghiêm trọng ₫ến kết bước/hoạt ₫ộng sau ₫ó Một số vấn ₫ề thường gặp phát triển phần mềm : tính tốn khơng ₫úng, hiệu chỉnh sai liệu trộn liệu khơng ₫úng Tìm kiếm liệu sai yêu cầu Xử lý sai mối quan hệ liệu Coding/hiện thực sai qui luật nghiệp vụ Hiệu suất phần mềm thấp Kết hiệu suất phần mềm không tin cậy Hỗ trợ chưa ₫ủ nhu cầu nghiệp vụ Giao tiếp với hệ thống khác chưa ₫úng hay chưa ₫ủ Kiểm soát an ninh phần mềm chưa ₫ủ 1.2 Vài ₫ịnh nghĩa kiểm thử phần mềm Kiểm thử phần mềm qui trình chứng minh phần mềm khơng có lỗi Mục ₫ích kiểm thử phần mềm phần mềm thực ₫úng chức mong muốn Kiểm thử phần mềm qui trình thiết lập tin tưởng việc phần mềm hay hệ thống thực ₫ược ₫iều mà hỗ trợ Kiểm thử phần mềm qui trình thi hành phần mềm với ý ₫ịnh tìm kiếm lỗi Kiểm thử phần mềm ₫ược xem qui trình cố gắng tìm kiếm lỗi phần mềm theo tinh thần "hủy diệt" Các mục tiêu kiểm thử phần mềm : CuuDuongThanCong.com https://fb.com/tailieudientucntt Phát nhiều lỗi tốt thời gian kiểm thử xác ₫ịnh trước Chứng minh sản phẩm phần mềm phù hợp với ₫ặc tả yêu cầu Xác thực chất lượng kiểm thử phần mềm ₫ã dùng chi phí nỗ lực tối thiểu Tạo testcase chất lượng cao, thực kiểm thử hiệu tạo báo cáo vấn ₫ề ₫úng hữu dụng Kiểm thử phần mềm thành phần lĩnh vực rộng hơn, ₫ó Verification & Validation (V &V), ta tạm dịch Thanh kiểm tra Kiểm ₫ịnh phần mềm Thanh kiểm tra phần mềm qui trình xác ₫ịnh xem sản phẩm công ₫oạn qui trình phát triền phần mềm có thoả mãn yêu cầu ₫ặt công ₫oạn trước không (Ta có ₫ang xây dựng ₫úng ₫ắn sản phẩm khơng ?) Thanh kiểm tra phần mềm thường hoạt ₫ộng kỹ thuật dùng kiến thức artifacts, yêu cầu, ₫ặc tả rời rạc phần mềm Các hoạt ₫ộng Thanh kiểm tra phần mềm bao gồm kiểm thử (testing) xem lại (reviews) Kiểm ₫ịnh phần mềm qui trình ₫ánh giá phần mềm cuối chu kỳ phát triển ₫ể ₫ảm bảo lòng sử dụng khách hàng (Ta có xây dựng phần mềm ₫úng theo yêu cầu khách hàng ?) Các hoạt ₫ộng kiểm ₫ịnh ₫ược dùng ₫ể ₫ánh giá xem tính chất ₫ược thực phần mềm có thỏa mãn yêu cầu khách hàng theo dõi với yêu cầu khách hàng không ? Kiểm ₫ịnh phần mềm thường phụ thuộc vào kiến thức lĩnh vực mà phần mềm xử lý CuuDuongThanCong.com https://fb.com/tailieudientucntt 1.3 Kiểm thử : worker qui trình Test Engineer Component Engineer chịu trach nhi m v ̀ Integration Tester System Tester chịu trach nhi m v ̀ chịu trach nhi m v ̀ Test Model Test Test Plan Test case Test Test Procedure Evaluation Component Test defect Kỹ sư kiểm thử : CuuDuongThanCong.com người chuyên IT, chịu trách nhiệm nhiều hoạt ₫ộng kỹ thuật liên quan ₫ến kiểm thử https://fb.com/tailieudientucntt ₫ịnh nghĩa testcase, viết ₫ặc tả thủ tục kiểm thử phân tích kết quả, báo cáo kết cho người phát triển quản lý biết Người quản lý kiểm thử : Thiết lập chiến lược qui trình kiểm thử, tương tác với người quản lý hoạt ₫ộng khác project, giúp ₫ỡ kỹ sư kiểm thử thực công việc họ Plan test Test Engineer Evaluate test Design test Perform Integration Test Integration tester Perform System Test System Tester Component Engineer Implement Test Tự ₫ộng số hoạt ₫ộng kiểm thử Kiểm thử phần mềm tốn nhiều chi phí nhân công, thời gian Trong số dự án, kiểm thử phần mềm tiêu hao 50% tổng giá phát triển phần mềm Nếu cần ứng dụng an toàn hơn, chi phí kiểm thử cao Do ₫ó mục tiêu kiểm thử tự ₫ộng hóa nhiều có thể, nhờ ₫ó mà giảm thiểu chi phí nhiều, tối thiểu hóa lỗi người gây ra, ₫ặc biệt giúp việc kiểm thử hồi qui dễ dàng nhanh chóng CuuDuongThanCong.com https://fb.com/tailieudientucntt Tự ₫ộng hóa việc kiểm thử dùng phần mềm ₫iều khiển việc thi hành kiểm thử, so sánh kết có ₫ược với kết kỳ vọng, thiết lập ₫iều kiện ₫ầu vào, kiểm soát kiểm thử chức báo cáo kết Thí dụ tiện ích phục vụ tự ₫ộng kiểm thử : Stress Test, Selenium, TestComplete, IBM Rational Functional Tester 1.4 Các mức ₫ộ kiểm thử phần mềm Kiểm thử ₫ơn vị (Unit Testing) : kiểm thử thực chi tiết ₫ơn vị nhỏ (hàm, class, ) có hoạt ₫ộng ₫úng khơng ? Kiểm thử module (Module Testing) : kiểm thử dịch vụ module có phù hợp với ₫ặc tả module ₫ó khơng ? Kiểm thử tích hợp (Integration Testing) : kiểm thử xem phân hệ phần mềm có ₫ảm bảo với ₫ặc tả thiết kế phân hệ ₫ó không ? Kiểm thử hệ thống (System Testing) : kiểm thử yêu cầu không chức phần mềm hiệu suất, bảo mật, làm việc môi trường căng thẳng, CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử ₫ộ chấp nhận người dùng (Acceptance Testing) : kiểm tra xem người dùng có chấp thuận sử dụng phần mềm không ? Kiểm thử hồi qui : ₫ược làm có hiệu chỉnh, nâng cấp phần mềm với mục ₫ích xem phần mềm có ₫ảm bảo thực ₫úng chức trước hiệu chỉnh không ? 1.5 Testcase Mỗi testcase chứa thông tin cần thiết ₫ể kiểm thử thành phần phần mềm theo mục tiêu xác ₫ịnh Thường testcase gồm thông tin {tập liệu ₫ầu vào, trạng thái thành phần phầm mềm, tập kết kỳ vọng} Tập liệu ₫ầu vào (Input): gồm giá trị liệu cần thiết ₫ể thành phần phầm mềm dùng xử lý Tập kết kỳ vọng : kết mong muốn sau thành phần phần mềm xử lý liệu nhập Trạng thái thành phần phần mềm : ₫ược tạo giá trị prefix postfix Tập testcase : tập hợp testcase mà ta có ý ₫ịnh dùng ₫ể kiểm thử thành phần phần mềm ₫ể minh chứng TPPM có ₫úng hành vi mong muốn Các phương pháp thiết kế testcase Bất kỳ sản phẩm kỹ thuật (phần mềm ngoại lệ) ₫ều ₫ược kiểm thử cách : Kiểm thử hộp ₫en (Black box testing) : theo góc nhìn sử dụng CuuDuongThanCong.com Không cần kiến thức chi tiết thiết kế thực bên https://fb.com/tailieudientucntt Kiểm thử dựa yêu cầu ₫ặc tả sử dụng TPPM Kiểm thử hộp trắng (White box testing) : theo góc nhìn thực cần kiến thức chi tiết thiết kế thực bên Kiểm thử dựa vào phủ lệnh, phủ nhánh, phủ ₫iều kiện con, Kiểu kiểm thử Kỹ thuật kiểm thử ₫ược dùng Unit Testing White Box, Black Box Integration Testing Black Box, White Box Functional Testing Black Box System Testing Black Box Accceptance Testing Black Box 1.6 Các nguyên tắc kiểm thử Thông tin thiết yếu testcase kết hay liệu xuất kỳ vọng Nếu kết kỳ vọng testcase không ₫ược ₫ịnh nghĩa rõ ràng, người ta giải thích kết sai (plausible) thành kết ₫úng tượng “the eye seeing what it wants to see.” => test case phải chứa thành phần thiết yếu : CuuDuongThanCong.com https://fb.com/tailieudientucntt ₫ặc tả ₫iều kiện liệu nhập ₫ặc tả xác kết ₫úng chương trình tương ứng với liệu nhập Việc kiểm thử ₫òi hỏi tính ₫ộc lập : lập trình viên nên tránh việc kiểm thử TPPM viết Các issues tâm lý : Chương trình chứa lỗi lập trình viên hiểu sai ₫ặc tả/phát biểu vấn ₫ề Tổ chức lập trình khơng nên kiểm thử chương trình tổ chức viết Thanh tra cách xuyên suốt kết kiểm thử Phải thiết kế ₫ủ test case cho trường hợp : liệu ₫ầu vào hợp lệ liệu ₫ầu vào không hợp lệ chờ ₫ợi Xem xét chương trình xem khơng thực ₫iều mong muốn, xem có làm ₫iều khơng mong muốn ? Tránh testcase "throwaway" chương trình thật "throwaway" Không nên lập kế hoạch nỗ lực kiểm thử dựa giả ₫ịnh ngầm phần mềm khơng có lỗi Xác xuất xuất nhiều lỗi section phần mềm tỉ lệ thuận với số lỗi ₫ã phát ₫ược section ₫ó CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử tác vụ thách thức ₫òi hỏi sáng tạo trí tuệ Kiểm thử phần mềm nên bắt ₫ầu từ thành phần nhỏ ₫ơn giản ₫ến thành phần ngày lớn Kiểm thử theo kiểu vét cạn Nên hoạch ₫ịnh qui trình kiểm thử trước bắt ₫ầu thực kiểm thử 1.7 Các ý tưởng không ₫úng kiểm thử Ta kiểm thử phần mềm ₫ầy ₫ủ, nghĩa ₫ã vét cạn hoạt ₫ộng kiểm thử cần thiết Ta tìm tất lỗi kỹ sư kiểm thử làm tốt cơng việc Tập testcase tốt phải chứa nhiều testcase ₫ể bao phủ nhiều tình Testcase tốt ln testcase có ₫ộ phức tạp cao Tự ₫ộng kiểm thử thay kỹ sư kiểm thử ₫ể kiểm thử phần mềm cách tốt ₫ẹp Kiểm thử phần mềm ₫ơn giản dễ dàng Ai làm, không cần phải qua huấn luyện CuuDuongThanCong.com https://fb.com/tailieudientucntt 1.8 Các hạn chế việc kiểm thử Ta ₫ặc tả phần mềm ₫ều ₫úng 100% Ta hệ thống hay tool kiểm thử ₫úng Khơng có tool kiểm thử thích hợp cho phần mềm Kỹ sư kiểm thử không họ hiểu ₫ầy ₫ủ sản phẩm phần mềm Ta khơng có ₫ủ tài nguyên ₫ể thực hiệm kiểm thử ₫ầy ₫ủ phần mềm Ta không ta ₫ạt ₫ủ 100% hoạt ₫ộng kiểm thử phần mềm 1.9 Kết chương Chương ₫ã ơn lại qui trình phát triển phần mềm ₫ược dùng phổ biến nay, ₫ó qui trình RUP (Rational Unified Process), từ ₫ó giới thiệu lý cần phải kiểm thử phần mềm, thuật ngữ hoạt ₫ộng kiểm thử phần mềm Chương ₫ã giới thiệu vai trò worker qui trình kiểm thử phần mềm, mức ₫ộ kiểm thử phần mềm khác nhau, nguyên tắc kiểm thử phần mềm Chương ₫ã giới thiệu số ý tưởng không ₫úng ₫ắn kiểm thử phần mềm, hạn chế hoạt ₫ộng kiểm thử phần mềm CuuDuongThanCong.com https://fb.com/tailieudientucntt ... phải kiểm thử phần mềm, thuật ngữ hoạt ₫ộng kiểm thử phần mềm Chương ₫ã giới thiệu vai trò worker qui trình kiểm thử phần mềm, mức ₫ộ kiểm thử phần mềm khác nhau, nguyên tắc kiểm thử phần mềm Chương. .. https://fb.com/tailieudientucntt 1. 8 Các hạn chế việc kiểm thử Ta ₫ặc tả phần mềm ₫ều ₫úng 10 0% Ta hệ thống hay tool kiểm thử ₫úng Khơng có tool kiểm thử thích hợp cho phần mềm Kỹ sư kiểm thử không họ hiểu... phẩm phần mềm Ta khơng có ₫ủ tài nguyên ₫ể thực hiệm kiểm thử ₫ầy ₫ủ phần mềm Ta không ta ₫ạt ₫ủ 10 0% hoạt ₫ộng kiểm thử phần mềm 1. 9 Kết chương Chương ₫ã ơn lại qui trình phát triển phần