Bài giảng Công nghệ phần mềm - Bài 2: Kiểm thử phần mềm - Trần Mạnh Thắng

pdf 67 trang Gia Huy 17/05/2022 2191
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Bài 2: Kiểm thử phần mềm - Trần Mạnh Thắng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_cong_nghe_phan_mem_bai_2_kiem_thu_phan_mem_tran_ma.pdf

Nội dung text: Bài giảng Công nghệ phần mềm - Bài 2: Kiểm thử phần mềm - Trần Mạnh Thắng

  1. BÀI 2 KIỂM THỬ PHẦN MỀM Giảng viên: ThS. Trần Mạnh Thắng 1 v1.1013109225
  2. TÌNH HUỐNG DẪN NHẬP •Như trong bài mộtthìchúngtađãcónhững khái niệmvề công nghệ phầnmềm, các pha trong tiếntrìnhxâydựng cũng như các mô hình sảnxuấtcácphầnmềm để công ty STT có thể sử dụng trong quá trình sảnxuấtcácsảnphẩmphầnmềm tuỳ theo quy mô và đặc điểmcủatừng sảnphẩm; • Tuy nhiên, phầnmềmdocôngtySTTsảnxuấtraliệucóđạtyêucầuvề chất lượng và có đáp ứng được đúng theo yêu cầucủa khách hàng cũng như việcphát sinh ra lỗi khi khách hàng đưavàosử dụng các sảnphẩmdocôngtynàysảnxuất. Chính vì lý do này mà phảitiếnhànhkiểmthử phầnmềm. Kiểmthử phầnmềmlàgì?vàcónhững phương pháp, chiếnlược, kỹ thuật và cấp độ kiểmthử nào? Nó đượcápdụng như thế nào trong quá trình sản xuấtphầnmềmcủa công ty STT? 2 v1.1013109225
  3. MỤC TIÊU Trình bày đượckháiniệmkiểmthử phầnmềm; Trình bày các phương pháp kiểmthử phầnmềm; Mô tả các kỹ thuậtthiếtkế kiểmthử phầnmềm; Trình bày các chiếnlượckiểmthử phầnmềm; Trình bày đượccáccấp độ kiểmthử phầnmềm; Xây dựng một ứng dụng có sử dụng mộttrongcácphương pháp, kỹ thuật, chiếnlượckiểmthử. 3 v1.1013109225
  4. NỘI DUNG 1 Khái niệmkiểmthử phầnmềm 2 Các phương pháp kiểmthử 3 Các kỹ thuậtthiếtkế kiểmthử 4 Các chiếnlượckiểmthử 5 Các cấp độ củaviệckiểmthử phầnmềm 4 v1.1013109225
  5. 1. KHÁI NIỆM KIỂM THỬ PHẦN MỀM 1.1. Khái niệm 1.2. Vòng đời kiểm thử phần mềm 1.3. Phân loại kiểm thử 5 v1.1013109225
  6. 1.1. CÁC ĐỊNH NGHĨA •Kiểmthử (testing) là quá trình thựcthimộtchương trình vớimục đích là tìm ra lỗi (Glen Myers); •Việckiểmthử là nói đếncáclỗi, sai sót, hỏng hóc hoặccáchậuquả.Mộtphépkiểm thử là cách chạyphầnmềmtheocáctrường hợpkiểmthử vớimục tiêu tìm ra sai sót và giảithíchsự hoạt động chính xác (Paul Jorgensen); •Kiểmthử thành công là phát hiệnralỗi; kiểmthử không phát hiệnralỗilàkiểmthử dở (Sue A.Conger- The New SE); •Kiểmthử phầnmềmlàquátrìnhkhảosátmộthệ thống hay thành phầndướinhững điềukiệnxácđịnh, quan sát và ghi lạicáckếtquả,vàđánh giá mộtkhíacạnh nào đó củahệ thống hay thành phần đó. (Theo Bảng chú giảithuậtngữ chuẩnIEEEcủa Thuậtngữ kỹ nghệ phầnmềm- IEEE Standard Glossary of Software Engineering Terminology); •Cóthểđịnh nghĩamộtcáchdễ hiểunhư sau: Kiểmthử phầnmềmlàmộttiếntrình hay mộttậphợpcáctiếntrìnhđượcthiếtkếđểđảmbảomãhóamáytínhthựchiện theo cái mà chúng đã đượcthiếtkếđểlàm, và không thựchiệnbấtcứ thứ gì không mong muốn. Đây là mộtphaquantrọng trong quá trình phát triểnhệ thống,giúpcho ngườixâydựng hệ thống và khách hàng thấy đượchệ thống mới đã đáp ứng yêu cầu đặtrahaychưa? 6 v1.1013109225
  7. 1.1. CÁC ĐỊNH NGHĨA (tiếp theo) Lưuýkhitiếnhànhkiểmthử: •Chấtlượng phầnmềm do khâu thiếtkế quyết định là chủ yếu, chứ không phải khâu kiểmthử; •Tínhdễ kiểmthử phụ thuộcvàocấutrúcchương trình; •Ngườikiểmthử và ngườipháttriển nên khác nhau; •Dữ liệuthử cho kếtquả bình thường thì không có ý nghĩanhiều, cầncónhững dữ liệukiểmthử mà phát hiệnralỗi; •Khithiếtkế trường hợpthử,khôngchỉ dữ liệukiểmthử nhậpvào,màphảithiếtkế trướccả dữ liệukếtquả sẽ có; • Khi phát sinh thêm trường hợpthử thì nên thử lạinhững trường hợpthử trước đó để tránh ảnh hưởng lan truyềnsóng. 7 v1.1013109225
  8. 1.2. VÒNG ĐỜI CỦA KIỂM THỬ - TESTING LIFE CYCLE Đối tượng và phạm vi Kiểm thử chấp nhận Đặc tả chức năng/ Thiết kế lô gíc Kiểm thử hệ thống Kiểm Thiết kế Vật lý Kiểm tích hợp hồi quy Cấu trúc chương trình Kiểm đơn vị và đặc tả môđun Mã hoá môđun chương trình Tương ứng giữavòngđờidự án và kiểmthử 8 v1.1013109225
  9. 1.2. VÒNG ĐỜI CỦA KIỂM THỬ - TESTING LIFE CYCLE (tiếp theo) Lỗi Sửa lỗi Mô tả yêu cầu Giải pháp sửa lỗi Lỗi Sai sót Thiết kế Cô lập lỗi Sai sót Lỗi Lập trình Phân loại lỗi Sai sót Hậu quả Kiểm nghiệm 9 v1.1013109225
  10. 1.3. PHÂN LOẠI KIỂM THỬ •Theomức độ chi tiếtcủacácbộ phậnhợp thành phầnmềm:  Kiểmthửđơnvị (Unit);  Kiểmthử hệ thống (System);  Kiểmthử tích hợp(Integration). •Theophương pháp kiểmthử:  Kiểmthử hộp đen: Kiểmthử chứcnăng;  Kiểmthử hộptrắng: Kiểmthử cấutrúc. 10 v1.1013109225
  11. 1.3.1. MÔ HÌNH CHỮ V Phân tích Test yêu cầu chấp nhận Đặc tả Test phần mềm hệ thống Thiết kế Test kiến trúc tích hợp Thiết kế Test đơn vị chi tiết Lập trình Rà soát mã Các mức kiểm thử 11 v1.1013109225
  12. 1.3.1. MÔ HÌNH CHỮ V •Môhìnhchữ Vbiểudiễnsự tương quan giữacáccôngđoạnxâydựng phầnmềmvà loạikiểmthử phầnmềm. Bên trái chữ V là quá trình phát triểnphầnmềmvàbênphải là kiểmthử.Tạimỗimộtmứctrongtiếntrìnhpháttriểnthìcómộtphakiểmthử tương ứng; •Cácmứckiểmthử có thểđượclậpkế hoạch và thiếtkế song song. Sau đó chúng ta thựchiệnkiểmthử từđáy tháp chữ Vnêntương ứng vớitừng mứcpháttriển. Kế hoạch kiểmthử hệ thống cầnphảisớmhơnkhitrướckhiphakiểmthử bắt đầu:  Kế hoạch kiểmthử hệ thống là phảikhớpvớicácyêucầuphầnmềm;  Các trường hợpkiểmthử cầnphảihoànthànhkhicácthiếtkế chi tiết đãxong;  Kiểmthử hệ thống bắt đầutừ ngay trướckhilậptrình. 12 v1.1013109225
  13. 1.3.2. TIẾN TRÌNH KIỂM THỬ Kiểm thử Kiểm thử Kiểm thử Kiểm thử đơn vị tích hợp hệ thống chấp nhận Phần cứng, Yêu cầu Nhiều module, Mỗi module phần mềm, người dùng, hệ con yêu cầu hệ thống hệ thống 13 v1.1013109225
  14. 2. CÁC PHƯƠNG PHÁP KIỂM THỬ 2.1. Kiểmthử tĩnh (Static testing) 2.2. Kiểmthửđộng (Dynamic testing) 14 v1.1013109225
  15. 2.1. KIỂM THỬ TĨNH – KIỂM THỬ TRÊN BÀN •Kháiniệm: Là phương pháp kiểmthử phầnmềm đòi hỏixemxétlại thông qua việcsử dụng giấy, bút để kiểmtralầntừng chi tiếtmàkhôngcầnchạy chương trình. •Cácphương pháp kiểmthử tĩnh:  Thanh tra (Inspection);  Đixuyênsuốt (Walkthrough) hay duyệt. 15 v1.1013109225
  16. 2.1.1. KIỂM THỬ TĨNH BẰNG PHƯƠNG PHÁP THANH TRA •Kháiniệm: Là phương pháp kiểmtranganghàngsảnphẩmphầnmềmthựchiệnbởi những ngườinghiêncứuriênglẻđểtìm ra những lỗicóthể bằng mộttiếntrìnhchuẩn cho trước. •Mộtcuộcthanhtrabaogồm:  Đặctả phầnmềm;  Kế hoạch thanh tra;  Sảnphẩmphầnmềm;  Điềuphốiviên;  Thanh tra viên;  Tác giả phầnmềm. •Tiếntrìnhthanhtra  Lên kế hoạch;  Gặpgỡ trước;  Chuẩnbị;  Gặpgỡ thanh tra;  Gia công lại;  Bám sát. 16 v1.1013109225
  17. 2.1.2. KIỂM THỬ TĨNH BẰNG PHƯƠNG PHÁP DUYỆT •Kháiniệm: Là mộtphương pháp kiểm tra ngang hàng vớimộtngườithiếtkế hướng nhóm phát triển đếncáchoạt động chú ý củaquátrìnhsảnxuấtphầnmềm, tham gia đặtcâuhỏivàchúthíchchocáclỗicóthể có. •Khácbiệtvới thanh tra:  Cấutrúcmở;  Khả năng gợiýđịnh hướng thay đổiphầnmềm. •Tiếntrìnhduyệt:  Đánh giá đầuvào;  Chuẩnbị quản lí;  Lậpkế hoạch;  Gặpgỡ trước;  Chuẩnbị riêng;  Duyệt;  Gia công/ bám sát;  Kếtthúc,đánh giá. 17 v1.1013109225
  18. 2.2. KIỂM THỬ ĐỘNG – KIỂM THỬ TRÊN MÁY •Kháiniệm: Phương pháp kiểmthử phầnmềmthôngquaviệcdùngmáychạy chương trình để điềutratrạng thái tác động củachương trình. •Cácphương pháp kiểmthửđộng:  Kiểmthử khuyếttật;  Kiểmthử thống kê. • Đặc điểmcủakiểmthửđộng:  Các ca kiểmthử xác định bằng sự thựcthicủa đốitượng kiểmthử hay chạycácchương trình;  Kiểmtracáchthứchoạt động động củamãlệnh, tứclàkiểmtrasự phản ứng vậtlýtừ hệ thống tớicácbiếnluônthayđổitheothờigian;  Phầnmềmphảithựcsựđượcbiêndịch và chạy;  Làm việcvớiphầnmềm, nhậpcácgiátrịđầuvàovàkiểmtraxemliệu đầuracónhư mong muốnhaykhông. 18 v1.1013109225
  19. 2.2. KIỂM THỬ ĐỘNG – KIỂM THỬ TRÊN MÁY (tiếp theo) Tiếntrìnhkiểmthửđộng: 1. Thiếtkế trường hợpthử theo thử tĩnh; 2. Trường hợpthử phảicócả kếtquả kì vọng sẽ thu được; 3. Dịch chương trình nguồnvàtạomodultải để thử; 4. Xác định miềnvàoracủatệpnếucầnthiết; 5. Nhậpdữ liệu đãthiếtkế cho truờng hợpthử; 6. Điềuchỉnh môi trường thựchiệnmodultải; 7. Thựchiệnmodultải và ghi nhậnkếtquả; 8. Xác nhậnkếtquả vớikếtquả kỳ vọng; 9. Lặplạithaotáctừ 5-8. 19 v1.1013109225
  20. 2.2.1. KIỂM THỬ ĐỘNG BẰNG THỬ NGHIỆM KHUYẾT TẬT •Kháiniệm:  Phương pháp thửđểtìm ra khuyếttậtcủaphầnmềmchủ yếulàlỗilập trình;  Tiếnhànhdựatrênphântíchđặctả chứcnăng;  Phân tích mã nguồn. •Cácloạithử nghiệm khuyếttật:  Thử nghiệmchứcnăng;  Thử nghiệmcấutrúc. 20 v1.1013109225
  21. 2.2.2. KIỂM THỬ ĐỘNG BẰNG THỬ NGHIỆM THỐNG KÊ Khái niệm: •Phương pháp thử bằng cách đánh giá tính dùng đượccủasảnphẩmsử dụng dữ liệu thựcdựatrênthống kê củasố ngườitruycậphoặcsố thao tác; •Phương pháp này có bộ cơ sở dữ liệuthống kê rấtlớn. 21 v1.1013109225
  22. 3. CÁC KỸ THUẬT THIẾT KẾ KIỂM THỬ 3.1. Kiểmthử hộptrắng 3.2. Kiểmthử hộp đen 22 v1.1013109225
  23. 3.1. KIỂM THỬ HỘP TRẮNG (WHITE BOX TESTING) Khái niệm: •Kiểmthử hộptrắng là kiểmthử dựavàocấu Input Results trúc/mã lệnh chương trình (trong trường  hợpnàyyêucầungườikiểmthử phảibiết  ngôn ngữ lậptrình);  • Đây là kỹ thuậtthiếtkế trường hợpthử dựa White Box Data Testing Strategy trên đặctả bên trong củachương trình. Kiểmthử hộptrắng để kiểmthử cái gì? Các lệnh trong chương trình Các điều kiện logic  Các chu trình lặp lại  Cấu trúc dữ liệu Các luồng điều khiển 23 v1.1013109225
  24. 3.1.1. YÊU CẦU VÀ CÁC KỸ THUẬT VỚI KIỂM THỬ HỘP TRẮNG •Yêucầu đốivớikiểmthử hộptrắng:  Những con đường độclậptrongmodulđượcthựchiệnítnhấtmộtlần;  Những điềukiệnlogicđượcthựchiệnvớicả hai giá trị “True” và “False”;  Các chu trình đềuphảithựchiệntrongnội dung vòng lặpvàkhiđặt trong hoạt động củahệ thống;  Thựcthimọicấutrúcdữ liệu để đảmbảohiêulực thi hàng củanó;  Thựcthicácluồng điềukhiểntheomộttiếntrìnhtừđầuchođếnkhikết thúc;  Thựchiệntấtcả các vòng lặp ở biên củanóvàcả vớibiênvậnhànhcủanó;  Áp dụng giai đoạn đầucủavòngkiểmthử. •Cáckỹ thuậtsử dụng vớikiểmthử hộptrắng:  Các câu lệnh (Statement);  Đường dẫn(Path);  Các điềukiện (Condition);  Vòng lặp (Loop);  Ngã rẽ (Branch). 24 v1.1013109225
  25. 3.1.2. KIỂM THỬ HỘP TRẮNG VỚI CÁC CÂU LỆNH •Kháiniệm: Là việcthiếtkế các trường hợpkiểmthử mộtchương trình, mộtphần chương trình, mộthệ thống hay mộtphầncủahệ thống dựavàocấutrúc/mãlệnh chương trình xem nó có đáp ứng tốttấtcả các giá trịđầuvàotheoyêucầucủa chương trình; •Cáccâulệnh củachương trình phải đượcthựchiệnítnhấtmộtlần. 25 v1.1013109225
  26. 3.1.3. KIỂM THỬ HỘP TRẮNG THEO ĐƯỜNG DẪN •Kháiniệm: Là phương pháp kiểmtrabaotrùmmọi đường dẫncủachương trình và cầnkếthợpvớilược đồ tiếntrình. • Đặc điểm:  Phụ thuộc nhiềuvàocácbiểuthức điềukiện;  Vớinhững trường hợpcósố lượng đường dẫnquálớnthìkhôngnênsử dụng phương pháp này để kiểmtratính đúng đắncủachương trình. 26 v1.1013109225
  27. VÍ DỤ A>B If (A>B) {S1; True False S2; S1;S2; } S3; else S3; S4; S4; while(A>B) A>B { S1; S2; } A>B S3; A>B 27 v1.1013109225
  28. 3.1.4. KIỂM THỬ HỘP TRẮNG THEO ĐIỀU KIỆN •Kháiniệm: Là phương pháp kiểmtracácbiểuthức điềukiệntrênhaigiátrị true và false; • Đặc điểm: Cầnxemxétkếthợpcácđiềukiệnvới nhau; •Vídụ: if (x>0 && y>0) x=1; else x=2; Các bộ kiểm tra { (x>0, y>0), (x 0) } sẽ kiểmtratoànbộ các điềukiện; Tuy nhiên: Không thỏamãnvớimọigiátrị input, cầnkếthợpcả xvàyđể thựchiện bướckiểmtra. 28 v1.1013109225
  29. 3.1.5. KIỂM THỬ HỘP TRẮNG THEO VÒNG LẶP •Kháiniệm: Là phương pháp tập trung vào tính hợplệ củacáccấutrúcvònglặp. •Cócácloạikiểmtravònglặp:  Vòng lặp đơngiản;  Vòng lặplồng nhau;  Vòng lặpnốitiếpnhau;  Vòng lặp không cấutrúc. Vòng lặp đơngiảnVònglặplồng nhau Vòng lặp Vòng lặp nối tiếp nhau không cấu trúc 29 v1.1013109225
  30. 3.2. KIẾM THỬ HỘP ĐEN – BLACK BOX TESTING Khái niệm: •Làhìnhthứckiểmthử mà kiểmthử viên không cầnbiết đếncáchthứchoạt động, mã nguồn, xử lý dữ liệubêntrongmộtthànhphần/hệ thống.Côngviệccầnlàmlànhập dữ liệu đầuvàovàkiểmtrakếtquả trả về có đúng như mong muốnhaykhông; •Cònđượcgọilàkiểmthử chứcnăng; •Làphương pháp tậptrungvề mặtyêucầuchứcnăng củasảnphẩm; •Cóthể tạoramộtbộ các điềukiện đầuvàođể kiểmthử tấtcả. Input Results Black Box Kiểm thử hộp đen 30 v1.1013109225
  31. 3.2.1. MÔ HÌNH KIỂM THỬ HỘP ĐEN Mô hình kiểm thử hộp đen Danh sách chức năng Dữ liệu đầu vào Đầu ra liên quan 31 v1.1013109225
  32. 3.2.2. ĐẶC ĐIỂM VÀ MỤC ĐÍCH CỦA KIỂM THỬ HỘP ĐEN • Đặc điểmcủakiểmthử hộp đen:  Bổ xung cho phương pháp kiểmthử hộptrắng để phát hiệnratấtcả các lỗikhác nhau mà kiểmthử hộptrắng không phát hiệnrađược;  Không cầnquantâmđếnthiếtkế,mãnguồnmàchỉ quan tâm đếnchứcnăng đã đề ra củachương trình;  Chỉ dựavàobảnmôtả chứcnăng củachương trình;  Hướng vào các đặctả bên ngoài;  Chủ yếulàkiểmtragiaodiện;  Áp dụng vào giai đoạnsaucủavòngkiểmthử. •Mục đích củakiểmthử hộp đen: Tìm các loại sai liên quan đến:  Chứcnăng: Đủ, đúng đắn;  Giao diệnvào,ra:Đủ,phùhợp đúng và tiệnlợi;  Cấu trúc truy cậpdữ liệu: Thông suốt, đúng đắn;  Thựcthitrôichảy, kịpthời, chịulỗiphụchồi;  Khởi đầu, kếtthúcmỗi quá trình thông suốt. 32 v1.1013109225
  33. 3.2.3. CÁC KỸ THUẬT THƯỜNG DÙNG CHO KIỂM THỬ HỘP ĐEN • Phân chia tương đương - Equivalence Partition Testing; • Phântíchgiátrị biên - Boundary Value Analysis Testing; • Đồ thị Cause-Effect - Cause-effect Graphing Testing; •Kiểm tra hành vi – Behavioural Testing; • Ướclượng lỗi - Error Guessing Testing; •Kiểmthử mọicặp – All-pairs Testing; •Kiểmthử fuzz – Fuzz Testing; •Kiểmthử dựa trên mô hình – Model Based Testing; •Matrậndấuvết – Traceability Matrix Testing; •Kiểmthử thăm dò – Exploratory Testing; •Kiểmthử dựatrênđặctả – Specification-base Testing. 33 v1.1013109225
  34. KIỂM THỬ HỘP ĐEN THEO PHÂN CHIA TƯƠNG ĐƯƠNG (EQUIVALENCE PARTITION) •Làloạikiểmthử chia miềndữ liệuvàocủachương trình thành các lớpdữ liệu đầuvào đạidiện để lập ra các ca kiểmthử theo mỗilớp đó. Phân hoạch tương đương cố gắng xác định các ca kiểmthử mà không bao phủ các lớplỗi, do đógiảmtổng số các kiểm thử sẽđượcpháttriển. •Thựchiện:  Chia dữ liệuvàothànhcácđoạn có cùng hành vi;  Mỗi đoạnlấy đạidiệnmộtsố dữ liệu;  Kiểmthử chỉ thựchiệntrênđạidiện đó;  Nếugiátrịđạidiệnbị lỗithìcácthànhphầncònlạicũng lỗi. • Ưu điểm: Test theo mứctrừutượng nên giảmsố lượng test; •Nhược điểm: Không thể tiếnhànhkiểmthử mọitrường hợpnêncóthể sót lỗi. 34 v1.1013109225
  35. VÍ DỤ •CôngtySTTviếtchương trình trong đócómộthàmtínhgiátrị tuyệt đốicủa mộtsố nguyên. Hãy kiểmthử xem hàm này có thựchiện đúng hay không bằng phương pháp kiểmthử hộp đen theo phân chia tương đương. •Thựchiện: Chia các dữ liệu đầu vào thành hai lớp:  Cách chia 1: . Lớphợplệ là lớpcóloạidữ liệusố nguyên đạidiện đầuvàovàra yêu cầu là (2/2); . Lớpkhônghợplệ là lớpcóloạidữ liệusố không nguyên: đạidiện đầuvàovàrayêucầu là (2,5/2,5).  Cách chia 2: . Lớphợplệ là lớpcóloạidữ liệusố dương: Đạidiện đầuvàovàra yêu cầu là (2/2); . Lớpkhônghợplệ là lớpcóloạidữ liệusố âm: Đạidiện đầuvàovàra yêu cầulà(-5/-5). 35 v1.1013109225
  36. KIỂM THỬ HỘP ĐEN THEO PHÂN TÍCH GIÁ TRỊ BIÊN - BVA (BOUNDARY VALUE TESTING) • BVA là kỹ thuậtkiểmthử bổ sung thêm cho phân hoạch tương đương, nó dựatrên giá trị biên củavùngdữ liệuhợplệ; •Thayvìchọnbấtcứ phầntử nào củalớptương đương, BVA chọn các ca kiểmthử sát vớilớptương đương; •Thayvìtậptrungvàođiềukiện vào, BVA còn đưaracáccakiểmthử từ miềnra; •BVAchorằng số lớncácsaixuấthiện ở biên nhiềuhơn là vùng dữ liệu trung tâm. Không những chú ý đếndữ liệu trong và sát biên mà còn chú ý đếndữ liệungoài và sát biên; •Thựchiện:  Phân đoạntương tương tậpcácgiátrị dữ liệu vào thành các lớp;  Chọncácgiátrịởbiên củamỗilớp;  Chọncácgiátrị trên và dướicủabiên. 36 v1.1013109225
  37. VÍ DỤ •Mộttrường dữ liệucóđịnh dạng dữ liệusố nguyên là 3. Tứclàchỉ chấpnhậncácgiá trị nguyên, lớnhơnhoặcbằng 0, và nhỏ hơnhoặcbằng 999 (0<= x <=999); •Cácgiátrị biên là 0 và 999; •Kiểmthử theo giá trị biên nhằm đảmbảohệ thống chỉ chấpnhậncácgiátrị xlớnhơn hoặcbằng 0 và nhỏ hơnhoặcbằng 999 mà không chấpnhậncácgiátrị nhỏ hơn0 hoặclớnhơn 999. 37 v1.1013109225
  38. 3.1.2. KIỂM THỬ HỘP TRẮNG VỚI CÁC CÂU LỆNH (tiếp theo) Các bướckiểmthử hộptrắng vớicáccâulệnh: •Dùngtàiliệuthiếtkế hay mã nguồn để vẽ thuậttoáncủachương trình hay hàm; •Xácđịnh đồ thị V(G); •Từđồthị V(G) xác định tập đường độclậptuyếntínhlẫn nhau; •Xâydựng trường hợpkiểmthử dựatrêntập đường độclậptuyếntínhở trên. 38 v1.1013109225
  39. ĐƯỜNG ĐỘC LẬP TUYẾN TÍNH • Để đảmbảocáccâulệnh đều đượckiểmthử ít nhấtmộtlần, ta cầntìmtấtcả các đường điềukhiển độclậptrongchương trình, tứclàmỗi đường khác vớicácđường khác ít nhấtmộtlệnh; •Số các củamộtchương trình là giớihạntrêncủasố các kiểmthử cầnphảitiếnhành. Nó đượcgọilàđộ phứctạpchutrìnhcủachương trình; •Mộttậpcơ bảnconđường độclậplàtập:  Mọicạnh của đồ thị dòng đềucómặttrongmộtconđường củatậpnày;  Mỗiconđường củatập đó đềuchứaítnhấtmột cung không có mặttrongmọi con đường khác củanó;  Số lượng các con đường củatậpnàychotasốđo độ phứctạpchutrìnhcủamột chương trình. 39 v1.1013109225
  40. ĐÁNH GIÁ ĐỘ PHỨC TẠP CỦA ĐỒ THỊ DÒNG Đánh giá độ phứctạpcủa đồ thị dòng: Độ phứctạpchutrìnhV(G)đốivới1đồ thị dòng G được định nghĩalà: V(G) = Số miềnphẳng; V(G)=E-N+2; V(G)=P+1. Trong đó: E là số cạnh; Nlàsố nút của đồ thị dòng; Plàsố nút vị từ. V(G) cung cấpsố các đường đi độclậptrongmộtchương trình và nó đượccoilàcận trên củasố lượng kiểmthử phảitiếnhànhđể đảmbảomỗilệnh đều đượcthựchiệnít nhấtmộtlần. 40 v1.1013109225
  41. CÁC ĐƯỜNG CƠ BẢN CỦA ĐỒ THỊ DÒNG Tuần tự if while until case • Đồ thị dòng (đồ thị chương trình) gầngiống dòng điềukhiển. •Nólàmột đồ thị cấutrúcgồm:  Mỗi nút (hình tròn) biểuthị mộtsố (hoặccóthể là 0) câu lệnh thủ tục;  Mỗicạnh nối hai nút biểudiễndòngđiềukhiển;  Chia mặtphẳng thành nhiềumiền;  Một nút là vị từ nếunóbiểuthị sự phân nhánh hoặchộinhậpcủacung. • Đồ thị dòng dùng để biểudiễnthiếtkế thủ tục. 41 v1.1013109225
  42. VÍ DỤ 1 s1 1 float foo(int a, int b, int c, int d) { c1 2 float e; 3 if (a==0) s2 4 return 0; s3 5 int x = 0; 6 if ((a==b) || ((c==d) && bug(a))) c2 7 x = 1; 8 e = 1/x; s4 9 return e; s5 10 } 42 v1.1013109225
  43. VÍ DỤ 2 double average(double value[], double min, double max, int& tcnt, int& vcnt) { double sum = 0; 1 1 int i = 1; tcnt = vcnt = 0; 2 2 while (value[i] 0) return sum/vcnt; return -999; 10 9 } 12 43 v1.1013109225
  44. VÍ DỤ 2 (tiếp theo) 1 Đồ thị bên có 5 nút quyết định nhị phân nên có độ phứctạpC=5+1=6.6đường thi hành tuyếntính 2 độclậplà: •1 2 10 11 3 10 •1 2 3 10 11 •1 2 10 12 4 12 •1 2 3 4 5 8 9 11 5 •1 2 3 4 5 6 8 9 •1 2 3 4 5 6 7 8 9 6 7 8 9 44 v1.1013109225
  45. VÍ DỤ 2 (tiếp theo) • Test case cho đường 1 2 10 11:  value(k) -999, với k 100;  Kết quả kỳ vọng: (1) average = Giá trị trung bình của 100 giá trị hợp lệ. (2) tcnt = 100. (3) vcnt = 100. • Test case cho đường 1 2 10 12:  value(1) = -999;  Kết quả kỳ vọng: (1) average = -999. (2) tcnt = 0. (3) vcnt = 0; 45 v1.1013109225
  46. VÍ DỤ 2 (tiếp theo) • Test case cho đường 1 2 3 4 5 8 9:  value(i) -999 với i max với k -999 và min <= value(i) <= max với i <= 100  Kết quả kỳ vọng: (1) average = Giá trị trung bình của 100 giá trị hợp lệ. (2) tcnt = 100. (3) vcnt = 100. 46 v1.1013109225
  47. KIỂM THỬ HỘP ĐEN THEO ĐỒ THỊ CAUSE-EFFECT (CAUSE-EFFECT GRAPHING) •Làkỹ thuậtkiểmthử phân tích việckếthợpcácđiềukiệnvào,tạomột đồ thị kếtnối nguyên nhân – kếtquả (cause-effect). Trong đó, nguyên nhân (cause) là đầuvàovà kếtquả (effect) là đầura. •Cácbướctiến hành:  Lập danh sách các nguyên nhân (điềukiệnvào)vàkếtquả (hành động) cho từng môđun và gán giá trịđịnh danh cho chúng;  Phát triển đồ thị nhân quả;  Chuyển đồ thịđóthànhbảng quyết định;  Sử dụng các quy luậtcủabảng quyết định để xây dựng các ca kiểmthử. 47 v1.1013109225
  48. KIỂM THỬ HỘP ĐEN THEO ĐỒ THỊ CAUSE-EFFECT (CAUSE-EFFECT GRAPHING) Các ký hiệutrongđồ thị nhân quả a b a b c a b c a b a b a b a b a b 48 v1.1013109225
  49. KIỂM THỬ HỘP ĐEN THEO ĐỒ THỊ CAUSE-EFFECT (CAUSE-EFFECT GRAPHING) STT Ký hiệu Ý nghĩa Giải thích 1 Tương đương Nếu đúng thì đúng. 2 AND (và) Nếu đúng và đúng, thì đúng. 3 OR (hoặc) Nếu đúng hoặc đúng, thì đúng. 4 NOT (phủ định) Nếu sai, thì đúng. Nếu đúng, thì sai, hoặc nếu sai, 5 Loại trừ thì đúng. 6 Bao hàm bao hàm 7 Yêu cầu yêu cầu 49 v1.1013109225
  50. VÍ DỤ KIỂM THỬ HỘP ĐEN THEO ĐỒ THỊ CAUSE-EFFECT Có modun chương trình tính thuế thu nhập, có mô tả sau: •Ngườivôgiacư nộp4%thuế thu nhập; •Người có nhà ở nộpthuế như sau:  Tổng thu nhập 5.000.000 đồng thì nộpthuế 6%. Bảng quan hệ nguyên nhân và kếtquả Nguyên nhân Kết quả Người có nhà ở: Tổng thu nhập 5.000.000 đồng Nộp 6% thuế 50 v1.1013109225
  51. VÍ DỤ KIỂM THỬ HỘP ĐEN THEO ĐỒ THỊ CAUSE-EFFECT Đồ thị nguyên nhân và kếtquả Trường hợp kiểm thử 1 2 3 4 Nguyên nhân và kết quả Nguyên nhân Người có nhà ở Y Y N Có tổng thu nhập 5.000.000 Y N K ế t qu Nộp thuế 4% X X X ả Nộp thuế 6% X 51 v1.1013109225
  52. 4. CÁC CHIẾN LƯỢC KIỂM THỬ 4.1. Kiểmthử trên xuống (Top-down Test) 4.2. Kiểmthử từ dưới lên (Bottom-up Test) 4.3. Kiểmthử cộttrụ (Big bang Test) 4.5. Kiểmthử kẹp(SandwichTest) 52 v1.1013109225
  53. 4.1. KIỂM THỬ TỪ TRÊN XUỐNG DƯỚI – TOP-DOWN TEST •Môđun điềukhiển chính đượcdùngnhư trình điềukhiểnkiểmthử chính, gắndầncác mô đun từ trên xuống theo trậttự dòng điềukhiển. Bắt đầutừ mô đun điềukhiển chính, sau đógắntừng mô đun phụ trợ vào mô đun điềukhiểnthượng cấp. Có thể theo hai cách:  Theo chiềusâutrước;  Theo chiềurôngtrước. •Kiểmthửđượctiếnhànhkhitừng môđun đượctíchhợpvàohệ thống. Các nút thử xong thì thử tiếpnútkhác; •Cầncócáccuống kéo theo những khó khăndànhchocuống, có ngay chứcnăng điều khiểnhệ thống. 53 v1.1013109225
  54. TIẾN TRÌNH KIỂM THỬ TỪ TRÊN XUỐNG Tiếntrìnhnàygồm6bướcnhư sau: •Môđun điềukhiểnchínhđượcdungnhư bộ lái kiểmthử (Test Driver) và tấtcả các mô đun phụ trợ trựctiếp đượcthaythế bởicáccuống (Stub); •Thaythế dầntừng cuống bằng các mô đun thựcthitương ứng; •Saukhitíchhợpmôđun đó, tiếnhànhkiểmthử tương ứng; • Khi hoàn thành kiểmthử này thì thay thế mộtcuống khác bằng mô đun thực (nghĩalàquaylạibước2); •Cóthể kiểmthử lại(toànbộ hoặc1phầncáckiểmthử trước - kiểmthử hồiquy) để đảmbảokhôngcósaimớinàosinhra; •Tiếptụclặplạibướchaichođếnkhitoànbộ chương trình cấutrúcđượcxâydựng. Kết hợp Kết hợp Hệ cần kiểm thử theo chiều rộng theo chiều sâu 54 v1.1013109225 Sơ đồ ví dụ kiểm thử từ trên xuống
  55. 4.2. KIỂM THỬ TỪ DƯỚI LÊN (BOTTOM-UP TEST) •Bắt đầuxâydựng kiểmthử từ các mô đun nguyên tố; •Việcxử lý nếucóđòi hỏicácmôđun phụ trợ thì các mô đun chính đãsẵnsàng (cuống đãbị loại); • Luôn chưacóchương trình chỉnh thể,thiếtkế các ca kiểmthử dễ không cầncuống; •Thựchiệntheo4bước:  Các mô đun mứcthấp đượctíchhợpthànhcáccụmthựchiệnmộtchứcnăng phụ trợ nhất định;  Mộtbộ lái đượcviết để phốihợp đầuvàovàđầuracủa các ca kiểmthử;  Kiểmthử cụm đó;  Tháo bỏ các Driver và các cụmtổ hợpngượclêntrongcầutrúcchương trình. 55 v1.1013109225
  56. VÍ DỤ Vòng 1 Vòng 2 Vòng 3 56 v1.1013109225
  57. 4.3. KIỂM THỬ CỘT TRỤ (BIG BANG TEST) •Tíchhợpkhôngtăng dần; •Tấtcáccácmôđun đều đượctổ hợptrước; •Toànbộ chương trình đượckiểmthử tổng thể; •Khókhăn:Khócôlậplỗi, khi chữaxonglỗinàycóthể lỗimớilạiphátsinh. 57 v1.1013109225
  58. 4.4. KIỂM THỬ KẸP (SANDWICH TEST) Phương pháp kiểmthử hỗnhợp(Sandwich)cóthể là phương pháp phù hợpnhất: •Tíchhợptrênxuống cho các mứctrêncấutrúcchương trình; •Tíchhợpdướilênchocácmứcphụ thuộc. 58 v1.1013109225
  59. 5. CÁC CẤP ĐỘ KIỂM THỬ 5.1. Kiểmthửđơnvị 5.2. Kiểmthử tích hợp 5.3. Kiểmthử hệ thống 5.4. Kiểmthử chấpnhậnsảnphẩm 5.5. Mộtsố cấp độ kiểmthử khác 59 v1.1013109225
  60. 5.1. KIỂM THỬ ĐƠN VỊ (UNIT TESTING) •UnitTestinglàviệckiểmthửởmức độ thấpnhấtlàcácphương thức(Method),hàm (Function), lớp (Class) trong mã nguồn. Nhằm đảmbảocácthànhphầntrênhoạt động đúng như yêu cầu; •Việckiểmtraở mức độ này thường do chính các lập trình viên (Developer) thựchiện trong quá trình mã hóa (Coding, Implement); •Mộtmôhìnhthường được ứng dụng vớiUnitTestinglàPháttriểntheođịnh hướng kiểmthử (Test-Driven Development):  Các Unit Test viếttrướcdựatheoyêucầukếtquả trả về ban đầu là sai (False);  Mã nguồnsẽđượcviếtsauvàđượckiểmtratựđộng bằng các Unit Test;  Việcpháttriển được hoàn thành khi các Unit Test trả về kếtquảđúng (True). •TrongISTQB(phiênbản 2007), khái niệmUnitTestingđượchiểu là Component Testing. Lý do là các công việctrênđượcthựchiệnbởilậptrìnhviên.Cáctàiliệutrên phân loạidướiquanđiểmcủamộtkiểmthử viên. 60 v1.1013109225
  61. ĐẶC ĐIỂM CỦA KIỂM THỬ ĐƠN VỊ (UNIT TEST) •Ngườitiếnhànhkiểmthử thông thường là ngườilậptrìnhmôđun đóhoặc lập trình viên cùng nhóm; •Kiểmthử riêng biệttừng đơnvị phầnmềm; •Số lượng nhiềunhưng đơngiản; •Xuyênsuốtthờigianlậptrìnhvàcả chu kỳ phầnmềm; •Kiểmthử Unit là mứcthấpnhấttrongtiếntrìnhkiểmthử,thường là áp dụng phương pháp kiểmthử hộptrắng; •Thường là đượcthựchiệnbớinhàpháttriểntrướckhicácmôđun đượctích hợpvớicácmôđun khác; •Kếtquả củakiểmthử Unit thường tìm ra khoảng 20% lỗitrongtấtcả cá lỗi củadự án. 61 v1.1013109225
  62. PHƯƠNG PHÁP GÌ ĐƯỢC ÁP DỤNG CHO KIỂM THỬ ĐƠN VỊ •Nókiểmthử các phầnsau:  Thử nghiệmgiaodiện;  Khám nghiệncấutrúcdữ liệucụcbộ;  Thử nghiệmvớicácđiềukiệnbiên;  Các đường độclập;  Các đường xử lý sai. •Kiểmthửđơnvị sử dụng các kỹ thuật:  Kiểmthửđường cơ sở;  Kiểmthử vòng lặp;  Kiểmthử biên. 62 v1.1013109225
  63. 5.2. KIỂM THỬ TÍCH HỢP •Kiểmthử Tích hợp (Intergration Testing): Là mộtkỹ thuậtcótínhhệ thống để xây dựng cấutrúcchương trình ngay khi đang tiếnhànhkiểmthửđểphát hiện sai liên kếtvớigiaodiện. •Phảikiểmthử tích hợpvì:  Dữ liệucóthể bị mấtkhiđiquamộtgiaodiện;  Mộtmođun có thehẻ có mộthiệu ứng bấtlợivôtìnhlêncácmôđun khác;  Các chứcnăng phụ khi kếthợplạicóthể không sinh ra chứcnăng chính mong muốn;  Các điềukhôngchínhxácriêngrẽ có thể bị phóng đại đếnmức không chấp nhận được;  Các cấutrúcdữ liệutoàncụccóthểđểlộ ra các vấn đề •Phương pháp đượcápdụng cho kiểmthử tích hợp  Phương pháp “big-bang”;  Phương pháp trên xuống;  Phương pháp dướilên. 63 v1.1013109225
  64. 5.3. KIỂM THỬ HỆ THỐNG Kiểmthử hệ thống (System Testing): •Làmức độ kiểmthử toàn bộ các chứcnăng củahệ thống phầnmềm. Bao gồmtấtcả các thành phầntương tác với nhau, và hoạt động trong môi trường giống như môi trường thựctế như hệđiềuhành,cơ sở dữ liệu, kếtnốimạng, khả năng tương thích vớicácphầnmềmkhác, •Kiểmthử hệ thống cũng chú ý đếnvấn đề bảomật, thân thiện, khả năng đáp ứng, tốc độ thựchiệncủahệ thống phầnmềm. 64 v1.1013109225
  65. 5.4. KIỂM THỬ CHẤP NHẬN SẢN PHẨM Kiểmthử chấpnhận (Acceptance Testing, User Acceptance Testing): •Mức độ này đượcthựchiệnbởiphíangười dùng vớimộtnhómđộclậpvới nhóm phát triển. Mục đích củagiaiđoạnnàylàkiểmtra,đánh giá phầnmềmcóđáp ứng đượccácyêucầucủangườidùngđã đề ra hay không? Có thể triển khai cho công việcthựctế củangườidùnghaykhông; •Việc đượcngườidùngchấpnhậnsẽđánh dấuchosự kếtthúccủagiaiđoạnphát triển, mở ra giai đoạntriểnkhai,bảotrìvànângcấpphầnmềm. •Cácloạikiểmthử chấpnhậnsảnphẩm:  Kiểmthử Alpha (Alpha Testing): . Do người dùng thựchiện; . Trong môi trường đượcquảnlý.  Kiểmthử Beta (Beta Testing): . Do người dùng thựchiện; . Trong môi trường thực. 65 v1.1013109225
  66. 5.5. MỘT SỐ CẤP ĐỘ KIỂM THỬ KHÁC •Kiểmthử hộp xám (Gray-box Testing): Là hình thức“lai”giữakiểmthử hộp đen và kiểmthử hộptrắng; •Kiểmthử bằng tay (Manual Testing): Là kỹ thuậtkiểmthử mà các công đoạn được làmhoàntoànbằng sứcngười; •Kiểmthử tựđộng (Automation Testing): Là kỹ thuậtkiểmthử vớicáccôngđoạn được tựđộng hóa bởi máy tính thông qua các “đoạnmãkiểmthử”(Test Script) 66 v1.1013109225
  67. TÓM LƯỢC CUỐI BÀI • Đã trình bày các khái niệmvề kiểmthử,vòngđờicủakiểmthử và mối tương quan giữaquátrìnhxấydựng phầnmềm và các giai đoạnkiểmthử phầnmềm; • Đãtrìnhbàyđượccácphương pháp kiểmthử và mộtsố ví dụ tương ứng; • Đãtrìnhbàyđượccáckỹ thuậtkiểmthử và mộtsố vì dụ tương ứng; • Đãtrìnhbàyđượccácmức độ kiểmthử và mộtsố ví dụ tương ứng 67 v1.1013109225