Apa itu pengujian sistem?

Dua rekan bekerja bersama di komputer, berkonsentrasi pada monitor di depan mereka.

Apa itu pengujian sistem?

Pengujian sistem (system testing) adalah pengujian perangkat lunak menyeluruh berbasis kinerja dari seluruh sistem. Pengujian menyeluruh ini mencakup aspek pengujian fungsional, pengujian non-fungsional, pengujian antarmuka, pengujian stres, dan pengujian pemulihan.

Bayangkan Anda melihat sistem perangkat lunak di bawah mikroskop, mulai dari tingkat pembesaran paling ekstrem, dengan unit. Ini adalah blok bangunan dasar dari sistem perangkat lunak. Kemudian tampilan meluas ke luar untuk menyertakan tingkat pembesaran berikutnya, modul yang dibuat oleh unit individu tersebut. Akhirnya, dengan memperkecil sepenuhnya, Anda tiba di tingkat sistem. Pada tingkat pembesaran ini, Anda dapat melihat segala sesuatu di dalam sistem dan bagaimana semua komponen yang dibuat oleh modul tersebut bekerja bersama.

Dalam beberapa hal, pengujian sistem mirip dengan pandangan mikroskopis tersebut, tetapi dengan perbedaan utama. Pengujian sistem adalah bentuk pengujian kotak hitam, yang berarti bahwa penguji kurang tertarik pada tampilan komponen yang terlibat dalam perakitannya daripada fungsionalitas keseluruhan sistem. Dari perspektif “lulus/gagal” semacam ini, perilaku sistem hanya perlu diperhatikan dalam konteks ini sejauh berkaitan dengan kinerja sistem. (Pengujian kotak putih memungkinkan visibilitas lebih ke dalam sifat komponen dalam sistem.)

Pengujian sistem sering melibatkan analisis beberapa sistem perangkat lunak terpisah yang mungkin bekerja secara serempak dalam sistem perangkat lunak tertentu dengan baik atau tidak.

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.

Apakah perangkat lunak sistem Anda siap diluncurkan?

Pertimbangkan hitungan mundur yang mendahului peluncuran luar angkasa. Sementara semua orang mengingat hitungan mundur 10 langkah yang dramatis sebelum api penyalaan dan lepas landas, hanya sedikit yang mengingat banyak pemeriksaan departemen yang ditanyakan oleh kepala penerbangan dan dijawab dengan tegas sebagai “siap”. Dalam peluncuran ruang angkasa umumnya, para kepala departemen dimintai pendapat tentang rencana operasi, keselamatan misi, sistem kendaraan, dan kondisi cuaca yang diharapkan, di antara banyak hal lainnya. Setiap departemen ditanya, dan setiap kepala departemen memberikan jawab secara bergiliran.

Demikian pula, pengujian sistem dapat dianggap sebagai daftar periksa akhir yang mendahului peluncuran sistem perangkat lunak baru. Putaran terakhir pembersihan semua bug perangkat lunak yang dideteksi telah selesai. Dan sama seperti daftar check-off bersejarah yang berasal dari perintis ruang angkasa awal, semuanya bermuara pada langkah terakhir dari setiap “departemen” yang termasuk dalam pengujian sistem.

Setiap pertanyaan dikaji berdasarkan fungsionalitas sistem:

  • Apakah setiap komponen berfungsi seperti yang diharapkan?
  • Apakah komponen bekerja dalam koordinasi yang tepat satu sama lain?
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. 

Apa saja yang terlibat dalam pengujian sistem?

Saat membahas pengujian sistem, kita secara alami akan menemukan topik dependensi, yang merupakan hubungan yang ada dalam kasus uji. Dalam situasi seperti itu, hasil dari satu kasus uji dapat bergantung sebagian atau seluruhnya pada hasil kasus uji lain. Dependensi juga dapat melibatkan fungsionalitas, lingkungan pengujian atau kebijakan keamanan dan bahkan dapat memengaruhi seluruh proses pengujian yang dikelola organisasi.

Metodologi pengujian sistem tidak memberikan pandangan mendalam ke dalam cara kerja mereka (ingat, ini adalah bentuk pengujian kotak hitam), tetapi memberi tahu Anda jika aplikasi tertentu berfungsi. Tujuan pengujian sistem adalah untuk membantu menemukan celah, kesalahan, atau persyaratan yang hilang karena hal tersebut menentukan fungsionalitas keseluruhan aplikasi perangkat lunak.

Pengujian sistem biasanya dilakukan setelah pengujian integrasi tetapi sebelum pengujian penerimaan, sehingga memastikan semua komponen berfungsi bersama dengan baik. Seperti yang akan kita lihat, ini sering mencakup aspek fungsional dan non-fungsional dari sistem. Karena didasarkan pada area fungsional yang ketat dan non-fungsional secara luas, pengujian ini masuk ke aspek-aspek yang jauh seperti kegunaan, keamanan, dan kinerja.

Salah satu tujuan utama pengujian sistem adalah memungkinkan Anda untuk memverifikasi bahwa pengodean perangkat lunak dapat diterjemahkan ke dalam program yang dapat digunakan. Namun, tujuan menyeluruh dari pengujian sistem adalah untuk memastikan bahwa perangkat lunak yang dievaluasi mampu mendukung persyaratan bisnis pengguna yang akan mengandalkannya.

Proses pengujian dimaksudkan untuk mencerminkan lingkungan produksi yang sama yang akan digunakan, untuk memastikan fungsi perangkat lunak sesuai kebutuhan meskipun kondisi dunia nyata berubah. Demikian pula, data uji dibuat untuk meniru data dan situasi dunia nyata. Setelah kasus uji dilakukan, cacat pada perangkat lunak dapat ditemukan dan diperbaiki.

Jenis pengujian sistem fungsional

Pengujian sistem dapat diklasifikasikan menurut salah satu dari tiga kelompok utama. Yang pertama, pengujian fungsional, berkaitan dengan kinerja, tetapi tidak mencari jawaban yang lebih dalam selain melihat apakah perangkat lunak berfungsi seperti yang dijanjikan. Berikut adalah beberapa jenis utama pengujian fungsional:

  • Pengujian penerimaan (acceptance testing): Pengujian penerimaan pengguna berupaya untuk menggabungkan pengujian kinerja 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. dengan menguji perangkat lunak dalam kondisi dunia nyata.
  • Pengujian integrasi (integration testing): Salah satu bidang yang sangat penting dari pengujian fungsional mempelajari seberapa baik modul atau komponen yang berbeda ‘menyatu‘ saat dipaksa untuk bekerja secara berdekatan. Itulah pengujian integrasi sistem. Sistem yang sepenuhnya terintegrasi menyediakan penguji dengan kemampuan untuk mengevaluasi interaksi kunci.
  • Pengujian asap (smoke testing): Pengujian asap menyediakan sarana untuk memeriksa apakah fungsionalitas secara keseluruhan telah dipertahankan setelah pengembang melakukan perubahan kode. Perubahan telah dilakukan dan pengujian asap memungkinkan Anda dengan cepat melihat apakah ada efek buruk yang dihasilkan dari perubahan kode tersebut.
  • Pengujian unit (unit testing): Dalam pengujian unit, bagian kode yang terbatas diperiksa dalam lingkungan pengujian yang terisolasi. Jika unit yang dimaksud gagal dalam pengujiannya (seperti yang terlihat dari perbandingan data pengujian dan tujuan fungsionalitas), lebih banyak pengujian komponen atau modul individu biasanya diperlukan pada tingkat seluruh sistem.

Jenis pengujian sistem non-fungsional

Sementara pengujian fungsional memberikan informasi yang sangat penting, data itu pada dasarnya terbatas pada suara naik atau turun berdasarkan secara ketat pada apakah sistem bekerja sebagaimana mestinya. Itu menghilangkan sejumlah besar variabel terkait, seperti keamanan sistem, UX, dan aspek kinerja.

Pengujian sistem non-fungsional menyediakan sarana untuk menilai bagaimana sistem beroperasi. Perbedaan penting antara pengujian fungsional dan non-fungsional dapat diringkas menjadi perbandingan sederhana berikut:

  • Pengujian fungsional: Apakah sistem berfungsi?
  • Pengujian non-fungsional: Apakah sistem bekerja dengan baik?

Dengan mengingat hal itu, berikut adalah beberapa bentuk utama non-pengujian sistem non-fungsional:

  • Pengujian aksesibilitas (accessibility testing): Apakah konten digital yang disajikan dapat diakses oleh semua orang, termasuk orang-orang dengan berbagai disabilitas? Pengujian aksesibilitas menyelidiki pertanyaan ini dan bekerja untuk memastikan konten dikomunikasikan kepada semua pengguna yang mungkin, dengan cara yang melintasi cacat fisik dan mental dan memastikan konsistensi dengan standar untuk inklusi yang ditetapkan oleh American with Disabilities Act (ADA).
  • Pengujian kompatibilitas (compatibility testing): Ketika Anda mempertimbangkan seberapa luas aplikasi didistribusikan, dan berapa banyak perjalanan lintas platform yang harus dilakukan aplikasi, menjadi mudah untuk memahami perlunya pengujian kompatibilitas, yang mengukur seberapa baik aplikasi tersebut berfungsi, terlepas dari berapa banyak jaringan, browser, sistem operasi, dan konfigurasi perangkat keras yang harus mereka lalui.
  • Pengujian beban (load testing): Dalam sub-disiplin yang membahas fisika unik yang muncul dari konsep beban dan bagaimana hal itu mempengaruhi kemampuan sistem untuk memproses permintaan sistem, pengujian beban berfokus pada apa yang terjadi ketika skalabilitas menjadi sangat besar. Kita berasumsi bahwa sistem tidak akan bermasalah dalam memproses permintaan sistem tunggal, tetapi bagaimana dengan ketika beban itu dikalikan dengan ribuan permintaan, atau bahkan lebih banyak secara signifikan?
  • Pengujian lokalisasi: Ini adalah ekonomi global di mana lebih banyak negara dan budaya berpartisipasi daripada sebelumnya. Pengujian lokalisasi adalah tentang memastikan bahwa konten perangkat lunak yang diekspor ke berbagai lokal di seluruh dunia sesuai untuk area tertentu, sesuai dengan aturan umum mengenai UX.
  • Pengujian kinerja (performance testing): Jenis pengujian non-fungsional ini memberikan perhatian khusus pada masalah kinerja. Misalnya, penting untuk kinerja yang baik bahwa sistem merespons permintaan dengan cepat dan lancar. Rencana pengujian dalam pengujian kinerja mengevaluasi berapa lama pengguna harus menunggu permintaan diproses.
  • Pengujian keamanan (security testing): Bukan rahasia lagi bahwa dewasa ini, keamanan data adalah hal yang sangat penting. Oleh karena itu, masuk akal bahwa suatu bentuk pengujian akan melayani secara khusus untuk keamanan. Metode pengujian keamanan dipilih sesuai dengan jenis ancaman potensial yang diterima oleh perusahaan.
  • Pengujian stres (stress testing): Sama seperti pengujian stres medis untuk memahami seberapa baik jantung seseorang bekerja di bawah tekanan aktivitas, pengujian stres perangkat lunak memverifikasi seberapa baik suatu sistem dapat tetap tangguh secara operasional ketika didorong melampaui kapasitas normalnya untuk mendeteksi kemacetan dan kerentanan.
  • Pengujian kegunaan (usability testing): Jenis pengujian non-fungsional ini sepenuhnya tentang kualitas pengalaman pengguna (UX). Pengujian kegunaan adalah proses pengujian manual yang paling praktis dilakukan dalam skala kecil. Meskipun demikian, pengujian ini mungkin harus sering diterapkan, terutama ketika menjalankan langkah-langkah rumit seperti melokalisasi aplikasi.

Jenis pengujian sistem lainnya

Jenis pengujian sistem lainnya berguna meskipun tidak termasuk dalam kategori pengujian fungsional atau non-fungsional. Berikut adalah beberapa metodologi yang paling penting di antaranya:

  • Pengujian API (API testing): Antarmuka pemrograman aplikasi (API) sangat penting, memungkinkan pengembangan perangkat lunak dengan membantu aplikasi atau sistem yang berbeda untuk terhubung. Pengujian API memastikan bahwa titik koneksi API beroperasi sebagaimana dimaksud. Ini juga memberikan pengawasan mengenai izin pengguna dan cara data dikelola melalui API.
  • Pengujian otomatis (automated testing): Sesuai namanya, pengujian otomatis (juga disebut otomatisasi tes) menempatkan kekuatan otomatisasi untuk bekerja pada pengujian aplikasi perangkat lunak. Hal ini dilakukan melalui pembuatan dan penggunaan skrip pengujian yang dirancang untuk melakukan kasus pengujian pada aplikasi perangkat lunak, yang dilakukan dalam skala besar, tanpa campur tangan manusia. Kumpulan panduan, alat, dan praktik terstruktur yang membantu mengotomatiskan proses pengujian disebut kerangka kerja.
  • Pengujian manual (manual testing): Berlawanan dengan pengujian otomatis, pengujian manual mengandalkan pengujian manusia untuk bereksperimen dengan perangkat lunak yang sedang dievaluasi, yang dipandu oleh berbagai skenario pengujian dan skrip pengujian. Penguji didorong untuk benar-benar menerapkan perangkat lunak untuk mengidentifikasi masalah yang perlu remediasi.
  • Pengujian migrasi (migration testing): Pengujian migrasi diperlukan oleh organisasi yang terlibat dalam memperbarui atau mengubah budaya digital perusahaannya. Ketika perusahaan terlibat dalam upaya transformatif seperti itu, mereka membutuhkan validasi bahwa data kunci dan perangkat lunak ditransfer dengan benar dari sistem keluar ke sistem yang masuk.
  • Pengujian regresi (regression testing): Meskipun perubahan kode dimaksudkan untuk meningkatkan perangkat lunak atau meningkatkan kemampuannya, mereka dapat secara tidak sengaja menimbulkan kesulitan jika kesalahan manusia entah bagaimana ditambahkan ke dalam campuran. Pengujian regresi memungkinkan penguji memastikan operasi yang stabil dan benar dengan menjalankan ulang pengujian sesuai kebutuhan.

Tantangan dalam menggunakan pengujian sistem

Meskipun proses pengujian sistem menyediakan pengujian kinerja kotak hitam yang paling komprehensif, itu bukannya tanpa potensi masalah:

Persyaratan yang terus berubah

Banyak persyaratan yang harus dipenuhi pengujian sistem, baik itu persyaratan bisnis yang endemik untuk organisasi itu, persyaratan fungsional yang unik untuk perangkat lunak itu, atau persyaratan tertentu yang mungkin berlaku untuk operasi. Memang, tampaknya tidak pernah ada kekurangan persyaratan sistem yang perlu dimiliki oleh sistem operasi. Persyaratan yang sering berubah dapat mengganggu sistem dan meninggalkannya dengan kumpulan kasus uji yang tidak lengkap.

Tekanan tenggat waktu

Kita semua paham bahwa tenggat waktu dapat mendatangkan malapetaka dalam lingkungan bisnis. Tenggat waktu merupakan hal yang legendaris karena menimbulkan dampak yang keras saat jadwal kerja bertabrakan dengan ekspektasi waktu yang terjadwal. Dampak tekanan tenggat waktu ini termanifestasikan dalam pengembangan perangkat lunak. Pengujian sistem yang sesuai dan memadai sering kali sering kali tidak dilakukan secara lengkap atau diabaikan sama sekali. Hal ini biasanya mengakibatkan kebutuhan pengujian ulang dalam siklus pengembangan perangkat lunak nantinya.

Keterbatasan sumber daya

Pengujian sistem tidak terjadi begitu saja atau tanpa usaha. Ini membutuhkan kerja terampil dari tim pengujian, alat pengujian untuk membantu tenaga kerja itu, dan anggaran yang memadai untuk memulainya. Tanpa komponen-komponen ini, akan sangat mudah untuk menerapkan jalan pintas sebagai gantinya, yang menyebabkan pengujian yang tidak lengkap. Dan jika ada bagian dari persamaan itu diubah atau dihilangkan, itu mungkin akan memberikan dampak negatif pada cakupan pengujian yang dihasilkan dari pengujian sistem terhadap aplikasi atau produk perangkat lunak tersebut.

Ketidakstabilan lingkungan

Banyak potensi kerentanan dapat dinilai selama proses pengujian, tetapi staf rekayasa perangkat lunak hanya dapat membuat penilaian tersebut jika didukung dan mengendalikan lingkungan pengujian tempat mereka bekerja. Ketika penguji tidak bekerja di lingkungan yang stabil, menjadi lebih mudah bagi mereka untuk melewatkan potensi cacat perangkat lunak. Dan jika penguji di lingkungan yang tidak stabil menemukan bug perangkat lunak yang perlu diperbaiki, mereka sering kali lebih sulit mereproduksi bug tersebut nantinya.

Gangguan komunikasi

Ketika tugas Anda melibatkan jaminan kualitas perangkat lunak, meninjau baris kode komputer adalah pekerjaan yang melelahkan yang dapat jadi membosankan dan memakan waktu. Apa yang dapat membuat pekerjaan seperti itu semakin tidak menyenangkan adalah ketika kesenjangan komunikasi terjadi antara penguji, pengembang, dan pemangku kepentingan lainnya. Seperti halnya usaha bisnis apa pun, masalah komunikasi menimbulkan kesalahpahaman dan menciptakan lingkungan produksi di mana cacat dapat lolos dari deteksi dan berakar dalam sistem operasi.

Mengelola kompleksitas data uji

Teknik pengujian bervariasi, dan hasil pengujian muncul dalam berbagai bentuk, dari data uji yang mudah dipahami hingga kumpulan data yang luas dan kompleks yang memerlukan pengelolaan yang lebih serius selama dan setelah fase pengujian. Tingkat kompleksitas proyek meningkat lebih jauh ketika lingkungan pengujian tidak sepenuhnya mencerminkan lingkungan produksi mereka. Strategi pengujian yang diterapkan selama proses pengembangan perangkat lunak perlu mempertimbangkan cara terbaik untuk menavigasi masalah ini.

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