Hỏi Đáp

Kiểm thử đơn vị

Unit testing là một mức độ kiểm thử ứng dụng, yên cầu phải sẵn sàng chuẩn bị trước Các test case hoặc script, chỉ định rõ tài liệu vào, Các bước thực thi và tài liệu mong đợi được xuất ra. Chúng ta cùng khám phá rõ hơn qua bài viết này nhé .

test php

banquyen png

Bài viết này được đăng tại

Bạn đang đọc: Kiểm thử đơn vị

freetuts.net

Kiểm thử đơn vị – Freetuts

, không được copy dưới mọi hình thức.

1. Unit là gì vậy?

Tìm hiểu thêm: Thôi nôi là gì vậy? Lễ thôi nôi có ý nghĩa như thế nào đối với trẻ

Trước tiên, với ta cần hiểu được khác niệm Unit là gì vậy ? Unit là một thành phần nhỏ nhất trong ứng dụng hoàn toàn có thể triển khai kiểm thử. Các hàm ( Function ), thủ tục ( Procedure ), lớp ( Class ), hoặc Các phương pháp ( Method ) đều là Unit .

2. Kiểm thử đơn vị (Unit testing) là gì vậy?

Kiểm thử đơn vị được định nghĩa là một loại kiểm thử ứng dụng trong đó Các đơn vị hay thành phần riêng không liên quan gì đến nhau của ứng dụng được kiểm thử . Kiểm thử đơn vị được thực thi trong quy trình tăng trưởng ( coding ) ứ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 định tính đúng chuẩn của đơn vị đó. Trong lập trình thủ tục, một đơn vị hoàn toàn có thể là một công dụng hoặc thủ tục riêng không liên quan gì đến nhau. Kiểm thử đơn vị thường được thực thi bởi developer . Trong quy trình tiến độ tăng trưởng ứng dụng, quá trình kiểm thử ứng dụng, Mô hình chữ V, Kiểm thử đơn vị là Lever kiểm thử tiên phong được triển khai trước khi kiểm thử tích hợp. Kiểm thử đơn vị là một kỹ thuật WhiteBox testing, thường được thực thi bởi developer. Tuy nhiên trong một thực tiễn, với do thời hạn bị số lượng giới hạn hoặc nhu yếu của Các developer, Các kỹ sư QA cũng triển khai kiểm thử đơn vị .

3. Tại sao cần kiểm thử đơn vị?

Đôi khi Các developer tiết kiệm ngân sách và chi phí thời hạn bằng cách triển khai kiểm thử đơn vị trong khoanh vùng phạm vi tối thiểu. Đây là một sai lầm đáng tiếc chính bới triển khai kiểm thử đơn vị không kĩ lưỡng sẽ dẫn đến ngân sách sửa lỗi cao hơn trong quy trình Kiểm thử mạng lưới hệ thống, Kiểm thử tích hợp và thậm chí còn Kiểm thử Beta sau khi ứng dụng hoàn tất. Kiểm thử đơn vị được thực thi trong tiến trình thiết kế xây dựng sẽ giúp tiết kiệm chi phí cả thời hạn và tài lộc. Đây là Các nguyên do chính để thực thi kiểm thử đơn vị .Bài viết này được đăng tại [ không lấy phí tuts. net ]

Unit Testing 1 png

Kiểm thử đơn vị giúp sửa lỗi sớm trong chu kỳ phát triển và tiết kiệm chi phí.Kiểm thử đơn vị giúp các developer hiểu cơ sở nền tảng và cho phép họ thay đổi nhanh chóngKiểm thử đơn vị tốt sẽ được phục vụ như tài liệu dự ánKiểm thử đơn vị có thể sử dụng lại code. Sao chép cả code và Các trường hợp kiểm thử sang dự án mới. Chỉnh code để có thể chạy lại.

4. Cách thực hiện kiểm thử đơn vị

Kiểm thử đơn vị có hai loại :

Thủ côngTự động

Kiểm thử đơn vị thường được thực thi tự động hóa nhưng vẫn hoàn toàn có thể được triển khai bằng tay thủ công. Kiểm thử đơn vị tự động hóa được ưa thích hơn . Theo hướng tiếp cận tự động hóa :

Một developer viết một phần code trong ứng dụng và chỉ kiểm thử chức năng. Sau đó, họ sẽ chú thích và cuối cùng sẽ loại bỏ code kiểm thử khi ứng dụng được triển khai.Một developer cũng có thể cô lập chức năng để kiểm thử được chặt chẽ hơn. Kiểm thử đơn vị được thực hiện kỹ lưỡng hơn nếu copy code vào môi trường kiểm thử riêng so với môi trường tự nhiên của nó. Cô lập code giúp nhận biết các ràng buộc không cần thiết giữa code được kiểm thử và các đơn vị khác trong sản phẩm. Các ràng buộc đó có thể được loại bỏ.Một lập trình viên thường sử dụng UnitTest Framework để phát triển các test cases tự động. Sử dụng Framework tự động hóa, các developer kiểm thử các tiêu chí codes để xác minh tính chính xác của code. Trong quá trình thực hiện các test cases, framework ghi và file log các test cases bị lỗi. Nhiều framework cũng sẽ tự động gắn cờ và báo cáo. Tùy thuộc vào mức độ nghiêm trọng của một lỗi, framework có thể tạm dừng kiểm thử.Quy trình làm việc của Kiểm thử đơn vị là: Tạo các test cases => Review/Rework => Baseline => Thực hiện các test cases

5. Kỹ thuật kiểm thử đơn vị

Các kỹ thuật bao phủ code được sử dụng trong kiểm thử đơn vị được liệt kê dưới đây:

Statement CoverageDecision CoverageBranch CoverageCondition CoverageFinite State Machine Coverage

6. Ví dụ kiểm thử đơn vị: đối tượng giả lập

Kiểm thử đơn vị dựa trên Các đối tượng người tiêu dùng giả lập được tạo để kiểm thử Các phần code chưa phải là một phần của ứng dụng hoàn hảo. Các đối tượng người tiêu dùng giả lập là Các phần còn thiếu của chương trình . Ví dụ : có một hàm cần Các biến hoặc đối tượng người dùng chưa được tạo. Trong kiểm thử đơn vị, chúng sẽ được thống kê giám sát dưới dạng Các đối tượng người tiêu dùng giả lập được tạo ra chỉ nhằm mục đích mục tiêu kiểm thử đơn vị, được triển khai trên phần code đó .

7. Công cụ kiểm thử đơn vị

Có một số ít công cụ tự động hóa có sẵn hỗ trợ kiểm thử đơn vị. Chúng ta cùng xem một vài ví dụ dưới đây :

Jtest: Parasoft Jtest là một plugin IDE sử dụng các frameworks mã nguồn mở (Junit, Mockito, PowerMock và Spring) với các chỉ dẫn và hành động, dễ dàng tạo, mở rộng và bảo trì kiểm thử đơn vị. Bằng cách kiểm thử đơn vị tự động trường hợp tốn thời gian, với sẽ giúp developer tập trung vào logic và tạo ra các bộ kiểm thử có ý nghĩa hơn.Junit: Junit là một công cụ kiểm thử miễn phí, được sử dụng cho ngôn ngữ lập trình Java. Junit cung cấp các nhận định để xác định phương pháp kiểm thử. Công cụ này kiểm thử dữ liệu đầu tiên, với sau đó chèn vào đoạn code.NUnit: NUnit được sử dụng rộng rãi, sử dụng framework kiểm thử đơn vị cho tất cả các ngôn ngữ .net. Đây là một công cụ mã nguồn mở cho phép viết các kịch bản thủ công, hỗ trợ các kiểm thử dựa trên dữ liệu (data-driven) có thể chạy song song.JMockit: JMockit là công cụ kiểm thử Đơn vị mã nguồn mở. Đây là một công cụ bao phủ code với các số liệu path và line. JMockit cho phép bắt chước API với cú pháp recording và verification. Công cụ này xác định Line coverage, Path Coverage, và Data Coverage.EMMA: EMMA là bộ công cụ mã nguồn mở dùng để phân tích và báo cáo code được viết bằng ngôn ngữ Java. Emma hỗ trợ các loại bao phủ như method, line, basic block. Emma dựa trên Java nên không phụ thuộc vào thư viện bên ngoài và có thể truy cập mã nguồn.PHPUnit: PHPUnit là một công cụ kiểm thử đơn vị cho lập trình viên PHP. Phải mất một phần nhỏ code được gọi là các đơn vị và kiểm thử từng mã riêng biệt. Công cụ này cũng cho phép các developer sử dụng các phương thức xác nhận được xác định trước để khẳng định rằng một hệ thống hoạt động theo một cách nhất định.

Đó chỉ là một vài công cụ kiểm thử đơn vị. Có nhiều công cụ kiểm thử đơn vị khác, đặc biệt quan trọng là so với ngôn từ C và Java, nhưng rất thuận tiện để tìm thấy một công cụ kiểm thử đơn vị cho nhu yếu lập trình của mình bất kể ngôn từ bạn sử dụng là gì vậy .

8. Kiểm thử hướng phát triển (Test Driven Development – TDD) & Kiểm thử đơn vị

Kiểm thử đơn vị trong TDD tương quan đến việc sử dụng thoáng rộng Các framework kiểm thử. Một framework kiểm thử đơn vị được sử dụng để tạo Các kiểm thử đơn vị tự động hóa. Các framework kiểm thử đơn vị không phải dành riêng cho TDD, nhưng chúng rất thiết yếu .

Các kiểm thử được viết trước codeDựa rất nhiều vào các framework kiểm thửTất cả các lớp trong các ứng dụng được kiểm thửTích hợp nhanh chóng và dễ dàng

9. Sai lầm trong kiểm thử đơn vị

Sai lầm:

Mất nhiều thời gian và kiểm thử đơn vị là không cần thiếtCode đã chay đúng, không cần kiểm thử đơn vị.

Sai lầm tạo nên từ Các giả định sai lầm đáng tiếc. Các giả định đó dẫn đến một vòng luẩn quẩn sau đây :

unit testing 2 png

Sự thật là kiểm thử đơn vị là rất thiết yếu, làm tăng vận tốc tăng trưởng ứng dụng . Các lập trình viên nghĩ rằng Kiểm thử tích hợp sẽ phát hiện toàn bộ Các lỗi và không cần thực thi kiểm thử đơn vị. Khi Các đơn vị được tích hợp, Các lỗi rất đơn thuần hoàn toàn có thể thuận tiện tìm thấy và sửa chữa thay thế trong đơn vị được kiểm thử sẽ mất một thời hạn rất dài để được theo dõi và thay thế sửa chữa .

10. Ưu điểm và Nhược điểm của kiểm thử đơn vị

Ưu điểm:

Các developer muốn tìm hiểu chức năng nào được cung cấp bởi một đơn vị và cách sử dụng chức năng này có thể xem xét các test cases kiểm thử đơn vị để có được sự hiểu biết cơ bản về unit API.Kiểm thử đơn vị cho phép lập trình viên cấu trúc lại code vào một ngày sau đó và đảm bảo mô-đun vẫn hoạt động chính xác (ví dụ: Kiểm thử hồi quy). Quy trình là viết các trường hợp kiểm thử cho tất cả các hàm và phương thức để mỗi khi thay đổi gây ra lỗi, nó có thể được xác định và sửa chữa nhanh chóng.Do tính chất mô-đun của kiểm thử đơn vị, chúng ta có thể kiểm thử các phần của dự án mà không cần chờ người khác hoàn thành.

Nhược điểm:

Kiểm thử đơn vị không thể phát hiện được mọi lỗi trong một chương trình. Không thể đánh giá tất cả các luồng thực hiện ngay cả trong các chương trình tầm thường nhấtKiểm thử đơn vị theo bản chất là tập trung vào một đơn vị code. Do đó, kiểm thử đơn vị không thể bắt lỗi tích hợp hoặc lỗi hệ thống lớn.

11. Thực hiện kiểm thử đơn vị như thế nào để đạt được kết quả tốt nhất?

Các trường hợp kiểm thử đơn vị phải độc lập. Trong trường hợp có bất kỳ cải tiến hoặc thay đổi trong yêu cầu, các trường hợp kiểm thử đơn vị sẽ không bị ảnh hưởng.Chỉ kiểm thử một đoạn code tại một thời điểm.Thực hiện theo các quy ước đặt tên rõ ràng và nhất quán cho các test cases kiểm thử đơn vịTrường hợp thay đổi code trong bất kỳ mô-đun nào, nên đảm bảo có Trường hợp kiểm thử đơn vị tương ứng cho mỗi mô-đun, với khi pass các trường hợp kiểm thử của một mô-đun mới nên thay đổi triển khai kiểm thử mô-đun khác.Lỗi được xác định trong quá trình kiểm thử đơn vị phải được sửa trước khi chuyển sang giai đoạn tiếp theo trong quy trình phát triển phần mềmCàng viết nhiều code mà không kiểm thử, bạn càng phải kiểm thử nhiều trường hợp.

unit testing 3 png

12. Kết luận

Kiểm thử đơn vị hoàn toàn có thể phức tạp hoặc đơn thuần tùy thuộc vào ứng dụng đang được kiểm thử và Các kế hoạch, công cụ, triết lý kiểm thử được sử dụng. Kiểm thử đơn vị luôn luôn thiết yếu ở nhiều Lever. Đó là một điều chắc như đinh .

Tìm hiểu thêm: The Strange History of the Student Borrower Defenses Provision