CHƯƠNG 1: GIOL THIEU VE KIEM THU PHAN MEM Một nghiên cửu được tiến hành bởi NIST trong những năm gần đây cho biết rằng, các lỗi phần mêm gây tên thật cho nên kinh tế Míỹ một con số đáng kế, hơn một phan ba chỉ phí này có thể tránh được nếu việc kiểm thử phẩn mềm được thực hiện tốt hơn. Người 1a thường tin rằng, một kiếm khuyết nêu được tim ra sóm hơn thủ chỉ phí để sửa chữa nó sẽ rẻ hơn. Do vậy kiểm thử phản mềm là hoạt động vô củng, quan trọng trong chu trình phát triển phan mềm ở các công ty công nghệ hiện nay. - Giới thiệu về kiểm thử phần mềm Kiểm thử phần mềm là quá trình thục thị Ï chương trình với mục đích tìm ra lỗi.
Kiểm thứ phẩn mềm đảm bão phần mềm đáp ứng chính xác, đầy đủ và đúng theo yêu cầu. của khách hàng, yêu câu của sản phẩm đã đặt ra. Kiểm thử có thể cang cấp cho doanh: nghiệp một quan diễm, một cach nhin độc lập về phan mém dé tir dé cho phép danh gia và thầu Tiêu được T4 ing rdi ro trong quá trình triển khai phần mềm El Các mục tiêu chinh của kiếm thử phản mềm: v“_ 'Trong thời gian xác định trước, kiểm thử viễn tìm được cảng nhiều lỗi cảng tốt. ¥ Dam bdo ring phần mềm cuối củng phủ hợp với các yêu câu đặc tả của nó.
+“ Đo lường chất lượng của sản phẩm và dư ản. kịch bản kiểm thử (Iestcasc) chất lượng cao, thực hiển kiểm thử hiệu qua dưa ra các báo cáo chính xác. Kiểm thử tự đông là thạc hiện kiểm thé phin mém bang một chương trình dặc biệt với rất ít hoặc không có sự tương tác của con người, giúp kiểm thử viên không phải lắp đi lấp lại các bước nhằm chán Trong kiểm thử tự động, có các Testscripl được viết sẵn và chạy tự đông để so sánh kết quả thực tế với kết quả mong đợi. Kiếm thử tư động hoạt đông rất hiệu quả khi cân thực hiện các kiểm tra lặp lại và hỏi quy để đâm bảo rằng một ting dung hoạt động chính xác sau khi có thay đổi mới.
Các TestScript chạy với sự trợ giúp của các công cụ, tập lệnh và phan mém đề thực hiện các hành động được xác định. trước được viết trong, kịch bản kiểm thử Trong một số đự án, kiểm thử phân mẻm chiếm khoảng trên 50% tổng gia phát triển phần mẻm. 12o dó một trong các mục tiêu của kiểm thử là tự động hóa kiểm thứ, nhờ do ma giảm thiểu chủ phí rất nhiêu, tối thiểu hỏa các lỗi do người gây ra, đặc biệt giúp việc kiểm thứ hỏi qui để dàng và nhanh chóng hơn. Uu điểm của kiểm thử tự động.
Tinh hiéu qué trong công việc: Ưu điểm lớn nhất của kiểm thứ tự động là thay thể cơn nguời lặp đi lặp lại đúng quy tắc các bước kiêm thứ nhằm chân, tránh được hao phi vé mit thai giarL b. BS tin ey: Dil lip di lip lai nhiéu lin van cho va kél. qua giéng nhau do vay dé én định cao, tránh được rủi ro có thê phat sinh. Céi thién chất lượng: Kiểm thử tự dộng làm giảm rui ro vé mat chat lugng sin phẩm, việc kiểm thử dược thực hiện một cách nhanh chóng, Có thể tải sử dụng các trường hợp kiểm thử đ Tốc độ xử lý eve nhanh: Nếu mắt 5 phút để kiểm thử thủ công ủ chỉ cần muật 30s TIỂU.
dụng m lờ tự động, e. Chi phi thap: V rút ngắn thời gian và tiết kiệm rhhân lực giúp cho việc kiểm thử tự động trở nên hiệu quả điểm của kiểm thứ tự động. Ban đầu thì clú phú cho kiểm thử tự động sẽ cao hơn kiểm thữ thủ sông b. Để kiểm thử tự động tưực hiện được thì vẫn cần cơn người phải bộ thời gian, công, sức và tiến bạc, Mắt chỉ phí cho các công cụ tự động hóa như bản quyén, bao tri, tim hiéu, training.
mo Khó mở rộng hơn nhiều so với kiểm thử thủ công Yêu cầu những người có trinh độ chuyên môn cao mới thực hiện được mũ Sẻ lượng công việc phải làm để mở rộng cho kiểm thử tự động sẽ nhiễu và khó hơn so với kiểm thứ thủ công. Phát triển hướng kiểm thử LDD (Tcst Driven Development} 1. Khải niệm Phát triển hưởng kiểm thứ LDI) (Test Driven 13evelopment) lả một phượng thức làm việc, hay một quy trình viết mã hiện dại. Lập trình viên sẽ thực hiện thông qua các tước nhỏ và tiễn độ dược dâm bão liên tục bằng cách viết và chay các bài kiểm thử tự động.
Quá trình lập trình trong TDD cục kỳ chủ trọng vào các bước liên tục sau: a. Viết ] kịch bản kiểm thử cho ham mới. Đảm báo rằng kiểm thử sẽ bị sai. Chuyển qua lập trình sơ khai nhất cho hàm đó để kiểm thử có thể đúng c Tổ uu hoa đoạn mất nguồn của li vừa viết sao cho đâm bảo kiểm thử vẫu ding và tỗi ru nhật cho việc lập trình kế tiếp d Lap lai cho các hàm khác từ bước 1.
Thực tế, nên sử đựng InitTestFramework cho TDD (nhu JUnit trong Java), chúng ta có thể có được môi trường hiệu quả vì các kiểm thử được thông báo rõ rảng thông qua râu sắc: © Bo: kiém thử sai chuyển sang viết chức năng cho kiếm thử đứng «Xanh lá viết một kiểm thử mới hoặc tối ưu mã nguồn dã viết trong màu đồ. Phát triển huéng kié thir ‘DD (Test-Driven Development) 1a kết hợp phương, pháp Phát triển kiểm thử trước (Test First Development) va phuong phap Điều chỉnh lại ma nguén (Refactoring) Mục tiêu quan trọng nhất của TDD là nghĩ về thiết kế trước khi viết mã nguồn cho chức năng. Một quan điểm khác lại cho rằng 'T12D là một kỹ thuật lập trình. Nhưng nhịn chung, muc tiêu của TDD là v ã nguồn sang sila, rố rằng và có | 1001212 WRITE A TEST TEST FAILS Test Driven Development 'WRITE CODE TO MAKE ST PASS (490) 22 CS150/23/ Hinh 1.
Chu trinh TDD qua màu sắc (từ trang Iminus1.com) Ba diéu luat khi ap dung TDD © Khéng cho phép viet bat ky một mã chương trình nào cho tới khi nó làm một kiểm thử bị sai trở nên đúng. «_ Không cho phép viết nhiều hơn một kiểm thử đơn vị mà nêu chỉ cân 1 kiểm thử đơn vị cũng đã đủ đề sai. Hãy chuyên sang lập trình chức năng đề làm đủng kiểm thử đó trước. «- Không cho phép viết nhiều hơn 1 mã chương trình mả nó đã đủ làm một kiểm thử bị sai chuyên sang đúng Các bước thực hiện trong chu trình TDD 15 | | Create/add a new test.
Does the test fail? Hinh 1. Cac bude thire hign TDD Tie trang hitp://agiledata.org/essays/tdd. Các cấp dp TDD Mức chấp nhận (Acceptance TDD (ATDĐ)): với ATDD thì bạn viết một kiểm thử chấp nhận đơn hoặc một đặc tá hảnh vị (behavioral specification) tủy theo cách gọi của bạn; mã kiểm thứ đỏ chí cân đú cho các mã chương trình sản phẩm thực hiện (đúng hoặc sai) được kiểm thử đó. Mức chấp nhận (Acceptance DD) con duge goi la Behavior Driven Development (BDD).
Mức lập trình (Lập trình viên †): với mức này bạn cân viết một kiểm thứ lập trình đơn (single lap trinh vid test) đôi khi được gợi là kiểm thử đơn vị mà kiểm thử đó chỉ cần đỗ cho các mã chương trình sân phẩm thực hiện (đứng hoặc sai) được kiểm thữ đó. Múc lập trình (Lập trình viên TDD) thông thường được gọi là TDD.Vậy nên, thực chất BDD là 1 loại TDD, và người ta thường gọi Lập trình viên TDD là TDD 123. Cúc lỗi thưởng gặp khi áp dụng TDD. Không quan tâm đến các kịch bản kiểm thử bị sai.
Quên dị thao tác tối ưu sau khi viết mã nguồn cho kịch bán kiểm thử dùng,. Thực hiện tối ưu mã nguồn trong lúc viết mã nguôn cho kiểm thử đúng,. Đặt tên các kịch bản kiểm thử khó hiểu và tôi nghĩa. Không bắt đầu từ các kiểm thử dơn giản nhất và không theo các bước nhỏ & Chỉchay mỗi kịch bản kiểm thử dang bi sai hiện tại.
Viết một kịch bản kiểm thứ với kịch bản quá phức tạp 13. Phát triển hướng hành vi BDD (Behaviour Driven Development) 1. Khải niệm Phat trién hướng hành vị Behayiour Driven Development (B12D) là một quả trình phát triển phần mém cô nguồn gốc từ Test Driven Development (TDD). BDD sử dụng, các ví dụ để mình họa hành ví của hệ thông dược viết bằng ngôn ngữ để đọc và đễ hiểu đổi với tất cổ mọi người tham gia vào quá trình phát triển 'Thay vỉ chờ đợi sản phẩm hoàn thành và kiểm thử, đột ngũ phát triển tham gia vào quả trình xây dựng rnã nguồn với vai trò phân tích và xây dung hệ thống kịch bản kiểm thử dưới góc độ ngôn ngít tự nhiên dễ hiểu từ các yêu cầu (requirement).
Dang thai, ho giúp đỡ lập hình viên trong việc giải thích và đưa m các phương án xây dựng mã nguồn mang tỉnh thực tiễn với người đảng ngay trước khi bắt tay xây đựng. Người lập trình viên liên hệ mật thiết với người kiếm thử viên và xây đựng mã nguồn với những phương án. ma kiém thử viên cưng cấp theo mé hinh TDD. Write a failing feature test [Pass, Functionality developer tests, omen IPass, Functionality completo} m Development stops} iỊ 1 Acceptance TDD { Developer TDD Hình 1.
Chu trình làm việc kết hợp TDD và BDD (Tir trang http://agiledata.org/essays/tdd htm!) 18 1. Quy trình phat trién phần mềm truyền thống et AO oe._ ạco_— QO ` @ dạ $ A traditional development process Hình 1. Quy trình phát triển truyền thông (Tir trang http://agiledata org/essays/tdd html) (Tu trang BDD in action (Behavior-Driven Development for the whole software lifecycle) - John Ferguson Smart (Foreword by Dan North)) Trong quy trình phát triển truyền thông, việc phân tich cac yéu cau (requirements) thường được tiển hành bởi chuyên viên phân tích nghiệp vụ (BA) một cách chuyên hỏa và khí đến giai đoạn xây dumg (implementing phase) thi da phân các lập trình viên tiếp xúc với các yêu câu phân mềm dưới đạng các bản thiết kế. Họ chỉ quan tâm đến đầu vảo, đầu ra (Input, Output) của tính năng mình xây dựng mả thiểu đi cái nhìn thực tiễn từ góc nhin người dùng (end-users).
Một hè quả tắt yêu là lỗi phần mềm đến từ việc sản phầm. ko tiện dụng với người ding. Quy trình phát triển theo luướng BDD. BA the developer and the tester elaborate the The developer requirements together A @ ; “ye fed, ( 6 Cốc ng 5 , J» lð ee eae ‘rT ‘The automated tester œ +~ Leon: The development process is applying BOD 19 Hinh 1.
Quy trình phát triển BDD (Tit trang http://agiledata.org/essays/tdd htm!