Kiểm thử tự động với NUnit theo hướng Data-Driven

Cập nhật ngày: 25/04/2024 - Đã có 593 lượt xem bài viết này!
Kiểm thử tự động với NUnit theo hướng Data-Driven
Một trong những thế mạnh của kiểm thử tự động là khả năng lặp lại kiểm thử với nhiều dữ liệu khác nhau mà không cần thay đổi các hành động (step) của kịch bản. Điều này, đặc biệt được sử dụng khi làm các kịch bản kiểm thử biên (boundary test cases).

Kiểm thử tự động với NUnit theo hướng Data-Driven

 Danh mục:

1. Thiết lập dữ liệu

2. Thiết lập hướng sử dụng dữ liệu

NUnit hỗ trợ chúng ta thực thi kiểm thử theo hướng Data-Driven khá mạnh với nhiều từ khóa để sử dụng trong nhiều trường hợp khác nhau. Thực thi mã kiểm thử tự động theo hướng Data-Driven được thiết lập theo hai giai đoạn: Tạo dữ liệu và cách sử dụng dữ liệu.

1. Thiết lập dữ liệu

Trong NUnit, có 3 từ khóa dùng để tạo dữ liệu: Values, Range, Random

Từ khóa Values được sử dụng để cung cấp dữ liệu cho một tham số của phương thức kiểm thử. Các giá trị sử dụng trong Values phải là một giá trị hằng (constant) và phải được khai báo trực tiếp ở phương thức kiểm thử. Nhược điểm chính của từ khóa này là quá hardcoded.
 

[Test]
public void Data_Values([Values(1, 2, 3)] int x, [Values(1, 2)] int y)
{
          Console.WriteLine(x + ” ” + y);
}


Từ khóa Range được sử dụng để tạo ra dữ liệu thay vì hardcoded như từ khóa Values. Dữ liệu từ Range tạo ra bởi giá trị bắt đầu và một giá trị kết thúc được cung cấp bởi kỹ sư kiểm thử. Đôi khi kỹ sư kiểm thử cũng cung cấp thêm một giá trị là bước nhảy để xác định khoảng cách giữa các giá trị dữ liệu được tạo ra. Vì giá trị được tạo ra bên trong một khoảng giá trị nên từ khóa này chỉ áp dụng với giá trị số mà thôi. Chuỗi thì không có khoảng cách giá trị, phải không :).
 

[Test]
public void Data_Range([Values(1, 2, 3)] int x, [Range(1, 4)] int y)
{
          Console.WriteLine(x + ” ” + y);
}


Nếu từ khóa Range vẫn còn một cái gì đó cố định cho dữ liệu được tạo ra, chúng ta có từ khóa Random để tạo dữ liệu một cách ngẩu nhiên hoàn toàn. Với Random, kỹ sư kiểm thử chỉ cần cho biết số lượng dữ liệu cần tạo, hoặc thêm giá trị tối đa và tối thiểu.
 

[Test]
public void Data_Random([Values(1, 2, 3)] int x, [Random(10)] int y)
{
          Console.WriteLine(x + ” ” + y);
}

2. Thiết lập hướng sử dụng dữ liệu

Sau khi tạo ra và thiết lập dữ liệu cho phương thức kiểm thử, chúng ta cần thiết lập chúng ta muốn thực thi kiểm thử với dữ liệu như thế nào. Với NUnit, chúng ta có các cách sử dụng dữ liệu: Combinatorial hoặc Sequential.

Về mặc định, nếu khi chúng ta tạo dữ liệu mà không đề cập gì đến cách sử dụng dữ liệu, cách Combinatorial sẽ được áp dụng. Với Combinatorial, NUnit sẽ kết hợp các dữ liệu trong từng tham số của phương thức kiểm thử thành nhiều bộ dữ liệu theo cách tổ hợp A x B x C x… Điều này có thể dẫn đến trường hợp bùng nổ tổ hợp nếu chúng ta sử dụng quá nhiều tham số cho một phương thức kiểm thử.
 

[Test, Combinatorial]
public void Data_Combine([Values(1, 2, 3)] int x, [Values(1, 2)] int y)
{
          Console.WriteLine(x + ” ” + y);
}


Theo như đoạn mã ở trên, chúng ta sẽ có 3 x 2 = 6 bộ dữ liệu cần thực thi kiểm thử.

Ngược lại, cách Sequential sẽ tạo ra các bộ dữ liệu kiểm thử theo thứ tự của dữ liệu và kết hợp 1 – 1 từng tham số. Nếu tham số nào không đủ số lượng dữ liệu, giá trị null sẽ được sử dụng.
 

[Test, Sequential]
public void Data_Sequential([Values(1, 2, 3)] int x, [Values(1, 2)] int y)
{
          Console.WriteLine(x + ” ” + y);
}


Theo như đoạn mã ở trên, chúng ta sẽ có 3 bộ dữ liệu cần thực thi kiểm thử: (1, 1); (2, 2); (3, null).

Chi tiết về các từ khóa trên, các bạn có thể xem clip dưới đây hoặc download mã nguồn tại đây.



Nunit còn hỗ trợ một số từ khóa khác với nhiều đặc biệt như giới hạn thời gian, tạo dữ liệu theo hướng đặc biệt, v.v… Các bạn có thể xem thêm tại trang chủ của NUnit.

BTV.Trần Thị Thu Huyền
Phòng Truyền Thông IMicroSoft Việt Nam
Hotline: 0916 878 224
Email: huyenttt@imicrosoft.edu.vn

 

Bạn đang muốn tìm kiếm 1 công việc với mức thu nhập cao.
✅ Hoặc là bạn đang muốn chuyển đổi công việc mà chưa biết theo học ngành nghề gì cho tốt.
✅ Giới thiệu với bạn Chương trình đào tạo nhân sự dài hạn trong 12 tháng với những điều đặc biệt mà chỉ có tại IMIC và đây cũng chính là sự lựa chọn phù hợp nhất dành cho bạn:
👉 Thứ nhất: Học viên được đào tạo bài bản kỹ năng, kiến thức chuyên môn lý thuyết, thực hành, thực chiến nhiều dự án và chia sẻ những kinh nghiệm thực tế từ Chuyên gia có nhiều năm kinh nghiệm dự án cũng như tâm huyết truyền nghề.
👉 Thứ hai: Được ký hợp đồng cam kết chất lượng đào tạo cũng như mức lương sau tốt nghiệp và đi làm tại các đối tác tuyển dụng của IMIC. Trả lại học phí nếu không đúng những gì đã ký kết.
👉 Thứ ba: Cam kết hỗ trợ giới thiệu công việc sang đối tác tuyển dụng trong vòng 10 năm liên tục.
👉 Thứ tư: Được hỗ trợ tài chính với mức lãi suất 0 đồng qua ngân hàng VIB Bank.
👉  Có 4 Chương trình đào tạo nhân sự dài hạn dành cho bạn lựa chọn theo học. Gồm có:
1)  Data Scientist full-stack
2)  Embedded System & IoT development full-stack
3)  Game development full-stack
4)  Web development full-stack 
✅ Cảm ơn bạn đã dành thời gian lắng nghe những chia sẻ của mình. Và tuyệt vời hơn nữa nếu IMIC được góp phần vào sự thành công của bạn. 
✅ Hãy liên hệ ngay với Phòng tư vấn tuyển sinh để được hỗ trợ về thủ tục nhập học.
✅ Chúc bạn luôn có nhiều sức khỏe và thành công!
 

Tham khảo các khóa đào tạo nhân sự qua danh mục