Unit test là gì?

Bài viết gần đây

OFFER ĐẦU TIÊN CỦA CHƯƠNG TRÌNH RTEP – CHẠM ĐẾN MỤC TIÊU ĐẶT CHÂN ĐẾN XỬ SỞ HOA ANH ĐÀO

Tháng 8 vừa qua, Chương trình đào tạo kỹ sư CNTT tài năng Việt Nhật (RTEP) nhận được tin...

Ở đây có Chương trình RTEP sẵn sàng tuyển sinh khóa K3

Trong chuỗi các hoạt động Rikkeisoft tham gia tại “Tuần lễ việc làm DTU 2022”, chương trình đào tạo...

Học kỳ mới đã tới, khai giảng lớp đào tạo tiếng Nhật IT thôi!

Ngày 1/3/2022, chương trình RTEP đã Khai giảng lớp Đào tạo tiếng Nhật IT dành cho các RTEP-er K1...

Phá tan rào cản, RTEP K1 và K2 hoàn thành kỳ học thử thách

Vượt qua những trở ngại và thách thức lớn trong giai đoạn dịch bệnh Covid 19, các học viên...

TUỔI TRẺ NÀY MÌNH CÙNG NHAU ….

Chủ nhật tuần vừa qua, tất cả các học viên RTEP đã có một chuyến Teambuilding đầu năm đáng...

1. Khái niệm

Unit Test (UT) là một loại kiểm thử phần mềm trong đó các đơn vị hay thành phần riêng lẻ của phần mềm được kiểm thử. Kiểm thử đơn vị (UT) được thực hiện trong quá trình phát triển ứng dụng. Mục tiêu của Kiểm thử đơn vị là cô lập một phần code và xác minh tính chính xác của đơn vị đó.

Mỗi UT sẽ gửi đi một thông điệp và kiểm tra câu trả lời nhận được đúng hay không, bao gồm:

– Các kết quả trả về mong muốn

– Các lỗi ngoại lệ mong muốn

Các đoạn mã UT hoạt động liên tục hoặc định kỳ để thăm dò và phát hiện các lỗi kỹ thuật trong suốt quá trình phát triển, do đó UT còn được gọi là kỹ thuật kiểm nghiệm tự động. 

UT có các đặc điểm sau:

– Đóng vai trò như những người sử dụng đầu tiên của hệ thống.

– Chỉ có giá trị khi chúng có thể phát hiện các vấn đề tiềm ẩn hoặc lỗi kỹ thuật.

2. Unit Test có cần thiết không?

Để trả lời cho câu hỏi này, chúng ta sẽ tìm hiểu ý nghĩa của UT:

  • Phát triển nhanh hơn.

Một khi các developer viết các test case thì việc gỡ bug sẽ ít tốn thời gian hơn và giúp tự tin hơn về việc thực hiện các thay đổi code. Những kỹ năng về mọi mặt sẽ phát triển nhanh hơn các developer bình thường.

Tính cẩn thận và trách nhiệm trong những unit test cũng khẳng định ở bên ngoài cuộc sống của họ.

  • Cấu trúc Code tốt hơn.

Khi các nhà phát triển viết unit tests, sự nhấn mạnh của họ là suy nghĩ về cách mã của họ sẽ được sử dụng trên toàn hệ thống, điều này thường dẫn đến thiết kế tốt hơn.

Ngoài ra, thực hiện UT còn giúp giảm công việc cho các tester, giảm giá thành chi phí code, giảm chi phí cho việc bảo trì trong tương lai…

3. Unit Test có nhược điểm gì?

Mặc dù các lợi ích của Unit Test đang bắt đầu được hiểu rộng rãi hơn, nhưng vẫn còn một số lý do khiến UT không được áp dụng đầy đủ hơn, điều này khiến tiềm năng của nó không được thực hiện.

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

Viết UT sẽ phải chấp nhận tốn thời gian, đó là lý do tại sao rất khó để đáp ứng thời hạn. Trong thực tế, UT 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.

  • UT khác với viết code, để viết được một UT đô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 developer viết được code nhưng ngần ngại khi viết test case.

4. Vòng đời Unit Test

Unit Test có 3 trạng thái cơ bản:

– Fail (Trạng thái lỗi)

– Ignore (Tạm ngừng thực hiện)

– Pass (Trạng thái làm việc)

Toàn bộ UT được vận hành trong một hệ thống tách biệt. Có rất nhiều PM hỗ trợ thực thi UT với giao diện trực quan. Thông thường, trạng thái của UT được biểu hiện bằng các màu khác nhau: Màu xanh (Pass), Màu vàng (Ignore) và Màu đỏ (Fail).

UT chỉ thực sự đem lại hiệu quả khi:

– Được vận hành lặp lại nhiều lần

– Tự động hoàn toàn

– Độc lập với các UT khác.

5. Thiết kế Unit test

Mỗi UT đều được thiết kế theo trình tự sau:

– Thiết lập các điều kiện cần thiết: khởi tạo các đối tượng, xác định tài nguyên cần thiết, xây dựng các dữ liệu giả…

– Triệu gọi các phương thức cần kiểm tra.

– Kiểm tra sự hoạt động đúng đắn của các phương thức.

– Dọn dẹp tài nguyên sau khi kết thúc kiểm tra.

6. Ứng dụng Unit test

– Kiểm tra mọi đơn vị nhỏ nhất là các thuộc tính, sự kiện, thủ tục và hàm.

– Kiểm tra các trạng thái và ràng buộc của đối tượng ở các mức sâu hơn mà thông thường chúng ta không thể truy cập được.

– Kiểm tra các quy trình (process) và mở rộng hơn là các khung làm việc (workflow – tập hợp của nhiều quy trình)

7. Cách code hiệu quả với Unit Test

Phân tích các tình huống có thể xảy ra đối với mã. Đừng bỏ qua các tình huống tồi tệ nhất có thể xảy ra, ví dụ dữ liệu nhập làm một kết nối cơ sở dữ liệu thất bại, ứng dụng bị treo vì một phép toán chia cho “0”, các thủ tục đưa ra lỗi ngoại lệ sai có thể phá hỏng ứng dụng một cách bí ẩn.

Mọi UT phải bắt đầu với trạng thái “Fail” và chuyển trạng thái “Pass” sau một số thay đổi hợp lý đối với mã chính.

Mỗi khi viết một đoạn mã quan trọng, hãy viết các UT tương ứng cho đến khi bạn không thể nghĩ thêm tình huống nào nữa.

Nhập một số lượng đủ lớn các giá trị đầu vào để phát hiện điểm yếu của mã theo nguyên tắc:

– Nếu nhập giá trị đầu vào hợp lệ thì kết quả trả về cũng phải hợp lệ

– Nếu nhập giá trị đầu vào không hợp lệ thì kết quả trả về phải không hợp lệ

– Sớm nhận biết các đoạn mã không ổn định và có nguy cơ gây lỗi cao, viết UT tương ứng để khống chế.

Ứng với mỗi đối tượng nghiệp vụ (Business object) hoặc đối tượng truy cập dữ liệu (Data access object), nên tạo ra một lớp kiểm tra riêng vì những lỗi nghiêm trọng có thể phát sinh từ các đối tượng này.

Để ngăn chặn các lỗi có thể phát sinh trở lại thực thi tự động tất cả UT mỗi khi có một sự thay đổi quan trọng, hãy làm công việc này mỗi ngày. Các UT lỗi cho chúng ta biết thay đổi nào là nguyên nhân gây lỗi.

Để tăng hiệu quả và giảm rủi ro khi viết các UT, cần sử dụng nhiều phương thức kiểm tra khác nhau. Hãy viết càng đơn giản càng tốt.

Như vậy, viết UT cũng đòi hỏi sự nỗ lực, kinh nghiệm và sự sáng tạo như viết PM. Và viết UT cũng tương tự như viết mã một chương trình, điều cần làm là không ngừng thực hành.

Kiểm thử đơn vị chỉ thực sự mang lại lợi ích nếu chúng ta đặt vấn đề chất lượng phần mềm lên hàng đầu hơn là chỉ nhằm kết thúc công việc đúng thời hạn. Và khi đã thành thạo với công việc viết UT, bạn có thể đọc thêm về các kỹ thuật xây dựng UT phức tạp hơn, trong số đó có mô hình đối tượng ảo sẽ được trình bày trong phần tiếp theo.

Nguồn: Topdev

Góc Nhật Bản

Những điều cần biết về kì thi năng lực tiếng Nhật JLPT

JLPT là gì? Kỳ thi năng lực tiếng Nhật có tên tiếng Nhật 日本語能力試験(にほんごのうりょくしけん) tiếng Anh: "Japanese Language Proficiency Test" - JLPT) là kì...

Hanami – Độc đáo lễ hội hoa anh đào Nhật Bản

Hoa anh đào (桜, sakura) được xem như là quốc hoa (không chính thức) của đất nước mặt trời mọc. Hàng năm, các ngôi...

Bí quyết đánh đổ bài thi JLPT

Bất kỳ ai khi theo học tiếng Nhật Nhật cũng biết về bài thi JLPT. Đây là bài thi năng lực tiếng Nhật được...

Nét đặc trưng trong văn hóa chào hỏi của người Nhật Bản

Đối với người Nhật Bản, văn hóa chào hỏi chính là một nét văn hóa đặc trưng dần trở thành phong cách của mỗi...

Truyền nghề

BÍ KÍP “NHỜ VẢ” CHO CÁC LẬP TRÌNH VIÊN ÍT KINH NGHIỆM TẠI NƠI CÔNG SỞ

Khi mới chập chững làm quen với công việc của một lập trình viên, chắc chắn bạn sẽ thường xuyên gặp nhiều vướng mắc...

DÙNG EMAIL ĐỈNH CAO, ĐỪNG MẮC NHỮNG SAI LẦM SAU

Hiện nay, email vẫn là phương tiện chủ yếu giúp chúng ta kết nối với mọi người, trong cả việc công lẫn việc cá...

19 Sai Lầm Của Lập Trình Viên

Sưu tầm nhiều sách, tải nhiều video học lập trình nhưng bao giờ đọc và học nghiêm túc Hiện nay, sách Ebook quá nhiều,...

Lập trình viên có phải là những anh hùng bàn phím?

LÀM LẬP TRÌNH VIÊN LÀ GẮN LIỀN VỚI MÁY TÍNH! Đây là một định kiến mà hầu hết mọi người đều nghĩ đến khi nhắc...