Testing Flutter – Pengujian atau testing merupakan salah satu bagian terpenting dalam life-cycle pengembangan aplikasi. Testing biasanya digunakan sebagai parameter untuk memastikan apakah aplikasi kamu berkualitas atau tidak. Testing membutuhkan perencanaan dan eksekusi yang terstruktur agar aplikasi dapat berjalan dengan baik tanpa bug maupun error.
Pada umumnya, testing dilakukan pada setiap kode atau fungsi tertentu, semakin banyak fitur semakin banyak pula pengujian yang akan dilakukan dan semakin sulit pula proses pengujian apabila dilakukan secara manual. Bahasa pemrograman Dart dan framework Flutter menyediakan dukungan ekstensif untuk pengujian otomatis aplikasi.
Pengujian otomatis membantu kamu memastikan bahwa aplikasi bekerja dengan benar sebelum mempublikasikannya, sambil mempertahankan fitur dan kecepatan perbaikan bug aplikasi.
Di Flutter, pengujian otomatis terbagi menjadi 3 kategori, antara lain:
- Unit Testing
- Widget Testing
- Integration Testing
Secara umum, aplikasi yang telah teruji dengan baik memiliki banyak pengujian unit dan widget, yang di track (lacak) berdasarkan cakupan kode, ditambah pengujian integrasi yang cukup kompleks untuk mencakup semua komponen-komponen yang penting dalam sebuah kode program. Berikut ini adalah tabel yang mendefinisikan perbedaan ketiga jenis testing pada Flutter.
Unit | Widget | Integration | |
---|---|---|---|
Confidence | Low | Higher | Highest |
Maintenance cost | Low | Higher | Highest |
Dependencies | Few | More | Most |
Execution speed | Quick | Quick | Slow |
1. Unit Tests
Unit tests adalah pengujian yang dilakukan pada sebuah function, method, dan class. Tujuan dari unit test adalah memastikan kode berjalan dengan baik di berbagai kondisi logika program.
Dependensi maupun data yang diambil dari repository akan dibuat dalam mock out. Artinya, data dibuat dalam bentuk dummy atau data palsu yang digunakan untuk proses testing.
Pengujian unit atau unit testing merupakan jenis pengujian pada aplikasi di mana pengujian difokuskan pada apa yang disebut unit. Unit adalah bagian terkecil yang membangun aplikasi.
Contoh unit paling sederhana ketika kita berbicara tentang OOP (Pemrograman Berorientasi Objek) adalah Kelas dan Fungsi. Pengujian unit akan memastikan bahwa komponen-komponen kecil dari aplikasi berjalan dengan baik seperti yang diharapkan.
Untuk melakukan unit testing, kamu dapat menggunakan perintah:
test('description', () {});
Berikut ini adalah beberapa package yang biasa digunakan untuk mocking dalam testing, antara lain:
2. Widget Tests
Widget tests atau dalam istilah lain disebut instrumentation testing adalah jenis pengujian yang difokuskan pada bagian-bagian yang membangun user interface suatu aplikasi seperti button, text, dan sebagainya. Pengujian widget akan memastikan bahwa user interface tersusun sesuai dengan desain UI aplikasi dan mampu berinteraksi dengan baik dengan pengguna.
Pengujian widget atau widget tests melibatkan beberapa kelas dan memerlukan environment pengujian yang berhubungan dengan context life-cycle widget yang sesuai.
Pengujian ini lebih komprehensif dari pada pengujian unit. Namun, seperti halnya pengujian unit, environment pengujian widget memiliki implementasi yang jauh lebih sederhana dari pada sistem UI yang kompleks.
Untuk melakukan widget testing, kamu dapat menggunakan perintah:
testWidgets('description', (WidgetTester tester) {});
3. Integration Tests
Integration tests atau pengujian integrasi adalah jenis pengujian yang difokuskan pada pengujian seluruh alur dari aplikasi (end-to-end testing). Untuk menjalankan pengujian integrasi, kamu memerlukan emulator atau real device. Selama pengujian, aplikasi akan muncul di emulator dan otomatis aplikasi akan dijalankan.
Pengujian integrasi sangat membantu kamu dalam menguji fitur atau keseluruhan aplikasi berjalan selama proses pengembangan. Hal ini akan lebih efisien daripada kamu harus menjalankan aplikasi dan menguji fitur atau seluruh aplikasi secara manual.
Test ini menguji aplikasi secara penuh atau sebagian besar fitur. Tujuan dari pengujian integrasi adalah untuk memastikan bahwa semua widget dan services yang diuji bekerja dengan baik seperti yang diharapkan. Bahkan, kamu dapat menggunakan tes ini untuk melihat kinerja aplikasi sudah baik atau belum.
Untuk mengimplementasikan pengujian integrasi, kamu perlu menambahkan library ke pubspec.yaml.
dev_dependencies:
...
integration_test:
sdk: flutter
Kemudian di dalam direktori projek, kamu perlu membuat folder baru bernama integration_test. Contohnya adalah sebagai berikut:
integration_test
├── app_test.dart
└── robots
├── home_robot.dart
└── ...
Di folder integration_test terdapat app_test.dart yang berisi semua skenario pengujian end-to-end untuk aplikasi kamu. Kemudian, ada juga folder robots yang berisi setiap bagian skenario pengujian. Skenario pengujian tersebut dapat dipisahkan misalnya per halaman.