Pengujian dan pemeliharaan
| English | Bahasa Indonesia |
|---|---|
| run-time error/rʌn taɪm ˈerə/ | kesalahan masa jalan |
| syntax error/ˈsɪntæks ˈerə/ | kesalahan sintaksis |
| logic error/ˈlɒdʒɪk ˈerə/ | kesalahan logika |
| dry run/draɪ rʌn/ | jalur kering |
| walkthrough/ˈwɔːkθruː/ | walkthrough |
| white-box testing/waɪt bɒks ˈtestɪŋ/ | pengujian kotak putih |
| black-box testing/blæk bɒks ˈtestɪŋ/ | pengujian kotak hitam |
| integration testing/ˌɪntɪˈɡreɪʃn ˈtestɪŋ/ | ujian integrasi |
| stub/stʌb/ | stubs |
| alpha testing/ˈælfə ˈtestɪŋ/ | pengujian alpha |
| beta testing/ˈbiːtə ˈtestɪŋ/ | ujian beta |
| acceptance testing/əkˈseptəns ˈtestɪŋ/ | ujian penerimaan |
| test strategy/test ˈstrætədʒi/ | strategi pengujian |
| test plan/test plæn/ | rencana pengujian |
| normal data/ˈnɔːml ˈdeɪtə/ | data normal |
| abnormal data/əbˈnɔːml ˈdeɪtə/ | data tidak normal |
| extreme data/ekˈstriːm ˈdeɪtə/ | data ekstrem |
| boundary data/ˈbaʊndəri ˈdeɪtə/ | data batas |
| corrective maintenance/kəˈrektɪv ˈmeɪntənəns/ | pemeliharaan korektif |
| adaptive maintenance/əˈdæptɪv ˈmeɪntənəns/ | pemeliharaan adaptif |
| perfective maintenance/pəˈfektɪv ˈmeɪntənəns/ | pemeliharaan perfektif |
| regression testing/rɪˈɡreʃn ˈtestɪŋ/ | regresi pengujian |
Tiga puluh tujuh detik
- Pada 4 Juni 1996 roket Ariane 5 pertama meluncur dari Guyana Prancis. Tiga puluh tujuh detik kemudian roket tersebut menyimpang jalur dan menghancurkannya sendiri. Beban muatannya bernilai empat satelit sebesar $370 juta.
- Penyebabnya adalah satu baris kode, yang digunakan ulang dari Ariane 4, yang mengubah angka 64-bit menjadi bilangan bulat 16-bit. Ariane 5 terbang lebih cepat, angkanya lebih besar, dan konversinya melebihi batas: sebuah kesalahan run-time dalam rutinitas yang bahkan tidak diperlukan setelah peluncuran.
- Kode tersebut belum pernah diuji dengan data penerbangan Ariane 5. Tidak ada orang yang memilih data uji di ujung ekstrem jangkauan roket baru.
- Pelajaran ini mencakup tiga jenis kesalahan, metode pengujian, cara memilih data uji, dan bagaimana program tetap hidup setelah rilis.
Tiga jenis kesalahan
- Kesalahan sintaks melanggar tata bahasa bahasa pemrograman: kurung yang hilang, kata kunci yang salah eja. Kesalahan ini ditemukan saat translasi, sehingga program tidak akan berjalan hingga diperbaiki.
- Kesalahan run-time terjadi saat program berjalan: pembagian dengan nol, file yang tidak ada, indeks array di luar rentang. Program crash atau memicu pengecualian; perbaikannya adalah pengecekan sebelum operasi berisiko.
- Kesalahan logika memungkinkan program berjalan dan menghasilkan hasil yang salah:
+untuk-, loop off-by-one, kondisi yang terbalik urutannya. Tidak ada yang menandainya; hanya pengujian dan pelacakan yang membukanya.

Ditemukan saat translasi, ditemukan saat run-time, ditemukan hanya dalam output
Pasangkan setiap jenis kesalahan dengan cara munculnya.
Sintaks = ditangkap semasa penterjemahan; logik = output salah; masa jalan = runtuh semasa dijalankan.
Contoh worked example: temukan dan perbaiki kesalahan
Total ← 0
FOR i ← 1 TO Count
Total ← Total + Marks[i]
NEXT i
Average ← Total / Count
IF Average > 50 THEN
OUTPUT "Pass"
- Sintaks:
IFtidak memilikiENDIF. Penerjemahnya menolaknya. Run-time: jikaCountadalah 0 pembagian gagal; lindungi denganIF Count > 0 THEN. Logika: jika nilai passing adalah 50 atau lebih,> 50menggugalkan siswa pada nilai persis 50; seharusnya>= 50. - Sebutkan jenisnya, jelaskan mengapa itu jenis itu, dan berikan perbaikannya. Tiga bagian, tiga poin.
Satu program membahagikan jumlah dengan bilangan entri dan runtuh apabila fail input adalah kosong. Ini adalah:
Pembahagian dengan sifar berlaku semasa program berjalan dan menghentikannya. Satu pengawal seperti IF Count > 0 mengatasinya.
Metode pengujian: membaca kode
- Dry run menelusuri kode di atas kertas, mencatat nilai setiap variabel dalam tabel trace setelah setiap baris.
- Walkthrough adalah tinjauan tim: programmer menjelaskan kode baris demi baris sementara rekan-rekan mencari kesalahan.
- Pengujian white-box merancang tes dari struktur internal kode, sehingga setiap pernyataan, cabang, dan loop teruji. Pengujian black-box merancang tes hanya berdasarkan spesifikasi: masukkan input, bandingkan output dengan yang diharapkan, tanpa melihat kode.

Dari luar melihat ke dalam, atau dari dalam melihat setiap jalur
Mereka bentuk kes ujian daripada spesifikasi sahaja (input dan output yang dijangkakan), mengabaikan kod dalaman, dipanggil pengujian kotak ______.
Ujian kotak hitam dari spesifikasi; kotak putih menggunakan struktur dalaman kod untuk meliputi nyataan dan cabang.
Metode pengujian: perakitan dan rilis
- Pengujian integrasi menggabungkan modul yang diuji secara terpisah dan menguji antarmuka di antaranya. Stub menggantikan modul yang belum ditulis, mengembalikan nilai tetap agar sisanya dapat diuji top-down.
- Pengujian alpha α dilakukan secara internal oleh pengembang sebelum rilis. Pengujian beta β memberikan program kepada kelompok terbatas pengguna asli di lingkungan mereka sendiri.
- Pengujian penerimaan dilakukan oleh pelanggan, sesuai kebutuhan, untuk memutuskan apakah produk layak guna.
Lab proses perangkat lunak
Klasifikasikan contoh pengembangan berdasarkan tahap atau alat yang dimilikinya.
Contoh worked example: metode mana untuk situasi mana
- Modul pelaporan selesai tetapi modul database yang dipanggilnya belum ada: uji dengan stub yang mengembalikan data tetap.
- Dua modul lulus uji masing-masing tetapi gagal ketika output satu masuk ke lainnya: pengujian integrasi pada antarmuka.
- Perangkat lunak sudah selesai; perusahaan ingin kesalahan ditemukan dalam kondisi nyata sebelum peluncuran umum: pengujian beta oleh sekelompok terbatas pengguna.
- Pelanggan memutuskan apakah akan membayar: pengujian penerimaan terhadap persyaratan yang disepakati. Sebutkan nama metode dan apa fungsinya.
Padankan setiap situasi dengan kaedah pengujian yang diperlukan.
Stub untuk bahagian yang hilang, beta untuk pengguna sebenar, penerimaan untuk pelanggan, integrasi untuk gabungan.
Strategi pengujian dan rencana pengujian
- Strategi pengujian adalah pendekatan tingkat tinggi: jenis pengujian apa yang akan dilakukan, oleh siapa, kapan, dan apa yang harus lolos sebelum tahap berikutnya.
- Rencana pengujian adalah daftar detail pengujian. Untuk setiap pengujian: tujuan, data input, hasil diharapkan, dan kolom untuk hasil sebenarnya saat pengujian dijalankan.
- Pengujian tanpa hasil yang diharapkan bukanlah pengujian. Ini hanya menunjukkan apa yang dilakukan program, bukan apakah hal itu benar.
Rancangan ujian menyenaraikan, bagi setiap ujian, data input dan output yang dijangkakan.
Tujuan, input, output yang dijangkakan dan lajur untuk output sebenar. Strategi adalah pendekatan tahap tinggi; rancangan adalah senarai terperinci.
Memilih data pengujian
- Data normal: nilai valid tipikal di dalam rentang, yang seharusnya diterima dan diproses dengan benar.
- Data tidak normal: nilai yang seharusnya ditolak, di luar rentang atau tipe yang salah.
- Data ekstrem: nilai terbesar dan terkecil yang masih diterima, di tepi rentang. Data batas: pasangan yang melintasi setiap tepi, nilai ekstrem yang diterima dan nilai penolakan tepat di luarnya, di mana kesalahan off-by-one bersembunyi.

Di dalam, di luar, dan tepat di garis
Bagi medan yang menerima markah 0–100, manakah nilai ujian sempadan?
Data sempadan berada di tepi julat yang sah (dan tepat di luar) — di mana kesilapan off-by-one tersembunyi.
Contoh dikerjakan: data pengujian untuk nilai dari 0 hingga 100
| Jenis | Data | Hasil yang diharapkan |
|---|---|---|
| normal | 50, 75 |
diterima dan diproses |
| tidak normal | -10, 200, "abc" |
ditolak: di luar rentang atau tipe salah |
| ekstrem | 0, 100 |
diterima: nilai valid terkecil dan terbesar |
| batas | -1 dan 0, 100 dan 101 |
-1 ditolak, 0 diterima; 100 diterima, 101 ditolak |
- Setiap baris memerlukan hasil yang diharapkan; tabel input saja mendapat setengah poin. Nilai ekstrem diterima:
-1adalah batas, bukan ekstrem.
Satu medan menerima markah dari 0 hingga 100. Nilai manakah adalah data ujian ekstrem? Pilih semua yang sesuai.
Nilai ekstrem ialah nilai terkecil dan terbesar yang masih diterima. -1 ditolak, jadi ia adalah sempadan atau tidak normal; 50 adalah normal.
Pemeliharaan
- Sebagian besar biaya siklus hidup program dihabiskan setelah rilis. Pemeliharaan korektif memperbaiki kesalahan yang ditemukan saat penggunaan.
- Pemeliharaan adaptif menjaga program tetap berfungsi di lingkungan yang berubah: sistem operasi baru, API baru, perubahan undang-undang.
- Pemeliharaan perfektif meningkatkan program yang sudah berfungsi: kinerja lebih cepat, fitur baru yang diminta pengguna. Sebuah program mungkin membutuhkan ketiga jenis ini sepanjang hidupnya.

Perbaiki, pertahankan agar tetap berfungsi, buat lebih baik
Penyelenggaraan pembetulan membetulkan kecacatan, penyelenggaraan sempurna meningkatkan ciri-ciri, dan penyelenggaraan penyesuaian mengekalkan perisian berfungsi dalam persekitaran yang berubah.
Tiga jenis penyelenggaraan: pembetulan (memperbaiki ralat), sempurna (penambahbaikan), penyesuaian (sistem pengoperasian/peranti/peraturan baharu).
Satu program gaji diubah kerana undang-undang cukai berubah. Jenis penyelenggaraan manakah ini?
Program itu tidak cacat dan tidak sedang ditingkatkan; persekitarannya telah berubah. Itu adalah penyelenggaraan penyesuaian.
Memodifikasi program yang ada
- Baca kode yang ada sampai Anda memahami algoritma dan aliran data. Temukan di mana perubahan harus dilakukan: subrutin mana, baris mana.
- Lakukan perubahan sekecil mungkin; jangan tulis ulang kode yang bekerja. Perbarui setiap bagian terkait: setiap pemanggil dari daftar parameter yang berubah, setiap rutin yang menggunakan struktur data yang berubah.
- Uji perilaku baru dan lama: pengujian regresi memeriksa bahwa tidak ada yang dulunya berfungsi menjadi rusak. Kemudian dokumentasikan perubahannya.
Selepas mengubah program, ujian regresi memeriksa bahawa:
Ujian regresi menjalankan semula ujian lama untuk mengesahkan tingkah laku sedia ada masih berfungsi selepas perubahan.
Susun langkah-langkah mengubah suai program sedia ada secara berurutan.
Fahami, cari lokasi, ubah kecil, sebarkan, uji semua, rekod. Melewati ujian regresi adalah cara sebuah pembaikan merosakkan perkara lain.
⟦⟧ Nilai yang sering terlewat
- Ekstrem diterima; tidak normal ditolak.
0dan100adalah ekstrem;-1dan101adalah nilai batas di sisi penolakan. - Kesalahan logika tidak membuat program crash. Jika crash, itu adalah kesalahan waktu menjalankan (run-time error).
- Alpha adalah internal; beta adalah pengguna nyata di luar. Stub menggantikan modul yang hilang; itu bukan metode pengujian untuk kode yang selesai.
- Baris rencana pengujian tanpa output yang diharapkan tidak mendapatkan poin. Pengujian regresi mengikuti setiap perubahan.
Anda telah memahaminya
- Kesalahan sintaks menghentikan penerjemahan · kesalahan waktu menjalankan membuat program berjalan crash · kesalahan logika berjalan dan memberikan output salah, ditemukan hanya melalui pengujian
- Metode: jalur kering, walkthrough, kotak putih (dari kode), kotak hitam (dari spesifikasi), integrasi (antarmuka, dengan stub untuk modul yang hilang), alpha (internal), beta (pengguna nyata), penerimaan (pelanggan)
- Data pengujian: normal diterima, tidak normal ditolak, ekstrem tepi yang diterima, batas di kedua sisi setiap tepi; setiap pengujian memiliki hasil yang diharapkan
- Pemeliharaan: korektif perbaikan, adaptif mengikuti lingkungan, perfektif peningkatan; modifikasi kecil, perbarui pemanggil, uji regresi