Saya hanya ingin menambahkan dan memberikan lebih banyak konteks tentang mengapa kita memiliki tingkat tes ini, apa yang sebenarnya mereka maksud dengan contoh
Mike Cohn dalam bukunya "Succeeding with Agile" muncul dengan "Testing Pyramid" sebagai cara untuk mendekati tes otomatis dalam proyek. Ada berbagai interpretasi dari model ini. Model ini menjelaskan jenis tes otomatis apa yang perlu dibuat, seberapa cepat mereka dapat memberikan umpan balik pada aplikasi yang sedang diuji dan siapa yang menulis tes ini. Pada dasarnya ada 3 level pengujian otomatis yang diperlukan untuk setiap proyek dan mereka adalah sebagai berikut.
Unit Tests -
Ini menguji komponen terkecil dari aplikasi perangkat lunak Anda. Ini benar-benar bisa menjadi satu fungsi dalam kode yang menghitung nilai berdasarkan pada beberapa input. Fungsi ini adalah bagian dari beberapa fungsi lain dari basis kode perangkat keras / lunak yang menyusun aplikasi.
Misalnya - Mari kita ambil aplikasi kalkulator berbasis web. Komponen terkecil dari aplikasi ini yang perlu diuji unit dapat berupa fungsi yang melakukan penambahan, komponen lain yang melakukan pengurangan dan seterusnya. Semua fungsi kecil ini disatukan membuat aplikasi kalkulator.
Secara historis pengembang menulis tes ini karena biasanya ditulis dalam bahasa pemrograman yang sama dengan aplikasi perangkat lunak. Kerangka kerja pengujian unit seperti JUnit dan NUnit (untuk java), MSTest (untuk C # dan .NET) dan Jasmine / Mocha (untuk JavaScript) digunakan untuk tujuan ini.
Keuntungan terbesar dari unit test adalah, mereka berjalan sangat cepat di bawah UI dan kami bisa mendapatkan umpan balik cepat tentang aplikasi. Ini harus terdiri lebih dari 50% dari tes otomatis Anda.
API / Tes Integrasi -
Ini menguji berbagai komponen sistem perangkat lunak secara bersamaan. Komponen-komponen tersebut dapat mencakup pengujian basis data, API (Application Programming Interface), alat dan layanan pihak ke-3 bersama dengan aplikasi.
Misalnya - Dalam contoh kalkulator kami di atas, aplikasi web dapat menggunakan database untuk menyimpan nilai, menggunakan API untuk melakukan beberapa validasi sisi server dan mungkin menggunakan alat / layanan pihak ketiga untuk mempublikasikan hasil ke cloud untuk membuatnya tersedia di berbagai platform.
Secara historis seorang pengembang atau QA teknis akan menulis tes ini menggunakan berbagai alat seperti tukang pos, SoapUI, JMeter dan alat-alat lain seperti Testim.
Ini berjalan jauh lebih cepat daripada tes UI karena masih berjalan di bawah tenda tetapi mungkin memakan waktu lebih sedikit daripada tes unit karena harus memeriksa komunikasi antara berbagai komponen independen dari sistem dan memastikan mereka memiliki integrasi yang mulus. Ini harus terdiri lebih dari 30% dari tes otomatis.
Tes UI-
Akhirnya, kami memiliki tes yang memvalidasi UI aplikasi. Tes ini biasanya ditulis untuk menguji aliran ujung ke ujung melalui aplikasi.
Misalnya - Dalam aplikasi kalkulator, aliran ujung ke ujung dapat terjadi, membuka browser-> Memasukkan url aplikasi kalkulator -> Masuk dengan nama pengguna / kata sandi -> Membuka aplikasi kalkulator -> Melakukan beberapa operasi pada kalkulator -> memverifikasi hasil-hasil itu dari UI -> Keluar dari aplikasi. Ini bisa menjadi ujung ke ujung aliran yang akan menjadi kandidat yang bagus untuk otomatisasi UI.
Secara historis, QA teknis atau penguji manual menulis tes UI. Mereka menggunakan kerangka kerja open source seperti Selenium atau platform pengujian UI seperti Testim untuk membuat, menjalankan, dan memelihara pengujian. Tes-tes ini memberikan lebih banyak umpan balik visual karena Anda dapat melihat bagaimana tes berjalan, perbedaan antara hasil yang diharapkan dan hasil aktual melalui screenshot, log, laporan pengujian.
Batasan terbesar dari tes UI adalah, mereka relatif lambat dibandingkan dengan tes tingkat Unit dan API. Jadi, itu harus terdiri hanya 10-20% dari keseluruhan tes otomatis.
Dua jenis tes berikutnya dapat bervariasi berdasarkan proyek Anda tetapi idenya adalah-
Tes Asap
Ini bisa merupakan kombinasi dari 3 level pengujian di atas. Idenya adalah untuk menjalankannya selama setiap kode masuk dan memastikan fungsionalitas kritis dari sistem masih bekerja seperti yang diharapkan; setelah perubahan kode baru digabungkan. Mereka biasanya perlu berjalan dengan 5 - 10 menit untuk mendapatkan umpan balik yang lebih cepat tentang kegagalan
Tes Regresi
Mereka biasanya dijalankan setidaknya sekali sehari dan mencakup berbagai fungsi sistem. Mereka memastikan aplikasi masih berfungsi seperti yang diharapkan. Mereka lebih detail daripada tes asap dan mencakup lebih banyak skenario aplikasi termasuk yang tidak kritis.