Bài giảng Phát triển hệ thống thông tin kinh tế - Chương 8: Kiểm thử hệ thống
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phát triển hệ thống thông tin kinh tế - Chương 8: Kiểm thử hệ 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:
- bai_giang_phat_trien_he_thong_thong_tin_kinh_te_chuong_8_kie.pdf
Nội dung text: Bài giảng Phát triển hệ thống thông tin kinh tế - Chương 8: Kiểm thử hệ thống
- PHÁT TRIỂN HỆ THỐNG THÔNG TIN KINH TẾ • Triển khai và vận hành hệ thống Phần 4 Chương 8: Kiểm thử hệ thống Chương 9: Cài đặt hệ thống Chương 10: Bảo trì hệ thống
- Chương 8: Kiểm thử hệ thống 1. Khái niệm kiểm thử 2. Các nguyên tắc kiểm thử 3. Cấp độ kiểm thử 4. Các chiến lược kiểm thử phần mềm 2
- 1. Khái niệm kiểm thử 1. Định nghĩa và mục tiêu kiểm thử 2. Các nguyên tắc kiểm thử 2. Các loại lỗi trong kiểm thử 3. Cấp độ kiểm thử 3. Những tài liệu cần thiết 4. Các chiến lược kiểm thử phần mềm 4. Tiến trình kiểm thử IEEE: Kiểm thử phần mềm là quá trình khảo sát một thành phần hay một hệ thống dưới những điều kiện xác định nhằm quan sát và đánh giá một khía cạnh nhất định của thành phần hay hệ thống đó. The Art of Software Testing–Nghệ thuật kiểm thử phần mềm: Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm lỗi. Kiểm thử sản phẩm phần mềm là quá trình xây dựng một cách có chủ đích những tập dữ liệu và dãy các thao tác nhằm đánh giá một số hoặc toàn bộ các tiêu chuẩn của phần mềm để đảm bảo rằng phần mềm thỏa mãn các yêu cầu của chúng và các yêu cầu đó thỏa mãn các yêu cầu của khách hàng. Kiểm thử có các mức khác nhau và được tiến hành bởi các cá nhân khác nhau trong quá trình phát triển ứng dụng. Có kiểm thử được tiến hành bởi đội ngũ dự án và có kiểm thử được tiến hành bởi các cơ quan bên ngoài để chấp nhận ứng dụng. 3
- 1. Khái niệm kiểm thử 1. Định nghĩa và mục tiêu kiểm thử 2. Các nguyên tắc kiểm thử 2. Các loại lỗi trong kiểm thử 3. Cấp độ kiểm thử 3. Những tài liệu cần thiết 4. Các chiến lược kiểm thử phần mềm 4. Tiến trình kiểm thử Mục tiêu của kiểm thử là phát hiện càng nhiều lỗi của phần mềm càng sớm càng tốt, đặc biệt là những lỗi nghiêm trọng. Kiểm thử có hai mục tiêu là kiểm thử hợp lệ và kiểm thử khiếm khuyết nhằm đảm bảo rằng tất cả các thành phần của ứng dụng được vận hành như mong đợi và phù hợp với các tiêu chuẩn thiết kế. – Kiểm thử hợp lệ: để chứng minh cho đội ngũ phát triển và khách hàng thấy phần mềm đã thoả mãn mọi yêu cầu hay chưa? Kiểm thử hợp lệ thành công khi hệ thống đã vận hành như mong đợi. – Kiểm thử khiếm khuyết: nhằm phát hiện các lỗi hoặc những khiếm khuyết của phần mềm và kiểm tra xem chức năng của nó có chính xác hoặc phù hợp với tài liệu đặc tả của nó hay không. 4
- 1. Khái niệm kiểm thử 1. Định nghĩa và mục tiêu kiểm thử 2. Các nguyên tắc kiểm thử 2. Các loại lỗi trong kiểm thử 3. Cấp độ kiểm thử 3. Những tài liệu cần thiết 4. Các chiến lược kiểm thử phần mềm 4. Tiến trình kiểm thử Trong một ứng dụng phần mềm có thể tồn tại ba kiểu lỗi và quá trình kiểm thử sẽ phải xác định được cả ba loại lỗi đó, bao gồm: – Các chức năng của chương trình chạy bị lỗi hoặc ra kết quả không đúng như mong muốn. – Không làm những điều cần phải làm: đây là lỗi bỏ sót thường xuất hiện đối với những ứng dụng mới được phát triển. – Làm những điều không cần làm: đây là lỗi của các lệnh đã cư trú trước trong các ứng dụng bảo trì. 5
- 1. Khái niệm kiểm thử 1. Định nghĩa và mục tiêu kiểm thử 2. Các nguyên tắc kiểm thử 2. Các loại lỗi trong kiểm thử 3. Cấp độ kiểm thử 3. Những tài liệu cần thiết 4. Các chiến lược kiểm thử phần mềm 4. Tiến trình kiểm thử Trước khi thực hiện kiểm thử, đội ngũ kiểm thử phải tìm hiểu ba loại tài liệu sau: – Tài liệu yêu cầu người dùng: để tìm hiểu những yêu cầu, suy nghĩ của khách hàng về phần mềm mà họ mong muốn. Ví dụ khách hàng muốn chỉ những người quản trị mới có chức năng xóa thông tin. – Tài liệu đặc tả: để tìm hiểu những { tưởng, dự định của đội ngũ phát triển khi hiện thực hóa những yêu cầu, mong muốn của khách hàng. Ví dụ người dùng sẽ phải đăng nhập khi muốn truy cập vào hệ thống. – Tài liệu thiết kế: để tìm hiểu cụ thể, chi tiết các giải pháp của đội ngũ phát triển khi triển khai các chức năng của hệ thống. Ví dụ mã nhân viên phải có độ dài 10 k{ tự, trong đó 3 k{ tự đầu chỉ phòng ban, 2 k{ tự sau chỉ loại nhân viên, 5 k{ tự cuối là số thứ tự của nhân viên. 6
- 1. Khái niệm kiểm thử 1. Định nghĩa và mục tiêu kiểm thử 2. Các nguyên tắc kiểm thử 2. Các loại lỗi trong kiểm thử 3. Cấp độ kiểm thử 3. Những tài liệu cần thiết 4. Các chiến lược kiểm thử phần mềm 4. Tiến trình kiểm thử Là trình tự thực hiện kiểm tra hệ thống phần mềm từ khi có yêu cầu kiểm tra cho đến khi hệ thống được hoàn thiện. Các bước thực hiện trong tiến trình kiểm thử gồm: – Lập kế hoạch kiểm thử (Test Plan). – Chuẩn bị môi trường kiểm thử như phần cứng, phần mềm, ngôn ngữ – Thiết kế kiểm thử (Test case). – Thực hiện kiểm thử. – Theo dõi và xử l{ lỗi. – Thống kê báo cáo kết quả kiểm thử. 7
- 1. Khái niệm kiểm thử 1. Định nghĩa và mục tiêu kiểm thử 2. Các nguyên tắc kiểm thử 2. Các loại lỗi trong kiểm thử 3. Cấp độ kiểm thử 3. Những tài liệu cần thiết 4. Các chiến lược kiểm thử phần mềm 4. Tiến trình kiểm thử Mẫu Test case 8
- 1. Khái niệm kiểm thử 2. Các nguyên tắc kiểm thử 3. Cấp độ kiểm thử 4. Các chiến lược kiểm thử phần mềm Nguyên tắc khách quan: người kiểm thử không phải là tác giả của phần mềm đang được kiểm thử. Nguyên tắc ngẫu nhiên: dữ liệu và chức năng được chọn để kiểm thử tuy có chủ đích nhưng không phải xuất hiện theo một thứ tự nhất định. Nguyên tắc "người sử dụng kém": hệ thống được một người sử dụng có trình độ thấp ở mức chấp nhận được dùng thử, người này có thể gây ra các sự cố không lường trước được của hệ thống. Nguyên tắc "kẻ phá hoại": hệ thống rơi vào tay những người có trình độ nghiệp vụ cao, chủ { để phá hoại. Trình độ ở đây thuộc lĩnh vực công nghệ thông tin hoặc lĩnh vực mà phần mềm đang xây dựng. Khi phát triển phần mềm cần đảm bảo nguyên l{ an toàn là mọi lỗi dù nhỏ hay lớn đều phải được phát hiện ở một bước nào đó trong quá trình xây dựng phần mềm trước khi nó được đưa vào thực hiện. 9
- 1. Khái niệm kiểm thử 2. Các nguyên tắc kiểm thử 3. Cấp độ kiểm thử 4. Các chiến lược kiểm thử phần mềm Trừ các hệ thống nhỏ, còn nói chung không nên kiểm thử nguyên cả khối chương trình mà chia thành các giai đoạn như sau: 10
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Đơn vị - Unit là một thành phần phần mềm nhỏ nhất mà ta có thể kiểm tra được ví dụ như các hàm, các thủ tục, các lớp, hoặc các phương thức. Unit thường có kích thước nhỏ và chức năng hoạt động đơn giản nên không khó khăn trong việc tổ chức, kiểm tra, ghi nhận và phân tích kết quả. Nếu phát hiện lỗi thì việc xác định nguyên nhân và khắc phục cũng tương đối dễ dàng vì chỉ khoanh vùng trong một đơn thể Unit đang được kiểm tra. Nguyên l{ đúc kết từ thực tiễn cho thấy thời gian tốn cho kiểm thử đơn vị sẽ được đền bù bằng việc tiết kiệm được rất nhiều thời gian và chi phí cho việc kiểm tra, sửa lỗi ở các mức kiểm thử sau đó. 11
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Unit Test thường do lập trình viên thực hiện, công đoạn này cần được thực hiện càng sớm càng tốt trong giai đoạn viết mã và trong suốt chu kz phát triển phần mềm. Thông thường, Unit Test đòi hỏi kiểm thử viên phải có kiến thức về cả thiết kế và mã lệnh của chương trình. Mục đích của Unit Test là bảo đảm thông tin vào và ra của Unit là chính xác trong mối quan hệ giữa chúng, điều này đòi hỏi tất cả các nhánh bên trong của Unit đều phải được kiểm tra để phát hiện nhánh phát sinh lỗi. Cũng như các mức kiểm thử khác, Unit Test cũng đòi hỏi phải chuẩn bị trước các tình huống (test case) và kịch bản (script), trong đó chỉ định rõ dữ liệu vào, các bước thực hiện và dữ liệu mong chờ sẽ xuất ra. Các test case và script này nên được giữ lại để tái sử dụng. 12
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Kiểm thử tích hợp kết hợp các thành phần của một ứng dụng và kiểm tra như một ứng dụng đã hoàn thành. Trong khi kiểm thử đơn vị kiểm tra các thành phần riêng lẻ thì kiểm thử tích hợp kết hợp chúng lại với nhau và kiểm tra sự giao tiếp giữa chúng. Kiểm thử tích hợp có 2 mục tiêu chính: – Phát hiện lỗi giao tiếp xảy ra giữa các Unit. – Tích hợp các Unit đơn lẻ thành các hệ thống nhỏ và cuối cùng là hệ thống hoàn chỉnh chuẩn bị cho kiểm thử ở mức hệ thống. 13
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Trừ một số ít ngoại lệ, nói chung kiểm thử tích hợp chỉ nên thực hiện trên những Unit đã được kiểm tra cẩn thận trước đó bằng Unit Test. Một số { kiến cho rằng Unit một khi đã qua giai đoạn Unit Test với các giao tiếp giả lập thì không cần phải thực hiện kiểm thử tích hợp nữa nhưng thực tế cho thấy việc tích hợp giữa các Unit dẫn đến những tình huống hoàn toàn khác. Chiến lược thường được sử dụng trong kiểm thử tích hợp là tích hợp dần dần từng Unit vào nhóm các Unit khác đã được tích hợp và kiểm thử tích hợp trước đó. Lúc này, ta chỉ cần kiểm tra giao tiếp của Unit mới thêm vào với hệ thống các Unit đã tích hợp trước đó, điều này làm cho số lượng kiểm thử sẽ giảm đi rất nhiều và sai sót sẽ cũng bị hạn chế 14
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Có 4 loại kiểm tra trong kiểm thử tích hợp: – Kiểm tra cấu trúc: Kiểm tra nhằm bảo đảm rằng các thành phần bên trong của chương trình là chạy đúng, nó chỉ chú trọng đến hoạt động của các thành phần cấu trúc nội tại trong chương trình như các câu lệnh và nhánh lựa chọn (kiểm thử hộp trắng). – Kiểm tra chức năng: Kiểm tra chú trọng đến chức năng của chương trình, khảo sát chúng theo yêu cầu kỹ thuật (kiểm thử hộp đen). – Kiểm tra hiệu năng: Kiểm tra việc vận hành của hệ thống. – Kiểm tra khả năng chịu tải: Kiểm tra các giới hạn của hệ thống. 15
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Kiểm thử hệ thống bắt đầu khi tất cả các bộ phận của phần mềm đã được tích hợp thành công. Mục đích là kiểm tra toàn bộ hệ thống sau khi tích hợp có thỏa mãn các yêu cầu đã đặt ra hay không? Thông thường loại kiểm thử này tốn rất nhiều công sức và thời gian, trong nhiều trường hợp việc kiểm tra đòi hỏi một số thiết bị phụ trợ, phần mềm hoặc phần cứng đặc thù, đặc biệt là các ứng dụng thời gian thực hoặc hệ thống nhúng. Ở mức độ kiểm thử hệ thống, người kiểm thử cũng tìm kiếm các lỗi nhưng trọng tâm là đánh giá về hoạt động, thao tác, sự tin cậy và một số các yêu cầu khác liên quan đến chất lượng của toàn hệ thống. 16
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Điểm khác nhau giữa kiểm thử tích hợp và kiểm thử hệ thống: – Kiểm thử tích hợp chú trọng sự giao tiếp giữa các đơn thể hoặc đối tượng khi chúng làm việc cùng nhau. – Kiểm thử hệ thống chú trọng các hành vi và lỗi trên toàn hệ thống. Kiểm thử hệ thống kiểm tra cả các hành vi chức năng của phần mềm lẫn các yêu cầu về chất lượng như độ tin cậy, tính tiện lợi khi sử dụng, hiệu năng và bảo mật. Mức kiểm tra này đặc biệt thích hợp cho việc phát hiện lỗi giao tiếp với các phần mềm hoặc phần cứng bên ngoài, chẳng hạn các lỗi “tắc nghẽn” hoặc chiếm dụng bộ nhớ. Đòi hỏi nhiều công sức, thời gian, tính chính xác và tính khách quan nên kiểm thử hệ thống thường được thực hiện bởi một nhóm kiểm tra viên hoàn toàn độc lập với nhóm phát triển dự án. Việc lập kế hoạch cho kiểm thử hệ thống nên bắt đầu từ giai đoạn hình thành và phân tích các yêu cầu. 17
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Kiểm thử hệ thống gồm nhiều loại kiểm tra khác nhau, phổ biến nhất gồm: – Kiểm tra chức năng: bảo đảm các hành vi của hệ thống thỏa mãn đúng yêu cầu thiết kế. – Kiểm tra khả năng vận hành: bảo đảm tối ưu việc phân bổ tài nguyên hệ thống, ví dụ phân bổ bộ nhớ nhằm đáp ứng các yêu cầu về thời gian xử l{ hay thời gian truy vấn – Kiểm tra khả năng chịu tải: bảo đảm hệ thống vận hành đúng dưới áp lực cao, ví dụ trường hợp nhiều người truy xuất cùng một lúc hoặc các tình huống bất thường – Kiểm tra khả năng bảo mật: bảo đảm tính toàn vẹn, tính bảo mật của dữ liệu và của hệ thống. – Kiểm tra khả năng phục hồi: bảo đảm hệ thống có khả năng khôi phục trạng thái ổn định trước đó trong tình huống mất tài nguyên hoặc dữ liệu, điều này đặc biệt quan trọng đối với các hệ thống giao dịch như ngân hàng trực tuyến. 18
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Sau giai đoạn kiểm thử hệ thống là kiểm thử chấp nhận, loại kiểm thử này được khách hàng thực hiện hoặc ủy quyền cho một nhóm thứ ba thực hiện. Mục đích của kiểm thử chấp nhận là để chứng minh phần mềm thỏa mãn tất cả các yêu cầu của khách hàng và khách hàng chấp nhận sản phẩm. Đối với những sản phẩm dành để bán rộng rãi trên thị trường cho nhiều người sử dụng, thông thường sẽ thông qua hai loại kiểm thử là Alpha và Beta: – Với kiểm thử Alpha, người sử dụng tiềm năng kiểm tra phần mềm ngay tại nơi phát triển phần mềm, lập trình viên sẽ ghi nhận các lỗi và lên kế hoạch sửa chữa. – Với kiểm thử Beta, phần mềm sẽ được gửi tới cho người sử dụng tiềm năng để kiểm tra ngay trong môi trường thực, lỗi và các phản hồi sẽ được gửi ngược lại cho lập trình viên để sửa chữa. 19
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Thực tế cho thấy, nếu khách hàng không quan tâm và không tham gia vào quá trình phát triển phần mềm thì kết quả kiểm thử chấp nhận sẽ sai lệch rất lớn, mặc dù phần mềm đã trải qua tất cả các mức kiểm thử trước đó. Sự sai lệch này liên quan đến việc hiểu sai yêu cầu cũng như sự mong chờ của khách hàng. – Ví dụ một phần mềm đã được nhóm phát triển dự án kiểm tra về chức năng, nhưng khách hàng khi kiểm tra sau cùng vẫn thất vọng vì bố cục màn hình nghèo nàn, thao tác không tự nhiên, không theo tập quán sử dụng của khách hàng Gắn liền với giai đoạn kiểm thử chấp nhận là một nhóm những dịch vụ và tài liệu đi kèm như tài liệu hướng dẫn cài đặt, hướng dẫn sử dụng Tất cả tài liệu đi kèm phải được cập nhật và kiểm tra chặt chẽ. 20
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Kiểm thử hồi quy không phải là một mức kiểm thử như các mức đã nói ở trên, nó chỉ đơn thuần là kiểm tra lại phần mềm sau khi có một sự thay đổi nào đó xảy ra để bảo đảm sự thay đổi không gây ra lỗi mới trên những chức năng vốn đã làm việc tốt. – Ví dụ một phần mềm đang phát triển khi kiểm thử cho thấy nó chạy tốt các chức năng A, B và C. Khi có thay đổi mã lệnh của chức năng C, nếu chỉ kiểm tra chức năng C thì chưa đủ, cần phải kiểm tra lại tất cả các chức năng khác liên quan đến chức năng C như A và B, l{ do là khi C thay đổi, nó có thể sẽ làm A và B không còn làm việc đúng nữa. Kiểm thử hồi quy có thể thực hiện tại mọi mức kiểm thử. 21
- 1. Khái niệm kiểm thử 1. Kiểm thử đơn vị 2. Kiểm thử tích hợp 2. Các nguyên tắc kiểm thử 3. Kiểm thử hệ thống 3. Cấp độ kiểm thử 4. Kiểm thử chấp nhận 4. Các chiến lược kiểm thử phần mềm 5. Kiểm thử hồi quy Mặc dù phải là một mức kiểm thử nhưng thực tế lại cho thấy kiểm thử hồi quy là một trong những loại kiểm thử tốn nhiều thời gian và công sức nhất. Tuy thế, việc bỏ qua kiểm thử hồi quy là không được phép vì có thể dẫn đến tình trạng phát sinh hoặc tái xuất hiện những lỗi nghiêm trọng, vì ta tưởng những lỗi đó hoặc không có hoặc đã được kiểm tra và sửa chữa rồi. 22
- 1. Khái niệm kiểm thử 2. Các nguyên tắc kiểm thử 3. Cấp độ kiểm thử 4. Các chiến lược kiểm thử phần mềm Ta có hai kiểu chiến lược kiểm thử phần mềm là kiểm thử logic và kiểm thử tích hợp: – Kiểm thử logic: phát hiện các lỗi logic gồm kiểm thử hộp đen (Black box) và kiểm thử hộp trắng (White box). – Kiểm thử tích hợp: xây dựng hệ thống từ những thành phần của nó và kiểm thử sự tương tác giữa các thành phần, gồm kiểm thử trên-xuống (Top down) và kiểm thử dưới-lên (Bottom up). Các chiến lược kiểm thử không loại trừ lẫn nhau, chúng có thể được sử dụng đơn lẻ hoặc đồng thời, tốt nhất là nên sử dụng nhiều kiểu chiến lược để phát hiện được hết các lỗi. 23
- 1. Khái niệm kiểm thử 1. Kiểm thử hộp đen 2. Các nguyên tắc kiểm thử 2. Kiểm thử hộp trắng 3. Cấp độ kiểm thử 3. Kiểm thử trên xuống 4. Các chiến lược kiểm thử phần mềm 4. Kiểm thử dưới lên Còn gọi là kiểm thử chức năng, kiểm thử này xem phần mềm như là một “hộp đen” tức là không biết gì về hoạt động bên trong của nó. Chỉ quan tâm đến chức năng đã đề ra của chương trình mà không quan tâm đến các khâu thiết kế hoặc viết mã lệnh, do đó khi kiểm thử nó chỉ dựa vào bản mô tả chức năng của chương trình. Kiểm thử hộp đen nhằm phát hiện các lỗi sau: – Thiếu chức năng. – Lỗi giao tiếp. – Lỗi trong cấu trúc dữ liệu. – Lỗi khi thực hiện chương trình. 24
- 1. Khái niệm kiểm thử 1. Kiểm thử hộp đen 2. Các nguyên tắc kiểm thử 2. Kiểm thử hộp trắng 3. Cấp độ kiểm thử 3. Kiểm thử trên xuống 4. Các chiến lược kiểm thử phần mềm 4. Kiểm thử dưới lên Ví dụ xét form Login cho phép đăng nhập với User và pass hợp lệ, khi kiểm thử hộp đen ta phải kiểm thử những trường hợp sau: – User, Pass hợp lệ. – User hoặc Pass để trống. – User hoặc Pass không hợp lệ. 25
- 1. Khái niệm kiểm thử 1. Kiểm thử hộp đen 2. Các nguyên tắc kiểm thử 2. Kiểm thử hộp trắng 3. Cấp độ kiểm thử 3. Kiểm thử trên xuống 4. Các chiến lược kiểm thử phần mềm 4. Kiểm thử dưới lên Các kỹ thuật được áp dụng khi kiểm thử hộp đen gồm: – Phân đoạn tương đương: mục đích là giảm số lượng kiểm thử bằng cách chọn các tập dữ liệu đại diện. Ta chia dữ liệu vào thành các đoạn, mỗi đoạn đại diện cho một số dữ liệu và việc kiểm thử chỉ thực hiện trên đại diện đó. – Phân tích giá trị biên: là trường hợp đặc biệt của phân đoạn tương đương, nó sử dụng các giá trị biên làm giá trị đại diện. Ví dụ nếu miền dữ liệu là tháng thì giá trị 12 là không hợp lệ. – Đoán lỗi: dựa trên cơ sở trực giác và kinh nghiệm, các chuyên gia có thể dễ dàng kiểm tra các lỗi bằng cách đoán cái nào dễ xảy ra nhất. Ví dụ lỗi chia cho 0, nếu modul có phép chia thì phải kiểm thử lỗi này. Vì dựa trên trực giác, nên phép thử này khó tìm được hết các lỗi. 26
- 1. Khái niệm kiểm thử 1. Kiểm thử hộp đen 2. Các nguyên tắc kiểm thử 2. Kiểm thử hộp trắng 3. Cấp độ kiểm thử 3. Kiểm thử trên xuống 4. Các chiến lược kiểm thử phần mềm 4. Kiểm thử dưới lên Là phương pháp kiểm thử dựa vào cấu trúc và mã lệnh chương trình. Phương pháp này kiểm nghiệm một phần của chương trình hay một phần của hệ thống để đảm bảo rằng chúng đáp ứng tốt tất cả các giá trị đầu vào bao gồm cả giá trị không đúng hay không theo dự định của chương trình. Khi kiểm thử hộp trắng phải đạt được các yêu cầu sau: – Bao phủ dòng lệnh: mỗi dòng lệnh phải được thực thi ít nhất 1 lần, bởi vì nếu một câu lệnh không được thực hiện thì ta không thể biết có lỗi xảy ra trong câu lệnh đó hay không? – Bao phủ nhánh: mỗi nhánh của các quyết định logic đều phải được đi qua ít nhất 1 lần. – Bao phủ lặp: tiến hành trên tất cả các vòng lặp từ giá trị khởi tạo đến giá trị cuối cùng. 27
- 1. Khái niệm kiểm thử 1. Kiểm thử hộp đen 2. Các nguyên tắc kiểm thử 2. Kiểm thử hộp trắng 3. Cấp độ kiểm thử 3. Kiểm thử trên xuống 4. Các chiến lược kiểm thử phần mềm 4. Kiểm thử dưới lên Xây dựng khung của hệ thống và đưa các thành phần vào trong nó. Chiến lược này kiểm tra mức cao của hệ thống trước khi kiểm tra các thành phần chi tiết, sau khi thành phần ở mức cao nhất được kiểm tra thì các thành phần con của nó mới được tiến hành kiểm tra và cứ tiếp tục như vậy cho đến khi thành phần ở mức đơn vị được kiểm tra. – Ưu điểm: Các thành phần hệ thống được thử nghiệm ngay sau khi mã hóa vì vậy các lỗi có thể sớm được phát hiện do đó tiết kiệm được thời gian và chi phí. Ngoài ra ta có thể coi hệ thống tuy chưa hoàn chỉnh nhưng đã có những chức năng chính từ đó có thể minh họa tính khả thi của hệ thống. – Nhược điểm: Cách thức xây dựng các nhánh và chọn chức năng nào để phát triển trước vẫn là bài toán chưa có nghiệm tối ưu, hơn nữa các mô hình ở mức cao vẫn chưa có đầu ra rõ ràng. 28
- 1. Khái niệm kiểm thử 1. Kiểm thử hộp đen 2. Các nguyên tắc kiểm thử 2. Kiểm thử hộp trắng 3. Cấp độ kiểm thử 3. Kiểm thử trên xuống 4. Các chiến lược kiểm thử phần mềm 4. Kiểm thử dưới lên Bắt đầu kiểm thử các đơn thể cơ sở không gọi đến các đơn thể khác, sau đó bổ sung kiểm thử các đơn thể gọi đến các đơn thể đã được kiểm thử này. Nguyên tắc của kiểm thử dưới lên là kiểm thử mọi thay đổi tại đơn thể có thể ảnh hưởng tới chức năng của nó. Trong kiểm thử dưới lên tất cả các đơn thể được mã hoá và kiểm tra riêng rẽ. Mỗi đơn thể phải được kiểm thử với ít nhất hai trường hợp: một trường hợp chạy tốt và một trường hợp không chạy. Trong trường hợp chạy sai hệ thống phải đưa ra được thông báo và quay lại được trạng thái ban đầu của giao dịch. Nhược điểm của phương pháp là lỗi cấu trúc được phát hiện ở các bước cuối cùng, do đó chi phí xây dựng phần mềm sẽ bị tăng. 29