Tải bản đầy đủ (.doc) (40 trang)

ĐỒ ÁN KIỂM THỬ PHẦN MỀM TÌM HIỂU VỀ CÔNG CỤ KIỂM THỬ NUNIT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.79 MB, 40 trang )

LỜ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ầ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.
Nhóm thực hiện

Trang i



MỤ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
1.6.Giới thiệu.........................................................................................................8
1.6.1.NUnit-console...........................................................................................8
1.6.2.NUnit-Gui.exe...........................................................................................9
1.7.Lớp Assert........................................................................................................9
1.8.Các thuộc tính trong Nunit...........................................................................10
CHƯƠNG 3: HƯỚNG DẪN SỬ DỤNG CÔNG CỤ NUNIT.............................12
1.9.Download và cài đặt công cụ........................................................................12
1.9.1.Download công cụ...................................................................................12
1.9.2.Cài đặt công cụ.......................................................................................13

1.10.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
1.11.Mô tả bài toán..............................................................................................24
1.11.1.Mục đích................................................................................................24
1.11.2.Phạm vi..................................................................................................24
1.12.Mô tả chương trình.....................................................................................24
1.12.1.Tổng quan về chương trình...................................................................24
1.12.2.Yêu cầu hệ thống...................................................................................24
1.12.3.Yêu cầu chức năng................................................................................24
1.12.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
1.12.3.2.Tính diện tích và chu vi..................................................................25
Trang ii


CHƯƠNG 5: TIẾN HÀNH KIỂM THỬ..............................................................26
1.13.Xây dựng các test cases cho chương trình kiểm tra tam giác....................26
1.14.Xây dựng các trường hợp kiểm thử............................................................27

Trang iii


DANH 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 iv


Tì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ùng
bao 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. Định
nghĩ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 thi
chươ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ông
phá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ông
bao 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ần
mề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ới
kiể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ật
nà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ông
quan 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ến
khô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ấu
trú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ặc
mộ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ủ.

Nhóm 01 – Lớp LT03A


Trang 1


Tì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ần
mề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ủa
chươ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át
triể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ên
phầ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ác
thà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ốn
bả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ần
cấ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ối
cù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ợp
thứ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ành
nhữ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ọi

cá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ày
chú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áo
kiể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
Nhóm 01 – Lớp LT03A

Trang 2


Tì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ết
thú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ết
cho 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ức
tạ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ác
giai đ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ệu
giữ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ành
phầ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ấp

bở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ác
chiế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ần

chí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ần
vừ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ọi

cá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ểm
thử.
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ỉ ra
rằ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ạn
nà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óc
nhì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.

Nhóm 01 – Lớp LT03A

Trang 3


Tì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 minh
phầ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 được
ngườ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ụng
luô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ềm
sau 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 đến
cá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ểm
thử 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 trong
cá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?
1.5. Một số vấn đề khác của kiểm thử phần mềm
1.5.1. Các hạn chế của kiểm thử
Do kiểm thử là chạy thử chương trình với tập dữ liệu giả nên không thể khẳng định
tính đúng của chương trình do bản chất quy nạp không hoàn toàn của nó.
Trong nhiều trường hợp, việc kiểm thử thường được thực hiện từ những giai đoạn
đầu của quá trình cài đặt sản phẩm.
Một chương trình được cho tuyệt đối đúng phải được thực hiện thông qua: tính đúng
đắn của thuật toán và tính tương đương của chương trình với thuật toán (được thể hiện ở
chứng minh thông qua văn bản chương trình).
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á.
Nhóm 01 – Lớp LT03A

Trang 4



Tì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ủa
nguyê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ổng

hợ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ừa

thổi còi.
1.5.2. Các nguyên tắc kiểm thử
Các nguyên tắc luôn đóng vai trò quan trọng trong lĩnh vực công nghệ phần mềm.
Các nguyên tắc trong công nghệ phần mềm là các luật hay quy tắc hướng dẫn làm thế nào
để xây dựng (thiết kế, phát triển, kiểm thử và bảo trì) phần mềm. Kiểm thử là một trong
những lĩnh vực của công nghệ phần mềm, kiểm thử cũng có các nguyên tắc riêng dành
cho các kiểm thử viên. Chúng ta sẽ xem xét một số nguyên tắc cơ bản liên quan đến kiểm
thử động:
- 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ợp
lệ.
- 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.
Nhóm 01 – Lớp LT03A

Trang 5


Tì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ự án
xâ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ển
mộ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ứng
minh 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ất
lượ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 để cho
biế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 vi

củ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 hay
khô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ười
dù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 đặc
biệ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ết
quả đầ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ện
việ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

Nhóm 01 – Lớp LT03A

Trang 6


Tì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 đợi
cũ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úp

ngườ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ỗi
khác có liên quan tới dữ liệu.

Nhóm 01 – Lớp LT03A

Trang 7


Tì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Ử NUNIT
1.6. Giới thiệu
NUnit là một tool mới ,có nhiều version khác nhau, trong đó NUnit version 2.5 mới
phá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 test

của bạn và cung cấp các thông tin phản hồi đồ họa.
1.6.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àu

và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àn
hình của chương trình.

Hình 2.1. Giao diện Console của công cụ Nunit
Nhóm 01 – Lớp LT03A

Trang 8


Tìm hiểu về công cụ kiểm thử Nunit

Chương 2: Công cụ kiểm thử NUnit

1.6.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 trong
mộ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ông
hay 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 tra
hoặ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
1.7. 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 đã được
biế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
Nhóm 01 – Lớp LT03A

Trang 9


Tìm hiểu về công cụ kiểm thử Nunit

Chương 2: Công cụ kiểm thử NUnit

o NUnit.Framework.Assert.Contains
o NUnit.Framework.Assert.True
o NUnit.Framework.Assert.Fail
o NUnit.Framework.Assert.Greater
o NUnit.Framework.Assert.Less
o NUnit.Framework.Assert.NotNull
o NUnit.Framework.Assert.Null
o NUnit.Framework.Assert.ReferenceEquals
- Phương thức động

o GetHashCode (inherited from Object): Phục vụ như một hash chức năng cho
một loại, thích hợp cho sử dụng trong các thuật toán hashing và dữ liệu cấu trúc
giống như một bảng hash.
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ện
hà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ập

hợ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ượng
hiện hành.
o Assert Constructor: Khởi tạo một instance mới của lớp Assert.
1.8. 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. Project
nà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ầm
phầ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ột
assembly bất kì nên project test có thể là Console application, window application, v.v
nhưng thông thường người ta sẽ chọn project loại class library. Có một lưu ý là test class
của bạn phải được khai báo public, test method cũng thế. Khi sử dụng NUnit.Framework,

Nhóm 01 – Lớp LT03A

Trang 10


Tì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ạy
thì 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 class
library, thêm reference đến .dll nunit.framework, thêm 1 class mới, khai báo nó thành
public, thêm using nunit.framework, thêm attribute [TestFixture] vào đầu của class, viết
mộ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 đối
tượng để có một project test uyển chuyển. Người ta thường sử dụng [Setup] để mở một
transaction 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.

Nhóm 01 – Lớp LT03A

Trang 11


Tì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Ụ NUNIT
1.9. Download và cài đặt công cụ

1.9.1. Download công cụ
Để download và sử dụng công cụ, các bạn ghé thăm website:
/>
Hình 3.1. Website download công cụ

Nhóm 01 – Lớp LT03A

Trang 12


Tì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

1.9.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)
Nhóm 01 – Lớp LT03A

Trang 13


Tì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)
Nhóm 01 – Lớp LT03A

Trang 14


Tì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
Nhóm 01 – Lớp LT03A

Trang 15


Tì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

Nhóm 01 – Lớp LT03A

Trang 16


Tì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

1.10. Bắt đầu sử dụng chương trình
Chúng ta xây dựng một lớp thực hiện test các chức năng tính toán đơn giản bằng các
phép cộng, trừ, nhân, chia như sau:
Sử dụng chương trình Visual Studio 2010 để tạo một lớp tên “congthanh” ở dạng
Class Library có mã nguồn như sau:
Public Class congthanh
Public Function phepcong(ByVal a As Integer, ByVal b As
Integer)
Dim c As Integer
c = a + b
Return c
End Function
'********************
Public Function pheptru(ByVal a As Integer, ByVal b As

Integer)
Dim c As Integer
c = a - b
Return c
End Function
'********************
Public Function phepnhan(ByVal a As Integer, ByVal b As
Integer)
Dim c As Integer
c = a * b
Return c
End Function
'********************
Public Function phepchia(ByVal a As Integer, ByVal b As
Integer)
Dim c As Integer
c = a / b
Return c
End Function
End Class

Nhóm 01 – Lớp LT03A

Trang 17


Tì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


Sau khi viết xong lớp thực hiện các chức năng ta tiến hành biên dịch lớp này để tạo
thành file có đuôi “.dll” bằng cách kích chuột phải vào Solution Project và chọn Build.

Hình 3.9. Cách Build project
Sau khi “Build” ta được một file .dll ở trong thư mục “bin” tại thư mục gốc của
project.

Hình 3.10. Thư mục chứa file .dll sau khi Build
Công việc tiếp theo, ta tạo thêm một project mới có tên “Test” có chứa class
“Test_thu”. Và trước khi ta viết mã nguồn cho lớp này để test các tính toán ở trên thì
Nhóm 01 – Lớp LT03A

Trang 18


Tì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

trong class “Test_thu” này chúng ta phải add vào thư viện “nunit.framework” và file
“.dll” mà chúng ta tạo ra ở trên. Cách làm như sau:
Kích đúp chuột vào “My Project”

Hình 3.11. Cách add thư viện vào project
Tại đây ta chọn thẻ “References” và chọn nút “Add…”

Hình 3.12. Cách add thư viện vào project (tiếp theo)

Nhóm 01 – Lớp LT03A


Trang 19


Tì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

Hộp thoại “Add Reference” xuất hiện. Tại thẻ “.NET” ta tìm đến thư viện
“nunit.framework” và chọn “OK”

Hình 3.13. Add thư viện nunit-framework vào project
Tiếp theo ta “Browse” đến file .dll của Project trước và “OK”

Hình 3.14. Add file .dll của project trước để test
Nhóm 01 – Lớp LT03A

Trang 20


Tì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

Sau khi đã add thành công, ta tiến hành viết code để test các hàm tính toán của mình.
Tại class “Test_thu” của Project “Test” ta Imports Namespace “congthanh_demo” và
“NUnit.Framework”. Cụ thể, class được viết như sau:
Imports congthanh_demo
Imports NUnit.Framework
<TestFixture()> _
Public Class Test_thu

Dim hthanh As New congthanh
<Test()> _
Public Sub test_phepcong()
Assert.AreEqual(5, hthanh.phepcong(2, 3))
End Sub
<Test()> _
Public Sub test_pheptru()
Assert.AreEqual(5, hthanh.pheptru(10, 5))
End Sub
<Test()> _
Public Sub test_phepnhan()
Assert.AreEqual(10, hthanh.phepnhan(2, 5))
End Sub
<Test()> _
Public Sub test_phepchia()
Assert.AreEqual(10, hthanh.phepchia(100, 10))
End Sub
End Class

Sau khi đã viết xong class này, ta tiến hành “Build” project để tạo ra file .dll. Và
khởi động tool NUnit test để test bài toán vừa xây dựng trên.
Màn đối với việc test bằng NUnit-console thì màn hình hiển thị như sau:

Hình 3.15. Màn hình NUnit test bằng giao diện console
Nhóm 01 – Lớp LT03A

Trang 21



×