Ở bài trước mình đã giới thiệu qua về kiểm thử phần mềm – software testing. Hôm nay, mình sẽ đi sâu thêm vào tìm hiểu về một trong những loại kiểm thử cơ bản nhất đó là UnitTest, và mình sẽ làm một vài ví dụ về PHP UnitTest trong Laravel.
1. Unit test là gì
UnitTest đơn giản hiểu là kiểm thử ở mức đơn vị. Với UnitTest, chúng ta kiểm thử mọi thứ ta viết ra trong như class, method để xem các xử lý trong từng đơn vị đó liệu có hoạt động đúng như yêu cầu hay đúng như logic hay không. Mỗi unit sẽ có một hoặc một vài input đầu vào và có một output kết quả trả ra.
2. Yêu cầu đối với UnitTest
Môi trường
Để thực hiện việc test với UnitTest, ta cần phải thiết lập môi trường để có thể viết những đoạn test cần thiết cho các unit. Với ngôn ngữ PHP thì chúng ta có PHPUnit là framework hỗ trợ cho việc viết và chạy UnitTest và nó cũng đã được tích hợp trong framework Laravel
Testcases
Test Cases là 1 tập hợp các trường hợp điều kiện theo đó mà Tester có thể dựa vào nó để xác định liệu 1 ứng dụng, hệ thống phần mềm hoặc là 1 trong các tính năng của nó có hoạt động như mong muốn cần làm hay không?
Testcases của UnitTest có thể được tạo ra trước, hoặc trong quá trình viết code.
Code
Cuối cùng, bạn cũng cần hiểu rõ cách viết code cho UnitTest nếu bạn thực hiện viết test dựa trên PHPUnit hoặc bất cứ framework nào.
3. Viết và chạy thử UnitTest trên Laravel
Tại folder project laravel, bật terminal và chạy dòng lệnh command sau:
php artisan make:test FirstTest
Đoạn command trên sẽ tạo ra một file tên FirstTest.php trong thư mục tests/Feature với nội dung như sau:
<?php namespace Tests\Feature;
use Tests\TestCase; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase; class FirstTest extends TestCase { /** * A basic test example. * * @return void */ public function testExample() { $response = $this->get('/'); $response->assertStatus(200); } }
Đây là file chúng ta dùng để viết và chạy các test case. Các function test phải được bắt đầu bằng chữ test.
Thúng ta chạy thử với câu lệnh sau:
vendor/phpunit/phpunit/phpunit
ta sẽ có kết quả sau:
PHPUnit 7.5.10 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 366 ms, Memory: 16.00 MB
OK (1 test, 1 assertion)
Đây là những dòng test sơ khai nhất của phpunit trong laravel. Các bạn có thể tìm hiểu sâu hơn tại đây
4. Tổng kết
Đây là bài giới thiệu tổng quan về unit test và UnitTest trong laravel cùng với một vài ví dụ đơn giản khi bắt đầu làm quen với cách viết, thực hiện các hàm test của UnitTest trong laravel mà mình đã tìm hiểu được. Trong thời gian tới thì mình sẽ tiếp tục tìm hiểu và chia sẻ nhiều hơn về Testing trong laravel, đặc biệt là UnitTest.