Apa itu pengujian fungsional?

Penyusun

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Definisi pengujian fungsional

Pengujian fungsional (functional testing) adalah pendekatan pengujian perangkat lunak yang memverifikasi apakah fitur aplikasi berfungsi seperti yang diharapkan berdasarkan persyaratan yang ditentukan.

Dalam pengembangan perangkat lunak, terdapat berbagai jenis pengujian perangkat lunak. Masing-masing menjalankan tugas tersebut dengan pendekatan yang sedikit berbeda. Pengujian fungsional paling selaras dengan konsep pengalaman pengguna, dan berfokus pada satu pertanyaan penting: Apakah fitur perangkat lunak berfungsi seperti yang diharapkan dan sesuai dengan persyaratan yang ditentukan?

Kualitas perangkat lunak sering dinilai dari berbagai sudut sebagai bagian dari siklus hidup pengembangan perangkat lunak. Dalam pengujian fungsional, penguji perlu memvalidasi fungsi dasar dan memastikan bahwa fungsi perangkat lunak mampu mendukung persyaratan bisnis. Pelaksanaan pengujian memungkinkan kru DevOps membandingkan hasil pengujian aktual dengan hasil yang diharapkan.

Pengujian adalah bagian penting dari proses pengembangan, dan pengujian fungsional memungkinkan tim QA melakukan semacam jaminan kualitas sebelum fakta, memberi mereka jendela yang jelas tentang bagaimana alur kerja akan beroperasi ketika tiba saatnya untuk meluncurkannya secara nyata.

Berita teknologi terbaru, didukung oleh insight dari pakar

Tetap terinformasi tentang tren industri yang paling penting—dan menarik—tentang AI, otomatisasi, data, dan di luarnya dengan buletin Think. Lihat Pernyataan Privasi IBM®.

Terima kasih! Anda telah berlangganan.

Langganan Anda akan disediakan dalam bahasa Inggris. Anda akan menemukan tautan berhenti berlangganan di setiap buletin. Anda dapat mengelola langganan atau berhenti berlangganan di sini. Lihat Pernyataan Privasi IBM® kami untuk informasi lebih lanjut.

Bagaimana cara kerja pengujian fungsional?

Elemen operasional yang berbeda disoroti, tergantung pada jenis pengujian perangkat lunak yang digunakan sebagai bagian dari strategi pengujian keseluruhan. Pengujian fungsional menilai kompatibilitas keseluruhan antara modul perangkat lunak yang berbeda, yang memiliki pengaruh langsung pada aspek terkait lainnya, seperti interaksi pengguna yang diharapkan dan kelayakan antarmuka pengguna.

Lingkungan pengujian yang disediakan oleh pengujian fungsional dianggap sebagai pengujian kotak hitam, di mana penguji tidak memiliki insight tentang mekanisme kerja sistem (seperti di pengujian kotak putih), dan sebaliknya diberi laporan “Lulus/Gagal” tentang apakah sistem dan saluran pipelnya berfungsi seperti yang diinginkan.

Enam langkah pengujian fungsional

Pengujian fungsional biasanya mengikuti proses pengujian yang membutuhkan enam langkah:

  1. Identifikasi berbagai fungsi yang perlu dijalankan perangkat lunak.
  2. Buat data input sesuai dengan persyaratan fungsional.
  3. Tetapkan output yang diharapkan per spesifikasi fungsional.
  4. Jalankan kasus uji.
  5. Evaluasi perbandingan output aktual dengan output yang diharapkan.
  6. Tentukan apakah aplikasi perangkat lunak berfungsi memuaskan sesuai harapan.
Pengembangan Aplikasi

Bergabunglah: Pengembangan aplikasi Enterprise di cloud

Dalam video ini, Dr. Peter Haumer membahas seperti apa pengembangan aplikasi perusahaan modern saat ini di hybrid cloud dengan menunjukkan berbagai komponen dan praktiknya, termasuk IBM Z Open Editor, IBM Wazi, dan Zowe. 

Jenis pengujian fungsional

Sama seperti adanya berbagai model pengujian perangkat lunak, terdapat juga berbagai jenis pengujian fungsional. Banyak jenisnya, dan ini hanya sebagian darinya. Jenis pengujian fungsional mencakup berbagai nuansa dan dicantumkan di sini berdasarkan abjad.

Pengujian Ad-hoc

Dalam pengujian perangkat lunak, penguji sering mengikuti proses pengujian formal dengan tes ad-hoc. Bentuk informal pengujian eksplorasi ini sepenuhnya dipandu oleh keterampilan dan intuisi penguji. Tidak ada struktur yang pasti. Sebaliknya, naluri penguji mendorong teknik pengujian yang digunakan.

Contoh: “Buddy testing”, di mana pengembang dan penguji bekerja sama untuk meningkatkan modul atau aplikasi. Dalam bentuk pengujian ad-hoc ini, penguji biasanya menemukan bug atau hal-hal lain yang perlu diperbaiki sementara pengembang berfokus untuk membuat perbaikan ini.

Pengujian API

Antarmuka pemrograman aplikasi (API) memungkinkan pengembangan perangkat lunak dan berbagai aplikasi atau sistem yang berbeda untuk terhubung. Pengujian API memastikan titik koneksi API beroperasi sesuai kebutuhan. Ini juga memberikan wawasan mengenai izin pengguna dan cara data dikelola melalui API.

Contoh: “Headless testing” terjadi ketika antarmuka pengguna atau bidang input data antarmuka pengguna tidak tersedia. Dalam situasi seperti itu, data input yang dibagikan dengan layanan atau aplikasi antarmuka seringkali dapat diuji dengan baik melalui pengujian API.

Skenario pengujian yang kompleks

Banyak organisasi ingin proses pengujian mereka benar-benar mencerminkan pengalaman aktual pengguna nyata. Untuk perusahaan semacam itu, skenario pengujian yang kompleks memberikan tingkat akurasi yang diinginkan, tapi harus ditekankan bahwa kompleksitas yang lebih besar membutuhkan lebih banyak upaya di awal untuk dijalankan.

Contoh: Pemrosesan pesanan online hanya tampak seperti operasi yang lancar. Di balik layar, ada banyak proses yang harus diuji, seperti seberapa mudah item dapat ditambahkan ke keranjang online pembelanja, seberapa cepat fungsi seperti menerapkan diskon terintegrasi, dan seberapa lancar pembelian tersebut dapat dilakukan.

Pengujian integrasi

Pengujian integrasi (integration testing) biasanya dijalankan bersamaan dengan pengujian unit karena manfaat seperti deteksi masalah awal dan cakupan pengujian yang lebih luas. Selain memastikan kesesuaian format data, pengujian integrasi memberikan insight tentang cara kerja dan kinerja layanan mikro.

Contoh: Katakanlah sistem manajemen pesanan terintegrasi dengan beberapa jenis modul yang mengatur pemrosesan pembayaran. Pengujian integrasi menunjukkan di mana gangguan masa depan dapat terjadi di antara dua entitas dan memberikan pengembang cetak biru untuk memperbaiki masalah integrasi lebih awal dan lebih murah.

Pengujian regresi

Idealnya, setelah uji fungsional dilewati, itu akan selalu lulus. Namun, tidak begitu kenyataannya, di mana perangkat lunak sering dipengaruhi oleh pengembang yang mungkin tanpa sadar menyebabkan kesalahan dengan perubahan kode baru. Pengujian regresi (regression testing) memastikan bahwa garis dasar yang stabil dipertahankan.

Contoh: Setiap kali perubahan kode dilakukan, sebuah bentuk pengujian regresi atau lainnya dijalankan. Itu termasuk pembaruan terkait, seperti yang akan dilakukan setelah perbaikan bug, penambahan fungsionalitas baru, atau setelah pembaruan perangkat lunak.

Pengujian kewajaran

Pengujian kewajaran (sanity testing) adalah cara yang cepat dan tangkas untuk memeriksa bahwa fungsionalitas yang ada tidak terganggu oleh penambahan perubahan yang relatif kecil atau perbaikan bug. Pengujian kewajaran cenderung digunakan sebagai cara cepat untuk mengonfirmasi bahwa fungsionalitas baru tidak mengganggu fungsionalitas sistem lainnya.

Contoh: Seperti halnya dengan pengujian regresi, pengujian kewajaran memungkinkan Anda “memundurkan” sistem ke fungsionalitas sebelumnya untuk memverifikasi peningkatan kinerja, mengonfirmasi operasi dasar, dan memastikan sistem berfungsi seperti yang diharapkan. Setiap kali perubahan kode dilakukan, suatu bentuk pengujian regresi atau lainnya dijalankan. Itu termasuk pembaruan terkait, seperti yang akan dilakukan setelah perbaikan bug, penambahan fungsionalitas baru, atau setelah pembaruan perangkat lunak.

Pengujian asap

Pepatah lama mengatakan bahwa “di mana ada asap, di sana ada api.” Pepatah ini tampaknya telah mengilhami nama “pengujian asap” (smoke testing). Pengujian asap dilakukan di awal proses pengembangan, dan ketika dilakukan, pengujian ini menilai fungsionalitas menyeluruh. Jika fungsionalitas gagal, tim QA melakukan koreksi yang diperlukan.

Contoh: Pengujian asap dapat digunakan untuk memverifikasi integrasi berkelanjutan dan alur kerja berkelanjutan sebagai pemeriksaan akhir sebelum pembuatan perangkat lunak baru (atau perubahan kode utama) dapat diterapkan.

Pengujian sistem

Kadang disebut pengujian end-to-end, pengujian sistem digunakan untuk menilai bagaimana perangkat lunak dari seluruh sistem perangkat lunak beroperasi bersama. Pengujian sistem sering melibatkan analisis beberapa sistem perangkat lunak terpisah yang mungkin bekerja secara serempak dalam sistem perangkat lunak tertentu dengan baik atau tidak.

Contoh: Skenario end-to-end memungkinkan penguji untuk menilai alur kerja yang lengkap. Untuk operasi retail online, ini bisa berarti seluruh pengalaman retail yang dialami konsumen, mulai dari pesanan pembelian awal hingga seluruh proses pemenuhan.

Pengujian unit

Pengujian unit adalah bentuk pengujian dalam lingkup mikro. Di sini, kita tidak menguji seluruh sistem, hanya sepotong kode tertentu. Sebagian kode dievaluasi dalam lingkungan pengujian yang terisolasi, dan jika pengujian unit gagal (berdasarkan perbandingan data pengujian terhadap tujuan fungsionalitas), lebih banyak pengujian dapat dilakukan pada tingkat sistem.

Contoh: Elemen komputasi yang cukup mendasar diuji dengan baik melalui pengujian unit. Pertimbangkan fungsi sederhana yang mengubah suhu Celcius ke Fahrenheit. Lingkungan pengujian berisi kode yang dimaksud dan kasus uji yang terlibat.

Pengujian penerimaan pengguna

Sebagai tahap lanjutan dari pengujian perangkat lunak, pengujian penerimaan pengguna (user acceptance testing) menggabungkan dan mempelajari hasil performance testing yang dilakukan oleh orang-orang yang mewakili demografi yang menjadi sasaran perangkat lunak yang diproduksi. Pengguna akhir ini membawa tingkat realisme tambahan pada proses pengujian.

Contoh: Pengguna paket perangkat lunak upgrade ke tingkat layanan berikutnya, memberi mereka akses ke berbagai fungsionalitas baru. Pengujian penerimaan pengguna memverifikasi bahwa pengguna akan dapat melihat peningkatan akses mereka ke berbagai fitur seperti yang diharapkan.

Pengujian fungsional vs. non-fungsional

Seperti namanya, pengujian non-fungsional mengevaluasi perilaku aplikasi yang biasanya tidak dianggap penting untuk memastikan fungsionalitas. Meskipun demikian, memberikan pengalaman pengguna yang terorganisir dengan baik dan menyenangkan kini dianggap sebagai bagian penting dari pengembangan perangkat lunak. Pengujian non-fungsional dapat mengungkapkan potensi masalah sistem, terutama ketika perangkat lunak dimaksimalkan untuk menunjukkan skalabilitas yang lebih besar.

Pengujian beban

Pengujian beban (load testing) adalah salah satu bentuk utama pengujian non-fungsional. Secara teori, sebuah sistem harus dapat memproses ribuan permintaan sistem dengan rasa urgensi yang sama dengan saat mengirimkan permintaan sistem tunggal. Namun, logika itu tidak didukung oleh pengalaman yang realistis. Pengujian beban berfungsi untuk melihat apakah sistem dapat menangani beban puncak dan bahkan lonjakan beban kerja yang ekstrem.

Pengujian kinerja

Bentuk lain dari pengujian non-fungsional memberikan perhatian khusus pada kinerja. Sangat penting untuk kinerja yang baik bahwa sistem menanggapi permintaan dengan cara yang lancar dan cepat. Rencana pengujian dalam pengujian kinerja mengevaluasi berapa lama pengguna harus menunggu permintaan mereka diproses. Ketika dibuat dengan cermat, pengujian kinerja dapat membantu meminimalkan latensi sejak dini.

Pengujian keamanan

Mengingat pentingnya keamanan data, tidak mengherankan bahwa satu bentuk pengujian akan melayani secara khusus untuk tujuan paling modern ini. Metodologi pengujian keamanan seperti Dynamic Application Security Testing (DAST) dan Static Application Security Testing (SAST) membantu penguji memeriksa kerentanan keamanan. Metode pengujian keamanan perusahaan dipilih sesuai dengan potensi ancaman.

Pengujian kegunaan

Salah satu jenis pengujian non-fungsional sepenuhnya tentang kualitas pengalaman pengguna (UX). Pengujian kegunaan (usability testing) adalah proses pengujian manual yang paling baik digunakan dalam skala kecil. Namun demikian, hal ini sebaiknya diterapkan kapan pun memungkinkan, terutama saat melakukan langkah-langkah seperti melokalisasi aplikasi, yang bisa berisiko tinggi ketika menambahkan kompleksitas yang dapat memicu kesalahan manusia.

Alat pengujian fungsional

Melacak semua berbagai alat pengujian fungsional secara akurat bisa jadi sulit karena sebagian besar mendukung platform dan jenis aplikasi yang berbeda. Meskipun tidak mungkin untuk mengikuti pasar digital yang berkembang pesat ini, perkiraan jumlah alat pengujian fungsional bisa mencapai ratusan dan bahkan mungkin ribuan. Berikut beberapa alat yang menonjol karena popularitasnya yang terbukti dan kegunaannya yang diakui.

  • Appium: Pasar digital pengujian fungsional menawarkan banyak alat sumber terbuka, dengan Appium memimpin dalam jajaran. Appium menyediakan dukungan untuk beberapa bahasa pemrograman. Selanjutnya, Appium memungkinkan Anda mengotomatiskan aplikasi native, web mobile, dan hybrid untuk platform iOS dan Android.
  • Katalon Studio: Platform otomatisasi pengujian Katalon Studio menawarkan sarana untuk menetapkan dan mengevaluasi hasil pengujian regresi dan pengujian end-to-end. Ini memiliki fungsi ‘rekam dan putar’ dan koordinasi lintas platform.
  • Micro Focus Unified Functional Testing (UFT): UFT Micro Focus adalah alat pengujian komersial lainnya, yang memberi penguji jendela multi-platform yang jelas ke dalam penggunaan layanan web, Antarmuka Pemrograman Aplikasi (API) dan Antarmuka Pengguna Grafis is (GUI).
  • Playwright: Microsoft mengembangkan kerangka kerja komersial ini untuk otomatisasi browser web. Alat ini dikenal karena meningkatkan keandalan. Dan meskipun Playwright mendukung fitur web kontemporer, alat ini menawarkan lebih sedikit pilihan untuk menangani bahasa pemrograman.
  • Selenium: Salah satu alat bantu otomatisasi pengujian yang paling populer adalah Selenium, yang merupakan kerangka kerja sumber terbuka. Alat berbasis browser ini memungkinkan penguji untuk menulis dan mengevaluasi skrip pengujian dalam berbagai bahasa pemrograman populer, termasuk JavaScriptTM, NodeJS, dan Python. 
Solusi terkait
IBM Enterprise Application Service for Java

Layanan penyewa tunggal yang dikelola sepenuhnya untuk mengembangkan dan menyediakan aplikasi Java.

Jelajahi Aplikasi Java
Solusi DevOps

Gunakan perangkat lunak dan alat bantu DevOps untuk membangun, menerapkan, dan mengelola aplikasi cloud native di berbagai perangkat dan lingkungan.

Jelajahi solusi DevOps
Layanan Pengembangan Aplikasi Perusahaan

Pengembangan aplikasi cloud berarti membangun sekali, mengulangi dengan cepat, dan menerapkan di mana saja.

Layanan pengembangan aplikasi
Ambil langkah selanjutnya

Layanan Konsultasi Pengembangan Aplikasi IBM Cloud menawarkan panduan pakar dan solusi inovatif untuk menyederhanakan strategi cloud Anda. Bermitralah dengan para pakar cloud dan pengembangan IBM untuk memodernisasi, menskalakan, dan mempercepat aplikasi Anda, sehingga memberikan hasil yang transformatif bagi bisnis Anda.

Jelajahi layanan pengembangan aplikasi Mulai membangun dengan IBM cloud secara gratis