Nhờ có sự phát triển vượt bậc của công nghệ thông tin cũng như công nghệ phần mềm đã dẫn đến việc phát triển phần mềm ngày càng được hỗ trợ bởi rất nhiều công cụ tiên tiến, giúp hạn chế những khó khăn và nâng cao hiệu quả trong việc xây dựng phần mềm. Tuy vậy, vì độ phức tập của phần mềm và những giới hạn về trời gian, chi phí cho nên cũng không chắc chắn đảm bảo được rằng các sản phẩm phần mềm đang được ứng dụng là không có lỗi cho dù các hoạt động đảm bảo chất lượng phần mềm nói chung và kiểm thử nói riêng ngày càng chặt chẽ và khoa học. Lỗi phần mềm luôn tồn tại tiềm ẩn bên trong mọi sản phẩm phần mềm và có thể gây ra những thiệt hại không lường trước được bất cứ lúc nào.Một sản phẩm phần mềm không đơn giản là các giai đoạn mã chương tình, mà nó còn bao gồm nhiều thành phần với nhiều các vai trò khác nhau. Do đó, việc xảy ra các lỗi phần mềm không chỉ ở công đoạn lập trình, mà còn xảy ra ở tất cả các công đoạn khác nhau của quy trình phát triển phần mềm, với xác suất cao thấp khác nhau. Kiểm thử là một công đoạn đóng vai trò tối qaun trọng, quyết định đến việc đánh giá chất lượng của một sản phẩm phần mềm. Mục đích của kiểm thử là đảm bảo rằng tất cả các thành phần của phần mềm ăn khớp, vận hành như mong đợi và phù hợp các tiêu chẩn thiết kế.Kiểm thử phần mềm là một trong những hoạt động quan trọng trong tiến trình phát triển phần mềm. Nó góp một phần rất lớn trong việc đánh giá chất lượng của một phần mềm và quy trình bắt buộc trong các dự án phát triển phần mềm trên thế giới cũng như trong nước.Để củng cố kiến thức đã học và ứng dụng trong một số công việc cụ thể nên nhóm chúng em đã được giao tìm hiểu về công cụ kiểm thử NUnit và ứng dụng để tiến hành kiểm thử chương trình kiểm tra tam giác. Nhóm chúng em xin chân thành cảm ơn cô (ThS) Phạm Thị Phương Anh đã tận tình chỉ dạy và hướng dẫn chúng em hoàn thiện đồ án này.
Trang 1LỜI NÓI ĐẦU
Nhờ có sự phát triển vượt bậc của công nghệ thông tin cũng như công nghệ phầnmềm đã dẫn đến việc phát triển phần mềm ngày càng được hỗ trợ bởi rất nhiều công cụtiên tiến, giúp hạn chế những khó khăn và nâng cao hiệu quả trong việc xây dựng phầnmềm Tuy vậy, vì độ phức tập của phần mềm và những giới hạn về trời gian, chi phí chonên cũng không chắc chắn đảm bảo được rằng các sản phẩm phần mềm đang được ứngdụng là không có lỗi cho dù các hoạt động đảm bảo chất lượng phần mềm nói chung vàkiểm thử nói riêng ngày càng chặt chẽ và khoa học Lỗi phần mềm luôn tồn tại tiềm ẩnbên trong mọi sản phẩm phần mềm và có thể gây ra những thiệt hại không lường trướcđược bất cứ lúc nào
Một sản phẩm phần mềm không đơn giản là các giai đoạn mã chương tình, mà nócòn bao gồm nhiều thành phần với nhiều các vai trò khác nhau Do đó, việc xảy ra các lỗiphần mềm không chỉ ở công đoạn lập trình, mà còn xảy ra ở tất cả các công đoạn khácnhau của quy trình phát triển phần mềm, với xác suất cao thấp khác nhau Kiểm thử làmột công đoạn đóng vai trò tối qaun trọng, quyết định đến việc đánh giá chất lượng củamột sản phẩm phần mềm Mục đích của kiểm thử là đảm bảo rằng tất cả các thành phầncủa phần mềm ăn khớp, vận hành như mong đợi và phù hợp các tiêu chẩn thiết kế
Kiểm thử phần mềm là một trong những hoạt động quan trọng trong tiến trình pháttriển phần mềm Nó góp một phần rất lớn trong việc đánh giá chất lượng của một phầnmềm và quy trình bắt buộc trong các dự án phát triển phần mềm trên thế giới cũng nhưtrong nước
Để củng cố kiến thức đã học và ứng dụng trong một số công việc cụ thể nên nhómchúng em đã được giao tìm hiểu về công cụ kiểm thử NUnit và ứng dụng để tiến hànhkiểm thử chương trình kiểm tra tam giác Nhóm chúng em xin chân thành cảm ơn cô(ThS) Phạm Thị Phương Anh đã tận tình chỉ dạy và hướng dẫn chúng em hoàn thiện đồ
án này
Nhóm thực hiện
Trang 2MỤC LỤC
LỜI NÓI ĐẦU i
MỤC LỤC ii
DANH MỤC HÌNH VẼ iv
CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1
1.1 Định nghĩa 1
1.2 Kỹ thuật kiểm thử phần mềm 1
1.2.1 Kỹ thuật kiểm thử chức năng 1
1.2.2 Kỹ thuật kiểm thử cấu trúc 1
1.3 Chiến lược kiểm thử 2
1.4 Các giai đoạn kiểm thử 2
1.4.1 Kiểm thử đơn vị (Unit Testing) 2
1.4.2 Kiểm thử tích hợp (Integration Testing) 3
1.4.3 Kiểm thử hợp thức hóa (Validation Testing) 3
1.4.4 Kiểm thử chấp nhận (Acceptance Testing) 4
1.4.5 Kiểm thử hồi quy (Regression Testing) 4
1.5 Một số vấn đề khác của kiểm thử phần mềm 4
1.5.1 Các hạn chế của kiểm thử 4
1.5.2 Các nguyên tắc kiểm thử 5
1.5.3 Phân loại một số công cụ kiểm thử tự động 6
CHƯƠNG 2: CÔNG CỤ KIỂM THỬ NUNIT 8
2.1 Giới thiệu 8
2.1.1 NUnit-console 8
2.1.2 NUnit-Gui.exe 9
2.2 Lớp Assert 9
2.3 Các thuộc tính trong Nunit 10
CHƯƠNG 3: HƯỚNG DẪN SỬ DỤNG CÔNG CỤ NUNIT 12
3.1 Download và cài đặt công cụ 12
3.1.1 Download công cụ 12
3.1.2 Cài đặt công cụ 13
3.2 Bắt đầu sử dụng chương trình 17
CHƯƠNG 4: GIỚI THIỆU VỀ CHƯƠNG TRÌNH ỨNG DỤNG 24
4.1 Mô tả bài toán 24
4.1.1 Mục đích 24
4.1.2 Phạm vi 24
4.2 Mô tả chương trình 24
4.2.1 Tổng quan về chương trình 24
4.2.2 Yêu cầu hệ thống 24
4.2.3 Yêu cầu chức năng 24
4.2.3.1 Kiểm tra việc tạo thành tam giác và tính chất của tam giác 24
4.2.3.2 Tính diện tích và chu vi 25
Trang 3CHƯƠNG 5: TIẾN HÀNH KIỂM THỬ 26
5.1 Xây dựng các test cases cho chương trình kiểm tra tam giác 26
5.2 Xây dựng các trường hợp kiểm thử 27
Trang 4DANH MỤC HÌNH VẼ
Hình 2.1 Giao diện Console của công cụ Nunit 8
Hình 2.2 Giao diện đồ họa của công cụ Nunit 9
Hình 3.1 Website download công cụ 12
Hình 3.2 Tiến trình cài đặt chương trình 13
Hình 3.3 Tiến trình cài đặt chương trình (tiếp theo) 13
Hình 3.4 Tiến trình cài đặt chương trình (tiếp theo) 14
Hình 3.5 Tiến trình cài đặt chương trình (tiếp theo) 14
Hình 3.6 Tiến trình cài đặt chương trình (tiếp theo) 15
Hình 3.7 Kết thúc cài đặt chương trình 15
Hình 3.8 Giao diện chương trình sau khi cài đặt thành công 16
Hình 3.9 Cách Build project 18
Hình 3.10 Thư mục chứa file dll sau khi Build 18
Hình 3.11 Cách add thư viện vào project 19
Hình 3.12 Cách add thư viện vào project (tiếp theo) 19
Hình 3.13 Add thư viện nunit-framework vào project 20
Hình 3.14 Add file dll của project trước để test 20
Hình 3.15 Màn hình NUnit test bằng giao diện console 21
Hình 3.16 Màn hình NUnit test bằng giao diện GUI 22
Hình 3.17 Một số test cases bị sai 23
Hình 5.1 Kết quả test của trường hợp 01 28
Hình 5.2 Kết quả test của trường hợp 02 29
Hình 5.3 Kết quả test của trường hợp 03 30
Hình 5.4 Kết quả test của trường hợp 04 31
Hình 5.5 Kết quả test của trường hợp 05 32
Hình 5.6 Kết quả test của trường hợp 06 33
Hình 5.7 Kết quả test của trường hợp 07 34
Hình 5.8 Kết quả test của trường hợp 08 35
Hình 5.9 Kết quả test của trường hợp 09 36
Trang 5Tìm hiểu về công cụ kiểm thử Nunit Chương 1: Tổng quan về kiểm thử phần mềm
CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
1.1 Định nghĩa
Kiểm thử phần mềm có nhiều cách định nghĩa khác nhau Tuy nhiên, chúng cùngbao trùm hai nội dung cơ bản là phát hiện lỗi và đánh giá chất lượng của phần mềm Địnhnghĩa sau đây của Myers là đơn giản và có tính thực tế: “Kiểm thử là tiến trình thực thichương trình với mục đích tìm thấy lỗi” Theo định nghĩa của Myers, kiểm thử mà khôngphát hiện được lỗi được coi là không thành công
Mục đích của kiểm thử là phát hiện lỗi vì trong thực tế phần mềm hầu như khôngbao giờ không chứa lỗi
1.2 Kỹ thuật kiểm thử phần mềm
Có thể chia các kỹ thuật kiểm thử thành hai loại: kỹ thật kiểm thử chức năng(Functional Testing) hay còn gọi là kỹ thật kiểm thử hộp đen (Black-box-Testing) và kỹthật kiểm thử cấu trúc (Structutural Testing) hay còn gọi là kỹ thuật kiểm thử hộp trắng(White-box-Testing)
1.2.1 Kỹ thuật kiểm thử chức năng
Trong kỹ thuật kiểm thử chức năng, dữ liệu kiểm thử được xuất phát từ đặc tả phầnmềm bao gồm: đặc tả các yêu cầu (đối với kiểm thử hệ thống), đặc tả thiết kế (đối vớikiểm thử tích hợp) và đặc tả chi tiết mô-đun (đối với kiểm thử đơn vị) Trong kỹ thuậtnày, kiểm thử viên xem phần mềm như là một hộp đen Kiểm thử viên hoàn toàn khôngquan tâm cấu trúc và hành vi bên trong của phần mềm Kiểm thử viên chỉ cần quan tâmđến việc tìm các hiện tượng mà phần mềm không hành xử theo đúng đặc tả của nó
Kiểm thử viên chỉ biết những gì phần mềm dự kiến thực hiện và những gì dự kiếnkhông thực hiện, mà không thể nhìn vào bên trong xem nó hoạt động như thế nào Vì thế
dữ liệu kiểm thử sẽ xuất phát từ đặc tả
Kiểm thử chức năng cố gắng tìm các lỗi sau: thiếu chức năng, lỗi giao diện, lỗi cấutrúc dữ liệu, lỗi truy cập cơ sở dữ liệu, lỗi thi hành, lỗi khởi tạo hoặc kết thúc,…
1.2.2 Kỹ thuật kiểm thử cấu trúc
Kỹ thuật kiểm thử cấu trúc là kỹ thuật dựa trên sự phân tích mã chương trình hoặcmột mô hình của mã chương trình để xây dựng các phép thử theo các tiêu chuẩn bao phủ
Trang 6Tìm hiểu về công cụ kiểm thử Nunit Chương 1: Tổng quan về kiểm thử phần mềm
Kỹ thuật kiểm thử cấu trúc cho phép chúng ra kiểm thử cấu trúc bên trong của phầnmềm, với mục đích kiểm tra rất cả các câu lệnh và điểu kiện tồn tại trong phần mềm đó.Trong kỹ thuật này, kiểm thử viên lấy dữ liệu thử xuất phát từ việc kiểm tra logic củachương trình (không quan tâm đến đặc tả)
1.3 Chiến lược kiểm thử
Một chiến lược kiểm thử (test strategy) là một kế hoạch định nghĩa mục tiêu các giaiđoạn kiểm thử cũng như các kỹ thuật kiểm thử sử dụng Chiến lược kiểm thử thườngđược quyết định dựa vào tiêu chuẩn về độ tin cậy của phần mềm và chi phí cho việc pháttriển phần mềm Ngoài ra, một chiến lược kiểm thử sẽ phụ thuộc kích thước của đối tượngđược kiểm thử cũng như quan điểm về đối tượng được kiểm thử
Nếu chúng ta muốn kiểm thử một cách độc lập các thành phần/đơn vị cấu tạo nênphần mềm, chúng ta gọi là kiểm thử đơn vị Nếu chúng ta muốn kiểm thử sự kết hợp cácthành phần cấu tạo nên phần mềm, chúng ta gọi là kiểm thử tích hợp Nếu chúng ta muốnbảo đảm rằng một phần mềm đang được phát triển một cách đúng đắn và các thành phầncấu tạo nên phần mềm cũng được phát triển một cách đúng đắn, chúng ta gọi là xác minh(verification) Tuy nhiên, một phần mềm không chỉ đơn thuần là đáp ứng yêu cầu của nhàsản xuất, mà nó chỉ trở nên hữu ích nếu đáp ứng được nhu cầu của người sử dụng cuốicùng Việc bảo đảm một phần mềm đáp ứng nhu cầu của người sử dụng được gọi là hợpthức hoá (validation)
1.4 Các giai đoạn kiểm thử
1.4.1 Kiểm thử đơn vị (Unit Testing)
Phần lớn các phương pháp thiết kế phần mềm đều dẫn đến chia phần mềm thànhnhững mô- đun hay chương trình nhỏ có các dữ liệu vào và kết quả riêng Chúng ta gọicác mô-đun hay chương trình đó là các đơn vị (unit) phần mềm Trên các đơn vị nàychúng ta sẽ tiến hành kiểm thử đơn vị
Một khi đơn vị phần mềm đã được mã hoá, nghĩa là lập trình và hồ sơ kiểm thử đơn
vị tương ứng đã được hoàn thành thì kiểm thử đơn vị có thể được tiến hành
Kiểm thử đơn vị chủ yếu là thực hiện các trường hợp kiểm thử (test case) đã được
mô tả trong hồ sơ kiểm thử đơn vị và điền các thông tin cần thiết vào các phiếu báo cáokiểm thử Nếu một lỗi hay sự không tương thích được phát hiện, cần phải chỉnh sửa lại
Trang 7Tìm hiểu về công cụ kiểm thử Nunit Chương 1: Tổng quan về kiểm thử phần mềm
đơn vị phần mềm Sau đó, kiểm thử đơn vị được thực hiện lại Kiểm thử đơn vị sẽ kếtthúc khi mà tất cả các trường hợp kiểm thử được mô tả trong hồ sơ kiểm thử đơn vị đãđược thực hiện thành công và kết quả được lưu lại trong hồ sơ
1.4.2 Kiểm thử tích hợp (Integration Testing)
Kiểm thử tích hợp được tiến hành một khi kiểm thử đơn vị các thành phần cần thiếtcho kiểm thử tích hợp kết thúc và hồ sơ kiểm thử tích hợp đã được chuẩn bị sẵn sàng.Trong giai đoạn kiểm thử tích hợp, ý tưởng là các thành phần đã được kiểm thử đơn vị sẽđược tích hợp lại dần dần cho đến khi có được toàn bộ phần mềm Phần mềm càng phứctạp thì đòi hỏi giai đoạn kiểm thử tích hợp phải trải qua các giai đoạn trung gian, là cácgiai đoạn mà các nhóm các thành phần sẽ được kiểm thử
Mục tiêu của giai đoạn kiểm thử tích hợp là kiểm tra sự giao tiếp và trao đổi dữ liệugiữa các thành phần phần mềm Trong giai đoạn tích hợp, có thể có khả năng phải sửdụng các thành phần không được phát triển trong dự án phần mềm, mà là những thànhphần được cung cấp sẵn bởi các thư viện hay thậm chí là các thành phần được cung cấpbởi hệ điều hành
Khi tích hợp các thành phần tạo thành tập hợp, chúng ta có thể tiến hành theo cácchiến lược:
- Tích hợp từ trên xuống (top-down) bằng cách kiểm thử tích hợp các thành phầnchính trước, sau đó thêm vào các thành phần được gọi trực tiếp bởi các thành phầnvừa kiểm thử
- Tích hợp từ dưới lên (bottom-up) bằng cách kiểm thử các thành phần không gọicác thành phần khác, sau đó thêm vào các thành phần gọi các thành phần vừa kiểmthử
1.4.3 Kiểm thử hợp thức hóa (Validation Testing)
Kiểm thử hợp thức hoá có thể bắt đầu ngay sau khi kiểm thử tích hợp kết thúc và hồ
sơ kiểm thử hợp thức hoá đã sẵn sàng Mục tiêu của kiểm thử hợp thức hoá là cần chỉ rarằng phần mềm thực hiện đúng những gì mà người sử dụng mong đợi Vì thế, ở giai đoạnnày, kiểm thử được thực hiện dưới góc nhìn của người sử dụng, chứ không phải dưới gócnhìn của người phát triển như các giai đoạn kiểm thử đơn vị hay kiểm thử tích hợp
Trang 8Tìm hiểu về công cụ kiểm thử Nunit Chương 1: Tổng quan về kiểm thử phần mềm
Vì kiểm thử được thực hiện dưới góc nhìn của người sử dụng nên giai đoạn này chỉ
sử dụng các kỹ thuật kiểm thử chức năng, tức là các kỹ thuật kiểm thử hộp đen Các bộ dữliệu thử sẽ được tạo ra dựa trên các tài liệu đặc tả Thông thường các tài liệu đặc tả sẽđược phân tích để xác định các yêu cầu chứa đựng các hành vi mong đợi của phần mềm
1.4.4 Kiểm thử chấp nhận (Acceptance Testing)
Được thực hiện khi tất cả các giai đoạn kiểm thử được hoàn tất nhằm để chứng minhphần mềm đã đủ sẵn sàng xuất xưởng Các thủ tục kiểm thử hoặc chạy thử phải đượcngười đặt hàng chấp nhận trước khi thực hiện để nghiệm thu
1.4.5 Kiểm thử hồi quy (Regression Testing)
Phần mềm là một trong những loại sản phẩm thay đổi rất nhanh Người sử dụngluôn có yêu cầu cải tiến phần mềm và các chức năng mới Vì vậy, sự chỉnh sửa phần mềmsau khi đưa vào sử dụng là cần thiết Mặt khác, bất kỳ sự sửa đổi nào cùng có thể dẫn đếncác lỗi mới Phần mềm nhất thiết phải được kiểm thử lại sau khi sửa đổi, giai đoạn kiểmthử này gọi là kiểm thử hồi quy
Giai đoạn kiểm thử hồi quy thường tái sử dụng các bộ dữ liệu thử đã sử dụng trongcác giai đoạn trước nhằm kiểm tra rằng không có các lỗi mới được đưa vào Vấn đề đặt ra
ở đây là trong giai đoạn này, các bộ dữ liệu thử nào được tái sử dụng: kiểm thử đơn vị,kiểm thử tích hợp hay kiểm thử hệ thống?
Việc kiểm thử chương trình chỉ là nhìn sự kiện đưa ra kết luận do vậy không thểkhẳng định một chương trình tuyệt đối đúng bằng kiểm thử Tuy vậy, bộ dữ liệu kiểm thửphải phủ kín mọi trường hợp cần đánh giá
Trang 9Tìm hiểu về công cụ kiểm thử Nunit Chương 1: Tổng quan về kiểm thử phần mềm
Thêm vào đó, trong quá trình kiểm thử, ta thường mắc phải các đặc trưng củanguyên lý chủ quan như sau:
- Bộ dữ liệu kiểm thử không thay đổi trong quá trình xây dựng phần mềm
- Chỉ kiểm thử các trường hợp chính thống, hợp lệ, không quan tâm đến các cận vàcác sự cố
- Cài đặt chức năng nào thì chỉ kiểm thử riêng chức năng đó, không kiểm thử tổnghợp chức năng vừa cài đặt với các chức năng đã cài đặt trước đó
- Người kiểm thử đồng thời là người xây dựng phần mềm tức vừa đá bóng, vừathổi còi
- Kiểm thử là tiến trình thực thi phần mềm và sử dụng các trường hợp kiểm thử đểphát hiện lỗi
- Với mục đích của kiểm thử nhằm phát hiện lỗi, một ca kiểm thử tốt là ca kiểm thử
có khả năng cao phát hiện những lỗi chưa được tìm thấy
- Một ca kiểm thử phải định nghĩa kết quả mong muốn
- Kiểm thử nên được thực hiện bởi một nhóm độc lập với nhóm phát triển
- Kết quả kiểm thử nên được kiểm tra một cách cẩn thận
- Các ca kiểm thử nên được thiết kế cho cả những dữ liệu vào hợp lệ và không hợplệ
- Các ca kiểm thử phải được tái sử dụng
- Xác suất tồn tại của các lỗi hơn nữa trong một đơn vị phần mềm tỷ lệ với số các lỗi
đã được phát hiện trong đơn vị phần mềm đó
- Kiểm thử nên phải được lập kế hoạch
- Các hoạt động kiểm thử nên phải được tích hợp vào tiến trình phát triển phần mềm
Trang 10Tìm hiểu về công cụ kiểm thử Nunit Chương 1: Tổng quan về kiểm thử phần mềm
- Kiểm thử là một công việc đầy sáng tạo và thách thức
1.5.3 Phân loại một số công cụ kiểm thử tự động
Vì kiểm thử phần mềm thường chiếm tới 40% tất cả các nỗ lực dành cho một dự ánxây dựng phần mềm, nên công cụ có thể làm giảm thời gian kiểm thử sẽ rất có giá trị.Thừa nhận lợi ích tiềm năng này, các nhà nghiên cứu và người thực hành đã phát triểnmột số thế hệ các công cụ kiểm thử tự động:
Bộ phân tích tĩnh: Các hệ thống phân tích chương trình này hỗ trợ cho việc chứngminh các lý lẽ tĩnh - những mệnh đề yếu kém về cấu trúc và định dạng của chương trình
Bộ thanh tra mã nguồn: Những bộ lọc chuyên dụng này được dùng để kiểm tra chấtlượng của phần mềm để đảm bảo rằng nó đáp ứng các chuẩn mã hoá tối thiểu
Bộ xử lý khẳng định: Những hệ thống tiền xử lý/hậu xử lý này được sử dụng để chobiết liệu những phát biểu do người lập trình nêu, được gọi là các khẳng định, về hành vicủa chương trình có thực sự được đáp ứng trong việc thực hiện chương trình thực haykhông
Bộ sinh trường hợp kiểm thử: Những bộ xử lý này sinh ra, và điền các giá trị đã xácđịnh vào các trường hợp kiểm thử cho chương trình đang được kiểm thử
Bộ sinh dữ liệu kiểm thử: Những hệ thống phân tích tự động này hỗ trợ cho ngườidùng trong việc chọn dữ liệu kiểm thử làm cho chương trình hành xử theo một cách đặcbiệt
Bộ kiểm chứng kiểm thử: Những công cụ này đo mức bao quát kiểm thử bên trong,thường được diễn tả dưới dạng có liên quan tới cấu trúc điều khiển của sự vật kiểm thử,
và báo cáo về giá trị bao quát cho chuyên gia đảm bảo chất lượng
Dụng cụ kiểm thử: Lớp các công cụ này hỗ trợ cho việc xử lý các phép kiểm thử
Bộ so sánh kết quả đầu ra: Công cụ này làm cho người ta có thể so sánh một tập kếtquả đầu ra từ một chương trình này với một tập kết quả khác (đã được lưu giữ trước) đểxác định sự khác biệt giữa chúng
Hệ thống thực hiện ký hiệu (symbolic execution system): Công cụ này thực hiệnviệc kiểm thử chương trình bằng cách dùng “dữ liệu vào” đại số, thay vì giá trị dữ liệu số.Phần mềm được kiểm thử xuất hiện để kiểm thử các lớp dữ liệu, thay vì chỉ là một trường
Trang 11Tìm hiểu về công cụ kiểm thử Nunit Chương 1: Tổng quan về kiểm thử phần mềm
hợp kiểm thử đặc biệt “Dữ liệu ra” là đại số và có thể được so sánh với kết quả trông đợicũng được xác định dưới dạng đại số
Bộ mô phỏng môi trường: Công cụ này là một hệ thống dựa trên máy tính giúpngười kiểm thử mô hình hoá môi trường bên ngoài của phần mềm thời gian thực và rồi
mô phỏng các điều kiện vận hành thực tại một cách động
Bộ phân tích luồng dữ liệu: Công cụ này theo dõi dấu vết luồng dữ liệu đi qua hệthống và cố gắng tìm ra những tham khảo dữ liệu không xác định, đặt chỉ số sai và các lỗikhác có liên quan tới dữ liệu
Trang 12Tìm hiểu về công cụ kiểm thử Nunit Chương 2: Công cụ kiểm thử NUnit
CHƯƠNG 2: CÔNG CỤ KIỂM THỬ NUNIT2.1 Giới thiệu
NUnit là một tool mới ,có nhiều version khác nhau, trong đó NUnit version 2.5 mớiphát hành vào tháng 2/2008 nên cũng còn mới lạ với nhiều người, đặc biệt phiên bản này
hỗ trợ cho bộ NET frameword của Microsoft
NUnit có hai cách khác nhau để chạy chương trình thử nghiệm:
- Console runer: NUnit –console.exe là khởi chạy nhanh nhất nhưng không phải làtương tác
- NUnit-Gui.exe: là một hình thức cho phép bạn lựa chọn làm việc với các bài testcủa bạn và cung cấp các thông tin phản hồi đồ họa
2.1.1 NUnit-console
NUnit-console.exe chương trình là một văn bản dựa trên runner và có thể được sửdụng khi bạn muốn chạy tất cả các bài thi của bạn và không cần phải có màu đỏ /màuvàng / xanh chỉ của thành công hay thất bại Nó rất hữu ích cho tự động hóa của bài thi
và tích hợp vào các hệ thống khác Nó tự động lưu kết quả của nó trong định dạng XML,cho phép bạn để sản xuất các báo cáo hay xử lý các kết quả Sau đây là một ảnh chụp mànhình của chương trình
Hình 2.1 Giao diện Console của công cụ Nunit
Trang 13Tìm hiểu về công cụ kiểm thử Nunit Chương 2: Công cụ kiểm thử NUnit
2.1.2 NUnit-Gui.exe
Là một chương trình đồ họa nunit.exe runner Điều đó cho các bài kiểm tra trongmột thám hiểm-như cửa sổ trình duyệt và cung cấp một hình ảnh chỉ biểu của thành cônghay thất bại của các bài kiểm tra Nó cho phép bạn lựa chọn để chạy một bài kiểm trahoặc một lớp nào đó và tự động reload khi bạn chỉnh sửa và biên soạn lại mã của bạn.Sau đây là một ảnh chụp màn hình của NUnit chạy test một đoạn lệnh
Hình 2.2 Giao diện đồ họa của công cụ Nunit
2.2 Lớp Assert
Lớp Assert được sử dụng trong các kiểm thử để khẳng định một điều kiện đã đượcbiết đến Ví dụ, sau khi chạy một số logic, để khẳng định rằng kết quả trả về có giá trị như
dự kiến, thì sử dụng phương thức Assert.Equals
Các phương thức trong lớp Assert:
- Phương thức tĩnh:
o NUnit.Framework.Assert.AreEqual
o NUnit.Framework.Assert.False
o NUnit.Framework.Assert.AreNotEqual
Trang 14Tìm hiểu về công cụ kiểm thử Nunit Chương 2: Công cụ kiểm thử NUnit
o GetType (inherited from Object): Lấy kiểu của đối tượng hiện hành
o ToString (inherited from Object): Trả về một kiểu chuỗi của đối tượng hiệnhành
o Finalize (inherited from Object): Cho phép một đối tượng cố gắng thử với mãnguồn mở và thực hiện các hoạt động trước khi đối tượng phản đối lại do tậphợp các dữ liệu vô nghĩa hoặc không tương thích
o MemberwiseClone (inherited from Object): Tạo ra một bản sao của đối tượnghiện hành
o Assert Constructor: Khởi tạo một instance mới của lớp Assert
2.3 Các thuộc tính trong Nunit
Người ta thường tạo một project dạng class library dành cho các test class Projectnày theo đúng tên gọi của nó chỉ có ý nghĩa để test và không có vai trò gì trong sản phầmphần mềm cuối cùng Thực ra NUnit có thể test bất kí test class nào bên trong mộtassembly bất kì nên project test có thể là Console application, window application, v.vnhưng thông thường người ta sẽ chọn project loại class library Có một lưu ý là test classcủa bạn phải được khai báo public, test method cũng thế Khi sử dụng NUnit.Framework,
Trang 15Tìm hiểu về công cụ kiểm thử Nunit Chương 2: Công cụ kiểm thử NUnit
các bạn sẽ phải làm quen với những Attribute như [TestFixture], [Test], [Setup],[TearDown],…
- [TestFixture]: dùng để đánh đấu 1 class là test class, những class khác không có
Attribute này sẽ mặc định bị ignore khi NUnit test assembly của bạn
- [Test]: dùng để đánh dấu 1 method là test method, ý nghĩa của nó tương tự như
TestFixture nhưng scope ở cấp method
- [Setup]: dùng để đánh dấu một method sẽ được gọi trước khi môt test case được
goi Nếu trong một test class có mười method test, thì mỗi lần một method test được chạythì Nunit sẽ chạy method được đánh dấu với Setup trước tiên
- [TearDown]: ngược với Setup, chạy sau mỗi test method.
- [TestFixtureSetup]: tương tự như Setup nhưng ở cấp của class, khi một test class
được test thì methid nào được đánh dấu với attribute này sẽ được chạy trước tiên
- [TestFixtureTearDown]: ngược với TestFixtureSetup.
Vậy để apply NUnit Test thì công việc vô cùng đơn giản: tạo một project classlibrary, thêm reference đến dll nunit.framework, thêm 1 class mới, khai báo nó thànhpublic, thêm using nunit.framework, thêm attribute [TestFixture] vào đầu của class, viếtmột method test và khai báo với attribute [Test] Cơ bản như vậy là đủ để test, bạn có thểkết hợp nhiều attribute khác cũng như nguyên tắc Inheritance của lập trình hướng đốitượng để có một project test uyển chuyển Người ta thường sử dụng [Setup] để mở mộttransaction scope, sau đó dùng [TearDown] để roll back transaction khi test các Dao,như vậy sẽ không có dữ liệu bị thêm xóa vào database và bảo đảm dữ liệu test sẽ nhưnhau trước khi test các method
Trang 16Tìm hiểu về công cụ kiểm thử Nunit Chương 3: Hướng dẫn sử dụng công cụ NUnit
CHƯƠNG 3: HƯỚNG DẪN SỬ DỤNG CÔNG CỤ NUNIT3.1 Download và cài đặt công cụ
Trang 17Tìm hiểu về công cụ kiểm thử Nunit Chương 3: Hướng dẫn sử dụng công cụ NUnit
3.1.2 Cài đặt công cụ
Sau khi download công cụ về ta được file thực thi có tên: NUnit-2.6.0.12051.msi.
Chạy file này ta được màn hình sau và ta chọn “Next”
Hình 3.2 Tiến trình cài đặt chương trình
Chọn vào checkbox “I accept the terms in the License Agreement” để chấp nhận cácđiều khoản khi sử dụng và tiếp tục chọn “Next”
Hình 3.3 Tiến trình cài đặt chương trình (tiếp theo)
Trang 18Tìm hiểu về công cụ kiểm thử Nunit Chương 3: Hướng dẫn sử dụng công cụ NUnit
Tại đây bạn có thể chọn một trong ba kiểu cài đặt Ở đây, chọn “Typical”
Hình 3.4 Tiến trình cài đặt chương trình (tiếp theo)
Và sau đó chọn “Install”
Hình 3.5 Tiến trình cài đặt chương trình (tiếp theo)
Trang 19Tìm hiểu về công cụ kiểm thử Nunit Chương 3: Hướng dẫn sử dụng công cụ NUnit
Quá trình cài đặt đang được tiến hành
Hình 3.6 Tiến trình cài đặt chương trình (tiếp theo)
Đợi quá trình này một thời gian ngắn và sau đó chúng ta chọn “Finish” kết thúc quátrình cài đặt
Hình 3.7 Kết thúc cài đặt chương trình
Trang 20Tìm hiểu về công cụ kiểm thử Nunit Chương 3: Hướng dẫn sử dụng công cụ NUnit
Giao diện chương trình sau khi cài đặt thành công
Hình 3.8 Giao diện chương trình sau khi cài đặt thành công