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

Postingan populer dari blog ini

Bab 1 : Software Requirements

Bab 4 : Software Construction

Bab 9 : Software Engineering Management