Metode Pengujian Perangkat Lunak

Halo semuanya! Minggu depan kami meluncurkan utas baru pada kursus "Pengujian Web Otomasi" . Ini akan menjadi bahan materi hari ini.

Artikel ini membahas berbagai metode pengujian perangkat lunak, seperti pengujian unit, pengujian integrasi, pengujian fungsional, pengujian penerimaan, dll.



Ada banyak jenis tes yang dapat Anda terapkan untuk memastikan bahwa perubahan pada kode Anda dituliskan. Tidak semua jenis pengujian identik, meskipun di sini kita melihat bagaimana praktik pengujian utama berbeda satu sama lain.

Pengujian: manual atau otomatis?

Pertama, Anda perlu memahami perbedaan antara tes manual dan otomatis. Pengujian manual dilakukan secara langsung oleh orang yang mengklik tombol dalam aplikasi atau berinteraksi dengan perangkat lunak atau API dengan alat yang diperlukan. Ini cukup mahal, karena membutuhkan tester untuk menginstal lingkungan pengembangan dan menjalankan tes secara manual. Ada kemungkinan kesalahan karena faktor manusia, seperti kesalahan ketik atau melewatkan langkah-langkah dalam kasus uji.

Tes otomatis, di sisi lain, dilakukan oleh mesin yang menjalankan skrip uji yang ditulis sebelumnya. Tes tersebut dapat sangat bervariasi tergantung pada kompleksitas, dari pengujian satu metode di kelas hingga mengerjakan urutan tindakan kompleks dalam UI untuk memastikan bahwa itu berfungsi dengan benar. Metode ini dianggap lebih dapat diandalkan, tetapi kinerjanya masih tergantung pada seberapa baik script untuk pengujian ditulis dengan baik.

Tes otomatis adalah komponen utama Integrasi Berkelanjutan dan pengiriman berkelanjutan, serta cara yang baik untuk meningkatkan skala proses QA Anda sambil menambahkan fungsionalitas baru ke aplikasi Anda. Namun, pengujian manual masih memiliki nilai tersendiri. Oleh karena itu, dalam artikel ini kita pasti akan berbicara tentang pengujian eksplorasi.

Berbagai jenis tes

Tes unit

Tes unit dianggap level rendah, dekat dengan kode sumber aplikasi Anda. Mereka ditujukan untuk menguji metode dan fungsi individual dalam kelas, menguji komponen dan modul yang digunakan oleh program Anda. Tes unit secara umum tidak memerlukan biaya otomatisasi khusus dan dapat bekerja dengan sangat cepat jika Anda menggunakan server integrasi berkelanjutan.

Tes integrasi

Tes integrasi memeriksa apakah layanan dan modul yang digunakan oleh aplikasi Anda bekerja bersama dengan baik. Sebagai contoh, mereka dapat menguji integrasi dengan database atau memastikan bahwa layanan microser berinteraksi dengan benar satu sama lain. Tes ini berjalan dengan biaya lebih besar karena mereka membutuhkan banyak bagian aplikasi untuk bekerja secara bersamaan.

Tes fungsi

Tes fungsional didasarkan pada persyaratan bisnis untuk aplikasi tersebut. Mereka hanya memeriksa output setelah tindakan dilakukan dan tidak memeriksa status perantara sistem selama reproduksi tindakan.

Terkadang ada kontradiksi antara tes integrasi dan tes fungsional, seperti mereka berdua meminta beberapa komponen yang saling berinteraksi. Perbedaannya adalah bahwa tes integrasi hanya dapat memastikan bahwa database dapat diakses, sementara tes fungsional ingin mendapatkan nilai tertentu dari database untuk memeriksa salah satu persyaratan untuk produk akhir.

Tes ujung ke ujung

Pengujian end-to-end mensimulasikan perilaku pengguna saat berinteraksi dengan perangkat lunak. Ini memeriksa seberapa akurat berbagai pengguna mengikuti skenario aplikasi yang dimaksud dan bisa sangat sederhana, misalnya, terlihat seperti memuat halaman web atau memasuki situs web atau, dalam kasus yang lebih rumit, mengonfirmasi alamat email, pembayaran online, dll.

Tes ujung ke ujung sangat berguna, tetapi memproduksinya mahal, dan bisa jadi sulit untuk diotomatisasi. Beberapa tes lintas sektor direkomendasikan, tetapi masih lebih mengandalkan pengujian tingkat rendah (unit dan tes integrasi) untuk dapat dengan cepat mengenali perubahan besar.

Tes penerimaan

Tes penerimaan adalah tes formal yang dilakukan untuk memastikan bahwa sistem memenuhi kebutuhan bisnis. Mereka membutuhkan aplikasi untuk menjalankan dan menjalankan, dan meniru tindakan pengguna. Pengujian penerimaan dapat melangkah lebih jauh dan mengukur kinerja sistem dan menolak perubahan terbaru jika tujuan pengembangan akhir belum tercapai.

Tes kinerja

Tes kinerja menguji perilaku suatu sistem ketika berada di bawah beban yang signifikan. Tes ini tidak berfungsi dan dapat mengambil banyak bentuk untuk menguji keandalan, stabilitas, dan ketersediaan platform. Misalnya, dapat memonitor waktu respons saat melakukan sejumlah besar permintaan atau mengamati bagaimana sistem berperilaku ketika berinteraksi dengan data besar.

Tes kinerja pada dasarnya mahal untuk dilakukan, tetapi mereka dapat membantu Anda memahami faktor eksternal apa yang dapat menjatuhkan sistem Anda.

Pengujian asap

Tes asap adalah tes dasar yang menguji fungsionalitas dasar suatu aplikasi. Mereka bekerja cukup cepat dan tujuan mereka adalah untuk memperjelas bahwa fungsi-fungsi utama sistem bekerja sebagaimana mestinya dan tidak lebih. Pengujian semacam itu bertujuan mengidentifikasi kesalahan yang jelas.

Tes asap dapat bermanfaat segera setelah membangun bangunan baru untuk memeriksa apakah Anda dapat menjalankan tes yang lebih mahal, atau segera setelah penerapan, untuk memastikan bahwa aplikasi berfungsi dengan baik di lingkungan yang baru.

Cara mengotomatisasi tes

Seorang penguji dapat melakukan semua tes yang disebutkan di atas secara manual, tetapi ini akan sangat mahal dan tidak produktif. Karena orang memiliki kemampuan terbatas untuk melakukan sejumlah besar tindakan berulang sambil tetap menguji dengan andal. Namun, mesin dapat dengan mudah mereproduksi tindakan yang sama dan memeriksa, misalnya, bahwa kombinasi nama pengguna / kata sandi akan bekerja untuk yang keseratus kalinya tanpa keluhan.

Untuk mengotomatisasi pengujian, Anda harus terlebih dahulu menulisnya dalam beberapa bahasa pemrograman menggunakan kerangka pengujian yang sesuai untuk aplikasi Anda. PHPUnit , Mocha , RSpec adalah contoh kerangka uji yang dapat Anda gunakan untuk PHP, Javascript, dan Ruby, masing-masing. Mereka memiliki banyak fitur untuk setiap bahasa, jadi Anda harus mengerjakan sendiri sedikit riset dan berkonsultasi dengan komunitas pengembang untuk mencari tahu kerangka mana yang terbaik untuk Anda.

Jika pengujian Anda dapat dijalankan menggunakan skrip dari terminal, Anda dapat mengotomatiskannya menggunakan server integrasi berkelanjutan gaya Bambu atau server cloud Bitbucket Pipelines cloud. Alat-alat ini akan memonitor repositori Anda dan menjalankan suite tes segera setelah perubahan baru didorong ke repositori utama.



Jika Anda baru dalam pengujian, lihat panduan integrasi berkelanjutan kami untuk membuat rangkaian pengujian pertama Anda.

Pengujian penelitian

Semakin banyak fungsi dan peningkatan ditambahkan ke kode Anda, semakin banyak kebutuhan untuk pengujian meningkat, karena pada setiap tahap Anda perlu memastikan bahwa sistem bekerja dengan benar. Juga, itu akan diperlukan setiap kali Anda memperbaiki bug, karena itu tidak akan berlebihan untuk memastikan bahwa itu tidak kembali lagi setelah beberapa rilis. Otomasi adalah kunci untuk memungkinkan hal ini; tes menulis cepat atau lambat akan menjadi bagian dari praktik pengembang Anda.

Pertanyaannya adalah, perlukah melakukan pengujian manual sama sekali dalam kasus ini? Jawaban singkatnya adalah ya, dan itu harus difokuskan pada apa yang disebut pengujian eksplorasi, yang membantu mengidentifikasi kesalahan yang tidak jelas.

Sesi pengujian penelitian tidak boleh melebihi dua jam dan harus memiliki ruang lingkup yang jelas untuk membantu penguji fokus pada area spesifik perangkat lunak. Setelah memberi tahu semua penguji tentang batas-batas pengujian, tetap pada kebijaksanaan mereka tindakan yang akan mereka ambil untuk memeriksa bagaimana sistem berperilaku. Pengujian semacam itu memang mahal, tetapi sangat berguna untuk mengidentifikasi masalah dengan antarmuka pengguna atau memverifikasi kesehatan alur kerja yang rumit bagi pengguna. Penting untuk melakukan pengujian tersebut setiap kali fungsi baru yang radikal ditambahkan ke aplikasi untuk memahami bagaimana hal itu akan berperilaku dalam kondisi batas.

Catatan pengujian

Sebelum menyelesaikan artikel ini, saya ingin berbicara tentang tujuan pengujian. Di satu sisi, sangat penting untuk memastikan bahwa pengguna dapat menggunakan aplikasi Anda ("Saya tidak bisa masuk", "Saya tidak bisa menyimpan data", dll.), Tetapi di sisi lain, sama pentingnya untuk memverifikasi bahwa sistem Anda Tidak rusak saat memasukkan data yang salah atau tindakan tak terduga. Anda perlu mengantisipasi apa yang akan terjadi ketika pengguna membuat kesalahan ketik, mencoba menyimpan formulir yang tidak lengkap, atau menggunakan API yang salah. Anda perlu memeriksa apakah salah satu pengguna dapat dengan mudah mengkompromikan data, mendapatkan akses ke sumber daya tertentu yang tidak seharusnya ia akses. Satu set tes yang baik harus mencoba untuk memecahkan aplikasi Anda dan membantu untuk memahami batas kemampuannya

Dan akhirnya, tes juga merupakan kode! Jadi jangan lupa tentang mereka selama peninjauan kode, karena mereka mungkin merupakan langkah terakhir sebelum merilis produk ke pasar konsumen.

Menurut tradisi yang sudah ada, kami menunggu komentar Anda dan mengundang semua orang ke hari buka pintu , yang akan diadakan pada tanggal 18 Maret oleh guru kami, insinyur otomatisasi pengujian terkemuka di Grup-IB, Mikhail Samoilov .

Source: https://habr.com/ru/post/id443418/


All Articles