testing
========
Unit test : Hanya untuk testing satu method biasanya untuk memastikan rumus (yang biasanya kompleks) benar proses dan outputnya. Kalau methodnya cuma CRUD, tidak usah dibuat unit test.
========
Functional test : Untuk testing satu controller, jadi kalau ada CRUD Users, bisa dibuatkan functional test dan biasanya sudah testing datatabasenya sehingga saya pakai
'use Illuminate\Foundation\Testing\DatabaseTransactions;'.
Ini tidak perlu ada hubungannya dengan javascript, bisa via phpunitnya laravel. Ini cuplikan dari dokumentasi rails. http://guides.rubyonrails.org/testing.html...
"In Rails, testing the various actions of a controller is a form of writing functional tests."
========
Integration test: Untuk testing antar controllers biasanya, misalnya jika CRUD yang ada ajax callnya ke route berbeda, bisa dikategorikan disini. Di laravel juga sudah ada, gunakan dokumentasi ini untuk ajax call dan lihat json outputnya. https://laravel.com/docs/5.3/application-testing... dan ini cuplikan dari dokumentasi rails
"Integration tests are used to test how various parts of your application interact. They are generally used to test important workflows within our application."
========
User Acceptance Test: Biasanya saya pakai ini untuk interaksi javascriptnya, sekarang pakai selenium walaupun masih sulit untuk beberapa case, sehingga case tertentu, cukup dengan integration test saja. Sementara di depan ada Laravel Dusk, kita tunggu.
========
Regression Test: ini testing untuk mencari celah bug pada prosesnya, tidak ada error di method misalnya, tapi outputnya salah. Mungkin saya biasanya pakai Unit Test saja sih.
========
Environment: di laravel hanya bisa satu environment via .env. Saya sudah berkali-kali coba tanpa modifikasi agar memanggil .env.testing belum berhasil. Sehingga sekarang .env digunakan untuk database mysql sedangkan untuk testing di config/database.php saya modifikasi menjadi 'default' => $app->environment('testing') ? 'sqlite' : env('DB_CONNECTION', 'mysql'),
karena secara default phpunit.xml sudah ada code <env name="APP_ENV" value="testing"/>
Tapi di Laravel 5.2 ke atas tidak bisa modifikasi config di atas, karena helper methodnya belum terload. Sehingga yang dilakukan di phpunit.xml itu tambahkan path-nya sqlite. <env name="DB_DATABASE" value='path/to/database.sqlite' /> atau jika ingin menggunakan database mysql juga, tapi beda database dengan .env maka lengkapi seperti setup value database di mysql sehingga menjadi
<env name="APP_ENV" value="testing"/>
<env name="DB_HOST" value='localhost' />
<env name="DB_DATABASE" value='mysql_testing' />
<env name="DB_USERNAME" value='root' />
<env name="DB_PASSWORD" value='' />
Unit test : Hanya untuk testing satu method biasanya untuk memastikan rumus (yang biasanya kompleks) benar proses dan outputnya. Kalau methodnya cuma CRUD, tidak usah dibuat unit test.
========
Functional test : Untuk testing satu controller, jadi kalau ada CRUD Users, bisa dibuatkan functional test dan biasanya sudah testing datatabasenya sehingga saya pakai
'use Illuminate\Foundation\Testing\DatabaseTransactions;'.
Ini tidak perlu ada hubungannya dengan javascript, bisa via phpunitnya laravel. Ini cuplikan dari dokumentasi rails. http://guides.rubyonrails.org/testing.html...
"In Rails, testing the various actions of a controller is a form of writing functional tests."
========
Integration test: Untuk testing antar controllers biasanya, misalnya jika CRUD yang ada ajax callnya ke route berbeda, bisa dikategorikan disini. Di laravel juga sudah ada, gunakan dokumentasi ini untuk ajax call dan lihat json outputnya. https://laravel.com/docs/5.3/application-testing... dan ini cuplikan dari dokumentasi rails
"Integration tests are used to test how various parts of your application interact. They are generally used to test important workflows within our application."
========
User Acceptance Test: Biasanya saya pakai ini untuk interaksi javascriptnya, sekarang pakai selenium walaupun masih sulit untuk beberapa case, sehingga case tertentu, cukup dengan integration test saja. Sementara di depan ada Laravel Dusk, kita tunggu.
========
Regression Test: ini testing untuk mencari celah bug pada prosesnya, tidak ada error di method misalnya, tapi outputnya salah. Mungkin saya biasanya pakai Unit Test saja sih.
========
Environment: di laravel hanya bisa satu environment via .env. Saya sudah berkali-kali coba tanpa modifikasi agar memanggil .env.testing belum berhasil. Sehingga sekarang .env digunakan untuk database mysql sedangkan untuk testing di config/database.php saya modifikasi menjadi 'default' => $app->environment('testing') ? 'sqlite' : env('DB_CONNECTION', 'mysql'),
karena secara default phpunit.xml sudah ada code <env name="APP_ENV" value="testing"/>
Tapi di Laravel 5.2 ke atas tidak bisa modifikasi config di atas, karena helper methodnya belum terload. Sehingga yang dilakukan di phpunit.xml itu tambahkan path-nya sqlite. <env name="DB_DATABASE" value='path/to/database.sqlite' /> atau jika ingin menggunakan database mysql juga, tapi beda database dengan .env maka lengkapi seperti setup value database di mysql sehingga menjadi
<env name="APP_ENV" value="testing"/>
<env name="DB_HOST" value='localhost' />
<env name="DB_DATABASE" value='mysql_testing' />
<env name="DB_USERNAME" value='root' />
<env name="DB_PASSWORD" value='' />
0 comments: