Bab 5 : Software Testing
Nama : Mutia Ardelia Rokhima
NIM : 240605110075
Bab 5 : Software Testing
Bagian 1 : Dasar Dasar Software Testing
A.
Konsep dan Tujuan Pengujian
Perangkat Lunak
1.
Definisi Software Testing dan
Peranannya
Pengujian
perangkat lunak merupakan suatu proses sistematis yang dilakukan untuk
mengevaluasi apakah suatu perangkat lunak sudah berjalan sesuai dengan
kebutuhan dan tujuan yang diharapkan. Proses ini tidak hanya bertujuan
menemukan kesalahan, tetapi juga memastikan bahwa sistem dapat digunakan dengan
baik dalam berbagai kondisi.
Dalam siklus
pengembangan perangkat lunak, pengujian memiliki peran penting sebagai
pengendali kualitas. Pengujian dilakukan sejak tahap awal hingga sistem selesai
dikembangkan. Dengan adanya pengujian, kesalahan dapat ditemukan lebih dini
sehingga biaya perbaikan menjadi lebih kecil dan kualitas produk meningkat.
Secara umum,
pengujian juga membantu memastikan bahwa perangkat lunak benar-benar memberikan
nilai bagi pengguna serta dapat diandalkan dalam penggunaan nyata.
2.
Tujuan Utama Pengujian Perangkat
Lunak
Tujuan utama
dari pengujian perangkat lunak adalah untuk memastikan bahwa sistem yang
dikembangkan dapat berjalan dengan baik sesuai dengan kebutuhan yang telah
ditentukan. Melalui proses pengujian, pengembang dapat menemukan kesalahan atau
cacat yang ada dalam sistem sebelum digunakan oleh pengguna. Selain itu,
pengujian juga bertujuan untuk menjamin kualitas perangkat lunak, baik dari
segi kinerja, keandalan, maupun keamanannya. Pengujian membantu memastikan
bahwa sistem benar-benar memenuhi harapan pengguna sehingga dapat digunakan
dengan nyaman dan efektif. Dengan demikian, pengujian juga berperan dalam
meningkatkan kepercayaan pengguna terhadap sistem serta mengurangi risiko
terjadinya kegagalan yang dapat menimbulkan kerugian.
3.
Perbedaan Fault, Error, dan Failure
·
Fault (cacat)
Merupakan kesalahan yang terdapat pada kode program atau desain
sistem.
·
Error (kesalahan)
Terjadi ketika fault tersebut menyebabkan hasil yang tidak sesuai
saat program dijalankan.
·
Failure (kegagalan)
Merupakan kondisi di mana sistem tidak dapat menjalankan fungsi
yang diharapkan oleh pengguna.
4.
Analisis Pentingnya Pengujian (Studi
Kasus Mobile Banking)
Pada aplikasi
mobile banking, pengujian sangat krusial karena sistem berkaitan langsung
dengan transaksi keuangan pengguna.
Jika terdapat
bug dalam proses transfer dana, beberapa dampak yang dapat terjadi adalah:
·
Kerugian finansial pengguna
(misalnya saldo terpotong tetapi transfer gagal)
·
Menurunnya kepercayaan pengguna
terhadap aplikasi
·
Risiko hukum dan reputasi bagi
perusahaan
·
Gangguan operasional sistem keuangan
Dengan
pengujian yang baik, kesalahan seperti validasi nominal transfer, koneksi ke
server, hingga keamanan transaksi dapat dicegah sebelum aplikasi digunakan oleh
pengguna.
Oleh karena itu, pengujian bukan
hanya tahap tambahan, tetapi merupakan bagian penting untuk menjamin keamanan,
keandalan, dan kualitas sistem terutama pada aplikasi kritis seperti mobile
banking.
Bagian 2 : Jenis dan Tingkat Pengujian Perangkat
Lunak
A.
Tingkatan Pengujian Perangkat Lunak
1.
Empat Tingkatan Utama Pengujian
Perangkat Lunak
a.
Unit Testing
Unit testing
adalah pengujian yang dilakukan pada bagian terkecil dari perangkat lunak,
seperti fungsi atau modul tertentu. Tujuannya untuk memastikan setiap bagian
kecil tersebut bekerja dengan benar secara mandiri sebelum digabungkan dengan
bagian lain.
b.
Integration Testing
Integration
testing dilakukan setelah unit testing, yaitu dengan menggabungkan beberapa
modul dan menguji apakah antar bagian tersebut dapat berinteraksi dengan baik.
Pengujian ini fokus pada aliran data dan komunikasi antar modul.
c.
System Testing
System testing
merupakan pengujian terhadap keseluruhan sistem yang sudah terintegrasi. Pada
tahap ini, sistem diuji secara menyeluruh untuk memastikan semua fitur berjalan
sesuai dengan kebutuhan yang telah ditentukan.
d.
Acceptance Testing
Acceptance
testing adalah tahap pengujian akhir yang dilakukan untuk memastikan sistem
sudah siap digunakan oleh pengguna. Biasanya dilakukan oleh pengguna atau pihak
terkait untuk menilai apakah sistem sudah sesuai dengan harapan dan kebutuhan
bisnis.
2.
Tabel Tingkatan Pengujian
|
Tingkatan Pengujian |
Tujuan |
Contoh Penerapan |
|
Unit Testing |
Memastikan setiap fungsi atau modul kecil berjalan dengan
benar |
Menguji fungsi login apakah dapat menerima input username
dan password dengan benar |
|
Integration Testing |
Memastikan modul-modul dapat bekerja sama dengan baik |
Menguji proses login yang terhubung dengan database
pengguna |
|
System Testing |
Memastikan seluruh sistem berjalan sesuai kebutuhan |
Menguji seluruh fitur aplikasi seperti login, transfer, dan
logout dalam satu sistem |
|
Acceptance Testing |
Memastikan sistem sesuai kebutuhan pengguna |
Pengguna mencoba aplikasi dan memastikan fitur transfer
berjalan sesuai harapan |
3.
Studi Kasus: Sistem Pemesanan Tiket
Online
Pada sistem
pemesanan tiket online, setiap tingkatan pengujian memiliki peran penting. Pada
tahap unit testing, pengujian dilakukan pada bagian kecil seperti fungsi
pencarian jadwal, pemilihan kursi, dan proses pembayaran secara terpisah.
Selanjutnya pada integration testing, dilakukan pengujian hubungan antar
modul, misalnya antara sistem pemesanan dengan sistem pembayaran dan database
tiket. Setelah itu, system testing dilakukan dengan menguji keseluruhan
sistem, mulai dari pengguna mencari tiket hingga proses pembayaran selesai
untuk memastikan semua fitur berjalan dengan baik. Terakhir, acceptance
testing dilakukan oleh pengguna atau pihak perusahaan untuk memastikan
sistem sudah sesuai dengan kebutuhan, mudah digunakan, dan siap digunakan
secara nyata.
B.
Jenis-Jenis Pengujian Perangkat Lunak
1.
Tiga Kategori Utama Pengujian
·
Black-Box Testing
Pengujian yang
dilakukan tanpa melihat struktur internal kode program. Fokusnya hanya pada
input dan output untuk memastikan sistem berjalan sesuai fungsi yang
diharapkan.
·
White-Box Testing
Pengujian yang
dilakukan dengan memahami dan memeriksa struktur internal kode program.
Biasanya dilakukan oleh developer untuk memastikan logika program berjalan
dengan benar.
·
Grey-Box Testing
Pengujian
gabungan antara black-box dan white-box, di mana penguji memiliki sedikit
pengetahuan tentang struktur internal sistem, tetapi tetap menguji dari sisi
pengguna.
2.
Tabel Perbandingan Metode Pengujian
|
Metode Pengujian |
Deskripsi |
Kelebihan |
Kekurangan |
|
Black-Box Testing |
Menguji fungsi sistem berdasarkan input dan output tanpa
melihat kode |
Mudah dilakukan dan sesuai dengan sudut pandang pengguna |
Tidak dapat mendeteksi kesalahan pada struktur internal |
|
White-Box Testing |
Menguji logika dan struktur internal program secara
langsung |
Dapat menemukan kesalahan pada kode secara detail |
Membutuhkan pemahaman coding yang tinggi |
|
Grey-Box Testing |
Kombinasi antara black-box dan white-box |
Lebih efektif karena menggabungkan dua pendekatan |
Tidak sedalam white-box dan tidak sesederhana black-box |
3.
Metode yang Paling Sesuai untuk
Aplikasi AI
Untuk aplikasi berbasis Artificial
Intelligence (AI), metode yang paling sesuai adalah Grey-Box Testing.
Hal ini karena sistem AI memiliki kompleksitas tinggi, sehingga pengujian tidak
cukup hanya melihat input dan output saja seperti pada black-box. Di sisi lain,
struktur internal AI (seperti model machine learning) juga tidak selalu mudah
dipahami sepenuhnya seperti pada white-box. Dengan pendekatan grey-box, penguji
dapat memahami sebagian cara kerja sistem sekaligus tetap menguji dari sisi
pengguna. Pendekatan ini memungkinkan pengujian yang lebih menyeluruh, terutama
dalam memastikan akurasi, performa, dan keandalan sistem AI dalam berbagai
kondisi penggunaan.
Bagian 3: Teknik Pengujian Perangkat Lunak
A.
Teknik Pengujian Fungsional dan
Non-Fungsional
1.
Perbedaan Pengujian Fungsional dan
Non-Fungsional
Pengujian
fungsional berfokus pada apakah sistem dapat menjalankan fungsi sesuai dengan
kebutuhan yang telah ditentukan. Pengujian ini melihat dari sisi fitur atau
layanan yang diberikan kepada pengguna, seperti login, transaksi, atau
pencarian data.
Sementara itu,
pengujian non-fungsional berfokus pada kualitas sistem secara keseluruhan,
seperti kecepatan, keamanan, keandalan, dan kemampuan sistem dalam menangani
banyak pengguna. Pengujian ini tidak melihat apa yang dilakukan sistem, tetapi
bagaimana sistem tersebut bekerja.
2.
Contoh Teknik Pengujian
a.
Teknik Pengujian Fungsional:
·
Equivalence Partitioning (membagi
data input menjadi kelompok)
·
Boundary Value Analysis (menguji
nilai batas input)
·
Decision Table Testing (menguji
kombinasi kondisi dan aksi)
b.
Teknik Pengujian Non-Fungsional:
·
Performance Testing (menguji
kecepatan dan respons sistem)
·
Security Testing (menguji keamanan
sistem)
·
Usability Testing (menguji kemudahan
penggunaan)
3.
Studi Kasus: Aplikasi E-Commerce
|
Jenis Pengujian |
Teknik Pengujian |
Contoh Penerapan |
|
Fungsional |
Boundary Value Analysis |
Menguji input jumlah pembelian (misalnya minimal 1 dan
maksimal stok tersedia) |
|
Non-Fungsional |
Performance Testing |
Menguji apakah sistem tetap cepat saat banyak pengguna
melakukan transaksi secara bersamaan |
B.
Teknik Pengujian Berbasis Struktur
dan Pengalaman
1.
Teknik Berbasis Struktur
·
Control Flow Testing
Teknik ini menguji alur logika program, memastikan setiap jalur
eksekusi dalam kode telah diuji dengan baik.
·
Data Flow Testing
Teknik ini fokus pada bagaimana data diproses dalam program, mulai
dari input, penggunaan, hingga output.
2.
Teknik Berbasis Pengalaman
·
Error Guessing
Teknik ini mengandalkan pengalaman tester untuk menebak bagian
sistem yang berpotensi mengalami kesalahan.
·
Exploratory Testing
Teknik ini dilakukan tanpa skenario tetap, di mana tester secara
aktif mengeksplorasi sistem untuk menemukan bug.
3.
Skenario Exploratory Testing (Sistem
Manajemen Inventaris Gudang)
Seorang tester mencoba menggunakan
sistem inventaris tanpa panduan khusus. Tester mulai dengan menambahkan data
barang baru, kemudian mencoba menginput jumlah stok dengan nilai tidak wajar
seperti angka negatif atau sangat besar. Selanjutnya tester mencoba mengedit
dan menghapus data barang untuk melihat apakah sistem merespons dengan benar.
Tester juga mencoba melakukan beberapa aktivitas secara bersamaan, seperti
menambah dan mengurangi stok secara cepat, untuk melihat apakah sistem tetap
stabil. Dari eksplorasi ini, tester dapat menemukan potensi kesalahan seperti
validasi input yang kurang baik atau kesalahan perhitungan stok.
Bagian 4 : Proses Dan Otomatisasi Pengujian Perangkat
Lunak.
A.
Proses Pengujian Dan Dokumentasi
1.
Tahapan Utama Proses Pengujian
Tahapan
pengujian perangkat lunak dimulai dari perencanaan, yaitu menentukan strategi,
metode, dan ruang lingkup pengujian. Selanjutnya dilakukan perancangan test
case yang berisi skenario pengujian. Setelah itu, dilakukan eksekusi pengujian
untuk menjalankan test case yang telah dibuat. Hasil dari pengujian kemudian
dicatat dan dianalisis untuk menemukan bug atau kesalahan. Tahap terakhir
adalah pelaporan hasil pengujian serta perbaikan jika ditemukan masalah.
2.
Template Test Case
|
ID |
Deskripsi |
Langkah Uji |
Data Uji |
Hasil yang Diharapkan |
Hasil Aktual |
Status |
|
TC-001 |
Login berhasil |
Masukkan username & password lalu
klik login |
user123 / benar123 |
Berhasil masuk ke dashboard |
Sesuai |
Lulus |
3.
Test Case Aplikasi Pemesanan Hotel
|
ID |
Deskripsi |
Langkah Uji |
Data Uji |
Hasil yang Diharapkan |
Hasil Aktual |
Status |
|
TC-002 |
Pemesanan kamar berhasil |
Pilih kamar → isi data → klik pesan |
Tanggal valid, kamar tersedia |
Pesanan berhasil dikonfirmasi |
Sesuai |
Lulus |
|
TC-003 |
Tanggal tidak valid |
Pilih tanggal check-out sebelum check-in |
Check-in: 10, Check-out: 8 |
Sistem menolak input |
Sesuai |
Lulus |
|
TC-004 |
Kamar penuh |
Pilih kamar yang sudah habis |
Kamar full |
Muncul pesan “kamar tidak tersedia” |
Sesuai |
Lulus |
B.
Otomatisasi Pengujian
1.
Manfaat dan Tantangan Otomatisasi
Manfaat:
· Mempercepat
proses pengujian
· Mengurangi
kesalahan manusia
· Dapat
dijalankan berulang kali dengan hasil konsisten
· Efisien
untuk pengujian skala besar
Tantangan:
· Membutuhkan
waktu dan biaya awal yang tinggi
· Memerlukan
kemampuan teknis (coding)
· Maintenance
script jika sistem berubah
· Tidak
semua jenis pengujian cocok untuk otomatisasi
2.
Tabel Alat Bantu Otomatisasi
|
Alat Bantu |
Fitur Utama |
Kelebihan |
Kekurangan |
|
Selenium |
Automasi testing web browser |
Open source, mendukung banyak bahasa |
Setup cukup kompleks |
|
JUnit |
Framework testing untuk Java |
Mudah digunakan untuk unit testing |
Terbatas pada bahasa Java |
|
Appium |
Testing aplikasi mobile |
Mendukung Android & iOS |
Performa lebih lambat dibanding native tools |
3.
Jadi satu dengan nomor 2
4.
Contoh Script Selenium (Python)
Kesimpulan dan
Refleksi
1.
Kesimpulan
Dari materi yang telah dipelajari,
dapat disimpulkan bahwa pengujian perangkat lunak merupakan bagian penting
dalam proses pengembangan sistem. Pengujian tidak hanya berfungsi untuk
menemukan kesalahan, tetapi juga untuk memastikan bahwa perangkat lunak bekerja
sesuai dengan kebutuhan pengguna dan memiliki kualitas yang baik. Berbagai
jenis dan teknik pengujian, seperti unit testing, integration testing, hingga
system dan acceptance testing, membantu memastikan setiap bagian sistem
berjalan dengan optimal.
Pemahaman tentang software testing
sangat berpengaruh dalam meningkatkan kualitas perangkat lunak. Dengan
melakukan pengujian secara sistematis dan terstruktur, risiko kesalahan dapat
diminimalkan, performa sistem dapat ditingkatkan, serta keamanan dan keandalan
aplikasi dapat lebih terjamin. Hal ini pada akhirnya akan meningkatkan
kepercayaan pengguna terhadap sistem yang dikembangkan.
2.
Refleksi
Pribadi
Tantangan terbesar dalam memahami
dan menerapkan pengujian perangkat lunak adalah memahami berbagai teknik dan
menentukan metode yang paling sesuai dengan kondisi sistem yang diuji. Selain
itu, diperlukan ketelitian dan pemahaman logika yang baik agar dapat menemukan
kesalahan yang tidak terlihat secara langsung.
Konsep yang telah dipelajari dapat
diterapkan dalam proyek pengembangan perangkat lunak di dunia nyata, terutama
dalam memastikan bahwa aplikasi yang dibuat benar-benar berkualitas dan sesuai
kebutuhan pengguna. Dengan menerapkan pengujian sejak awal proses pengembangan,
developer dapat mengurangi kesalahan di tahap akhir serta menghasilkan sistem
yang lebih stabil, aman, dan mudah digunakan.
Komentar
Posting Komentar