Chuyển đến nội dung chính

Unit test là gì

Ở 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

Lợi ích Unit Test

  • 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ử?

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.

The post Unit test là gì first appeared on Techacademy.



Nhận xét

Bài đăng phổ biến từ blog này

Vẽ Tam Giác Trong C++

Vẽ tam giác trong C++ là một trong những bài tập lập trình về C++ sử dụng vòng lặp khá hay giúp các bạn luyện tư duy code cũng như cách sử dụng vòng lặp. Dưới đây là một số lời giải các bài tập vẽ tam giác trong C++ I. Vẽ Tam Giác Cân Trong C++ Viết chương trình C++ sử dụng ký tự * để vẽ tam giác vuông cân trong C++.Chúng ta sử dụng hai vòng lặp lồng nhau để giải bài toán này. Lời Giải: #include <stdio.h> #include <stdlib.h> int main() { int n; int q = 0; printf("Chuong trinh nay se in ra tam giac can\n"); printf("Nhap chieu cao tam giac cua ban: \n"); scanf("%d",&n); while (n > 0) { for (int i = 1; i<n; i++) printf("%c", ' '); for (int k = 0; k <= q; k ++) printf("%c", '*'); n -- ; q += 2 ; printf("\n"); } return 0; } II. Vẽ Hình Tam Giác Trong C++ Viết một chương trình in ra hình

Nên học C hay C++ ? Lựa chọn nào tốt hơn

Bạn đang mới học lập trình và đang phân vân nên học lập trình C hay C++ , bài viết dưới đây của Tehcacademy.edu.vn sẽ phần nào giải đáp cho bạn thắc mắc trên.  I. Nên học ngôn ngữ lập trình C hay C++ Nếu bạn đang phân vẫn lựa chọn nên học C hay C++ thì dưới đây là một số ưu điểm và nhược điểm của ngôn ngữ lập trình C và C++. Dựa trên đánh giá này, giúp bạn lựa chọn nên học lập trình C hay C++ 1, Ưu điểm và nhược điểm của ngôn ngữ lập trình C, C++ Dưới đây là một số ưu điểm, nhược điểm của ngôn ngữ c và c++: C, C++ đều có những ưu điểm và nhược điểm riêng + Ngôn ngữ lập trình C Ưu điểm : + Hiệu suất cao Mỗi một ngôn ngữ đều dựa vào khả năng sử dụng bộ nhớ để đánh giá hiệu suất. Đây chính là ưu điểm đầu tiên của C, nó có thể chạy mượt mà trên những hệ thống giới hạn về dung lượng, lý do là vì ngay từ đầu C được thiết kế với mục đích thay thế ASM trong các hệ thống bộ nhớ cực hạn chế thập niên 1960. + Tính linh hoạt Lập trình C có 2 tính linh hoạt và là 2 ưu điểm nổi bật củ

Tìm Phần Tử Xuất Hiện Nhiều Nhất Trong Mảng C++

Tìm phần tử xuất hiện nhiều nhất trong mảng là một vấn đề phổ biến trong lập trình C++. Để giải quyết vấn đề này, bạn có thể sử dụng một số phương pháp khác nhau như sử dụng bảng băm (hash table), sắp xếp mảng và duyệt qua mảng. Cùng techacademy đi tìm hiểu chi tiết chủ đề này ngay bài viết bên dưới đây nhé. I. Tìm Phần Tử Xuất Hiện Nhiều Nhất Trong Mảng C++ Trong lập trình C++, việc tìm ra phần tử xuất hiện nhiều nhất trong một mảng là một vấn đề phổ biến và quan trọng. Điều này thường được thực hiện thông qua việc sử dụng các thuật toán và cấu trúc dữ liệu phù hợp. Chúng ta sẽ thảo luận về cách thực hiện điều này một cách hiệu quả trong ngôn ngữ lập trình C++. 1. Sử dụng Bảng Băm (Hash Map): Một cách phổ biến để giải quyết vấn đề này là sử dụng bảng băm. Chúng ta có thể duyệt qua mảng, đếm số lần xuất hiện của mỗi phần tử và lưu trữ chúng trong một bảng băm. 2. Sắp Xếp và Đếm: Một cách khác là sắp xếp mảng và sau đó duyệt qua mảng để đếm số lần xuất hiện của mỗi phần tử liên ti