Unit Test Là Gì ? Khái Niệm Và Vai Trò Của Unit Test

Ở trường đại học nhiều bạn đã được học khái niệm về Unit Test trong khóa học kiểm thử phần mềm tuy nhiên vẫn còn khá mơ hồ. Hôm nay, Techacademy sẽ giới thiệu chi tiết về khái niệm, chức năng… của Unit Test

Unit test là gì? Tìm hiểu về unit test trong kiểm thử phần mềm

UNIT TEST là một cấp độ kiểm thử phần mềm trong đó các đơn vị (unit) / thành phần riêng lẻ của phần mềm được kiểm thử. Mục đích là để xác nhận rằng mỗi unit của phần mềm thực hiện như thiết kế. Một unit là phần nhỏ nhất có thể kiểm thử của bất kỳ phần mềm nào.

Unit test thường có một hoặc một vài đầu vào và thường là một đầu ra duy nhất. Trong lập trình thủ tục, một đơn vị có thể là một chương trình riêng lẻ, chức năng, thủ tục, v.v … Trong lập trình hướng đối tượng, unit nhỏ nhất là một phương thức, có thể thuộc về một lớp cơ sở / siêu lớp, lớp trừu tượng hoặc lớp dẫn xuất / lớp con. (Một số coi module của ứng dụng là một unit. Điều này không được khuyến khích vì có thể sẽ có nhiều unit riêng lẻ trong module đó.) Khung unit test, trình điều khiển, sơ khai và các đối tượng giả / giả được sử dụng để hỗ trợ unit test.

unit test là gì
unit test là gì

Định nghĩa bởi ISTQB:

+ Unit Test: Xem component test
+ Component test: Việc kiểm thử các thành phần phần mềm riêng lẻ.

Đặc điểm của Unit Test

  • Code Unit Test phải ngắn gọn, dễ hiểu, dễ đọc.
  • Mỗi Unit Test là 1 đơn vi riêng biệt, độc lập, không phụ thuộc vào unit khác.
  • Mỗi Unit Test là 1 method trong test class, tên method cũng là tên UnitTest. Do đó ta nên đặt tên hàm rõ ràng, nói rõ Unit Test này test cái gì (Test_A_Do_B), tên method có thể rất dàiii cũng không sao.
  • Unit Test phải nhanh, vì Unit Test sẽ được chạy để kiểm định lỗi mỗi lần build. Do đó trong Unit Test nên hạn chế các task tốn thời gian như gọi I/O, database, network,…
  • Unit Test nên test từng đối tượng riêng biệt. Vd: Unit Test cho Business Class thì chỉnh test chính BusinessClass đó, không nên dụng tới các class móc nối với nó (DataAccess Class chẳng hạn).

Phương pháp Unit Test

Unit Test được thực hiện bằng cách sử dụng phương pháp Kiểm thử Hộp Trắng (White Box Test).

Khi nào Unit Test được thực hiện?

Unit Test là cấp độ kiểm thử phần mềm đầu tiên và được thực hiện trước kiểm thử tích hợp.

XEM THÊM: Các Phương Pháp Kiểm Thử Phần Mềm

Ai thực hiện Unit Test?

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 code và xuyên suốt chu kỳ PTPM. Thông thường, Unit Test đòi hỏi kiểm tra viên có kiến thức về thiết kế và code của chương trình. Mục đích của Unit Test là bảo đảm thông tin được xử lý và xuất (khỏi Unit) là chính xác, trong mối tương quan với dữ liệu nhập và chức năng của Unit.

Điều này thường đòi hỏi tất cả các nhánh bên trong Unit đều phải được kiểm tra. Một nhánh thường là một chuỗi các lệnh được thực thi trong một Unit, ví dụ: chuỗi các lệnh sau điều kiện If và nằm giữa then … else là một nhánh. Thực tế việc chọn lựa các nhánh để đơn giản hóa việc kiểm tra và quét hết Unit đòi hỏi phải có kỹ thuật, đôi khi phải dùng thuật toán để chọn lựa.

Nhược điểm của Unit

Không có thời gian cho Unit Test

Viết Unit Test là tốn thời gian đó là lý do tại sao rất khó để đáp ứng thời hạn. Trong thực tế, Unit Test có thể tiết kiệm rất nhiều thời gian và nỗ lực phát triển trong thời gian dài.

Unit tests khác với viết code

Đúng, bạn hãy nghĩ rằng để viết được một unit test đôi khi còn mất thời gian hơn viết một chức năng code. Và có thể có những Lập Trình Viên viết được code nhưng chưa chắc viết được test case. Không có gì đảm bảo, ngay cả khi mã được kiểm tra kỹ lưỡng, sẽ không có lỗi.

XEM THÊM: Các Mô Hình Phát triển Phần Mềm

Unit Test Tasks

+ Unit Test plan

Chuẩn bị
Review
Thực hiện lại
Baseline

+ Unit Test Cases/Scripts

Chuẩn bị
Review
Thực hiện lại
Baseline

+ Unit Test

Biểu diễn

Unit Test Để Làm Gì

  • Unit Test làm tăng sự tự tin trong việc thay đổi / duy trì mã. Nếu các bài Unit Test tốt được viết và nếu chúng được chạy mỗi khi bất kỳ mã nào được thay đổi, chúng tôi sẽ có thể kịp thời nắm bắt bất kỳ lỗi nào được đưa ra do thay đổi. Ngoài ra, nếu các mã đã được thực hiện ít phụ thuộc lẫn nhau hơn để thực hiện Unit Test, thì tác động ngoài ý muốn của các thay đổi đối với bất kỳ mã nào là ít hơn.
  • Mã được tái sử dụng nhiều hơn. Để thực hiện Unit Test, mã cần phải được module hóa. Điều này có nghĩa là mã dễ sử dụng hơn.
  • Phát triển nhanh hơn. Làm sao? Nếu bạn không có Unit Test tại chỗ, bạn viết mã của mình và thực hiện ‘kiểm thử dành cho nhà phát triển’ mờ đó (Bạn đặt một số điểm dừng, kích hoạt GUI, cung cấp một vài đầu vào hy vọng đánh vào mã của bạn và hy vọng rằng bạn đã thiết lập xong). Nhưng, nếu bạn có Unit Test tại chỗ, bạn viết kiểm thử, viết mã và chạy kiểm thử. Viết bài kiểm thử mất thời gian nhưng thời gian được bù lại bằng thời gian ít hơn để chạy các bài kiểm thử; Bạn không cần kích hoạt GUI và cung cấp tất cả các đầu vào đó. Và, tất nhiên, các bài Unit Test đáng tin cậy hơn nhà phát triển kiểm thử. Phát triển nhanh hơn trong thời gian dài quá. Làm sao? Nỗ lực cần thiết để tìm và sửa các lỗi được tìm thấy trong quá trình Unit Test là rất ít so với nỗ lực cần có để sửa các lỗi được tìm thấy trong quá trình kiểm thử hệ thống hoặc kiểm thử chấp nhận.
  • Chi phí sửa chữa một lỗi được phát hiện trong quá trình Unit Test là ít hơn so với các lỗi được phát hiện ở các cấp cao hơn. So sánh chi phí (thời gian, công sức, sự phá hủy) của một khiếm khuyết được phát hiện trong quá trình kiểm thử chấp nhận hoặc khi phần mềm hoạt động.
  • Gỡ lỗi rất dễ dàng. Khi kiểm thử thất bại, chỉ những thay đổi mới nhất cần được gỡ lỗi. Với kiểm thử ở mức cao hơn, những thay đổi được thực hiện trong khoảng vài ngày / tuần / tháng cần phải được quét.

Mẹo khi dùng Unit Test

  • Tìm một công cụ / framework cho ngôn ngữ của bạn.
  • Không tạo trường hợp kiểm thử cho tất cả mọi thứ. Thay vào đó, hãy tập trung vào các bài kiểm thử tác động đến hành vi của hệ thống.
  • Cô lập môi trường phát triển từ môi trường kiểm thử.
  • Sử dụng dữ liệu kiểm thử gần với dữ liệu sản xuất.
  • Trước khi sửa lỗi, viết một bài kiểm thử để lộ khuyết điểm. Tại sao? Đầu tiên, sau này bạn sẽ có thể bắt lỗi nếu bạn không sửa nó đúng cách. Thứ hai, bộ kiểm thử của bạn bây giờ toàn diện hơn. Thứ ba, rất có thể bạn sẽ quá lười để viết bài kiểm thử sau khi bạn đã sửa lỗi.
  • Viết các trường hợp kiểm thử độc lập với nhau. Ví dụ, nếu một lớp phụ thuộc vào cơ sở dữ liệu, không viết trường hợp tương tác với cơ sở dữ liệu để kiểm thử lớp. Thay vào đó, hãy tạo một giao diện trừu tượng xung quanh kết nối cơ sở dữ liệu đó và triển khai giao diện đó với một đối tượng giả.
  • Nhằm mục đích bao gồm tất cả các con đường thông qua các đơn vị. Đặc biệt chú ý đến điều kiện vòng lặp.
  • Hãy chắc chắn rằng bạn đang sử dụng một hệ thống kiểm soát phiên bản để theo dõi các kịch bản kiểm thử của bạn. Ngoài việc viết các trường hợp để xác minh hành vi, hãy viết các trường hợp để đảm bảo hiệu suất của mã.
    Thực hiện Unit Test liên tục và thường xuyên.

Thêm một lý do

Hãy để nói rằng bạn có một chương trình bao gồm hai đơn vị và kiểm thử duy nhất bạn thực hiện là kiểm thử hệ thống. Trong quá trình kiểm thử, bạn tìm thấy một lỗi. Bây giờ, làm thế nào bạn sẽ xác định nguyên nhân của vấn đề?

  • Là lỗi do lỗi trong unit 1?
  • Là lỗi do lỗi trong unit 2?
  • Là lỗi do lỗi trong cả hai unit?
  • Là lỗi do một lỗi trong giao diện giữa các unit?
  • Là lỗi do một lỗi trong kiểm thử hoặc trường hợp kiểm thử?

Mock Unit Test là gì

Mock object (MO) là một đối tượng ảo mô phỏng các tính chất và hành vi giống hệt như đối tượng thực được truyền vào bên trong khối mã đang vận hành nhằm kiểm tra tính đúng đắn của các hoạt động bên trong. Mock object có các đặc điểm sau:

+ Đơn giản hơn đối tượng thực nhưng vẫn giữ được sự tương tác với các đối tượng khác.

+ Không lặp lại nội dung đối tượng thực.

+Cho phép thiết lập các trạng thái riêng trợ giúp cho việc thực hiện unit test.

Unit Test thường bị bỏ qua nhưng trên thực tế, đây là cấp độ kiểm thử quan trọng nhất. Trên đây là các khái niệm chi tiết về Unit Test. Hy vọng bài viết trên giúp các bạn hiểu sâu sắc và rõ ràng hơn về khái niệm Unit Test. hẹn gặp lại các bạn ở bài viết tiếp theo.

Bài viết liên quan

Leave a Reply

Your email address will not be published. Required fields are marked *

Hotline: 0984.876.750
Chat Facebook
Gọi điện ngay