Wednesday, March 11, 2020

Dasar Pengujian Perangkat Lunak

Dasar Pengujian Perangkat Lunak dan Model Pengujian

Dasar Pengujian Perangkat Lunak dan Model Pengujian
Dasar pengujian perangkat lunak merupakan hal yang perlu dipahami bagi para pengembang perangkat lunak agar mengerti bagaimana langkah-langkah pengujian perangkat lunak dilakukan. Dalam dasar pengujian perangkat lunak terdapat beberapa pengujian seperti pengujian unit dan pengujian modul. Di dalam dasar pengujian perangkat lunak juga perlu dipahami tentang model-model pengujian integrasi dan validasi.

Prosedur Pengujian Unit – sebagai dasar pengujian perangkat lunak

  • Pengujian unit pada umumnya merupakan perkembangan dari langkah pengkodean.
  • Setelah program sumber dikembangkan, ditinjau kembali dan diverifikasi untuk sintaknya, maka perancangan test case dimulai.
  • Peninjauan kembali perancangan informasi akan memberikan petunjuk untuk menentukan test case.
  • Karena modul bukan program yang berdiri sendiri, maka driver (pengendali) dan atau stub perangkat lunak harus dikembangkan untuk tiap-tiap pengujian.

Modul Testing (Pengujian Modul) – sebagai dasar pengujian perangkat lunak

  • Pengujian interaksi dari semua komponen yang berhubungan terhadap modul.
  • Pengujian modul yang independent
  • Modul secara individu diuji secara individu
  • Modul berupa kumpulan fungsi, prosedure atau program-program.
  • Tidak secara increment, biasanya dilakukan oleh programer yang membuat program tersebut.
  • Menggunakan stub dan driver.
  • Pengujian white-box cocok untuk tingkatan ini.
  • Pengujian struktur data lokal, kondisi batasan, jalur independent, jalur penanganan kesalahan.
  • Formal: rencana kegiatan dijelaskan dan tertulis.
  • Modul bukanlah program yang berdiri sendiri, perangkat lunak driver dan atau stubs harus dikembangkan bagi masing-masing pengujian unit.
  • Pada sebagian besar aplikasi, driver tidak lebih dari sebuah “Program Utama” yang menerima data test case.
  • Data sampai ke modul untuk diuji, kemudian mencetak hasil yang relevan.
  • Stub berfungsi menggantikan modul yang merupakan subordinat dari modul yang akan diuji.
  • Stub menggunakan interface subordinat untuk melakukan manipulasi data minimal mencetak, entri, dan kembali.

Integration Testing (Pengujian Terintegrasi) – sebagai dasar pengujian perangkat lunak

  • Pengujian integrasi adalah teknik yang sistematis untuk mengkonstruksi susunan program sambil melakukan pengujian untuk memeriksa kesalahan yang nantinya digabungkan dengan interface.
  • Sasarannya adalah untuk mengambil modul yang dikenai pengujian unit dan membangun struktur program yang telah ditentukan oleh desain.
  • Kesulitannya adalah lokalisasi error yang sulit ditemukan pada saat proses.
  • Terdapat interaksi yang rumit, antara komponen sistem dan ketika ditemukan output yang menyimpang, mungkin sulit untuk menemukan sumber error tersebut.

Integrasi Non-Inkremental

Program diuji sebagai kesatuan. Serangkaian kesalahan akan terjadi. Koreksi sulit dilakukan karena isolasi penyebab diperumit oleh luasnya program keseluruhan. Sekali kesalahan tersebut dibetulkan, maka akan muncul kesalahan yang baru dan proses itu terus berlanjut dalam loop yang kelihatannya tidak akan pernah berhenti.

Integrasi Inkremental

Program dibangun dan diuji ke dalam segmen-segmen kecil, sehingga kesalahan lebih mudah diisolasi dan dibetulkan. Interface lebih mungkin untuk diuji secara lengkap, dan pendekatan pengujian secara sistematis dapat diaplikasikan.

Top-Down Integration

  • Adalah pendekatan inkremental terhadap struktur program.
  • Modul diintegrasikan dengan menggerakkan kebawah dengan hirarki kontrol, dimulai dengan modul kontrol utama (program utama).
  • Memverifikasi kontrol utama dan keputusan pada saat awal proses pengujian.
  • Pada struktur program yang dibuat dengan baik, keputusan akan dikerjakan pada tingkat atas hirarki.
  • Stub mengganti modul tingkat rendah pada awal pengujian top-down, sehingga tidak ada data yang penting yang dapat mengalir ke atas pada struktur program.
Proses integrasi dilakukan dalam 5 (lima) langkah:
  1. Modul kontrol utama digunakan sebagai test driver, dan stub ditambahkan pada semua modul yang secara langsung subordinat terhadap modul kontrol utama.
  2. Stub subordinat diganti pada suatu saat dengan modul aktual.
  3. Pengujian dilakukan pada saat masing-masing modul diintegrasi.
  4. Pada kelengkapan masing-masing rangkaian pengujian, stub yang lain diganti dengan modul real.
  5. Pengujian regresi dapat dilakukan untuk memastikan bahwa kesalahan baru belum dimunculkan.

Bottom-Up Integrasition

  • Dapat dinyatakan dengan penyusunan yang dimulai dan diuji dengan atomic modul (modul tingkat paling bawah pada struktur program).
  • Modul diintegrasikan dari bawah keatas sehingga pemrosesan yang diperlukan untuk modul subordinat yang selalu diberikan akan selalu tersedia dan kebutuhan akan stub dapat dieliminasi.
Strategi bottom-up integration dapat diterapkan dengan urutan langkah-langkah sebagai berikut:
  1. Modul tingkat paling bawah digabungkan ke dalam cluster (sering disebut build) yang melakukan subfungsi perangkat lunak spesifik.
  2. Driver (program kontrol untuk pengujian) ditulis untuk mengkoordinasi input dan output test case.
  3. Cluster diuji.
  4. Driver diganti dan cluster digabungkan dengan menggerakkannya ke atas di dalam struktur program.

Regression Testing (Pengujian Regresi)

  • Adalah aktivitas yang membantu memastikan bahwa perubahan (karena pengujian atau alasan lain) tidak menimbulkan tingkah laku yang tidak diharapkan atau kesalahan tambahan.
  • Merupakan eksekusi ulang dari beberapa subset yang telah dilakukan untuk memastikan bahwa perubahan tidak menimbulkan efek samping yang tidak diharapkan.
  • Pengujian yang berhasil akan menghasilkan kesalahan, dan setiap kesalahan harus dikoreksi.
  • Setiap kali perangkat lunak dikoreksi, maka banyak aspek konfigurasi perangkat lunak (program, dokumentasi atau data yang mendukung) akan diubah.
Pengujian regresi (subset dari pengujian yang akan dieksekusi) berisi tiga kelas test case yang berbeda yaitu:
  • Sample representatif dari pengujian yang akan menggunakan semua fungsi perangkat lunak.
  • Pengujian tambahan yang akan berfokus pada fungsi-fungsi perangkat lunak yang mungkin dipengaruhi oleh perubahan tersebut.
  • Pengujian yang berfokus pada komponen perangkat lunak yang diubah.

Pemilihan Strategi Integrasi

Pemilihan strategi integrasi, tergantung pada karakteristik perangkat lunak dan kadang-kadang juga pada jadwal projek.
Secara umum pendekatan yang digabungkan (sandwitch testing), yang menggunakan strategi top-down untuk tingkat yang lebih tinggi dari struktur program, dipasangkan dengan strategi bottom-up untuk tingkat subordinat.
Pada saat pengujian integrasi dilakukan, penguji harus mengidentifikasi modul kritis. Modul kritis memiliki karakteristik sebagai berikut:
  1. Menekankan beberapa persyaratan perangkat lunak.
  2. Memiliki tingkat kontrol yang tinggi.
  3. Kompleks (Cyclomatic Complexity dapat digunakan sebagai indikator).
  4. Memiliki persyaratan kinerja yang terbatas.
Scope of Testing merangkum fungsi yang spesifik, kinerja dan karakteristik desain internal yang akan diuji. Pengujian dibatasi; kriteria perlengkapan dari masing-masing fase pengujian digambarkan; dan batasan jadwal didokumentasikan.
Test Plan menggambarkan seluruh strategi integarasi. Pengujian dibagai ke dalam phases dan builds yang menekankan fungsional spesifik dan karakteristik tingkah laku dari perangkat lunak tersebut. Misalnya pengujian integrasi untuk sebuah sistem komputer yang berorientasi pada grafik dapat dibagi ke dalam fase-fase pengujian sebagai berikut:
  • Interaksi pemakai (seleksi perintah, representasi tampilan, pemrosesan, dan representasi kesalahan).
  • Manipulasi dan analisis data (pembuatan simbol, penentuan dimensi, rotasi, komputasi sifat fisis).
  • Pemrosesan dan pemunculan tampilan (tampilan dua dimensi, tampilan tiga dimensi, grafid dan bagan).
  • Manajemen database (akses, update, integritas, kinerja).
Kriteria pengujian yang sesuai diaplikasikan untuk semua fase pengujian:
  • Integritas interface. Antar muka internal dan eksternal diuji pada saat masing-masing modul (kluster) ditambahkan ke dalam struktur.
  • Validitas fungsional. Pengujian yang didesain untuk mengungkap kesalahan fungsional yang dilakukan.
  • Isi Informasi. Pengujian dilakukan untuk mengungkap kesalahan yang berhubungan dengan struktur data global atau lokal yang dilakukan.
  • Kinerja. Pengujian didesain untuk memeriksa batasan kinerja yang dibangun selama desain perangkat lunak dilakukan.

Validation Testing (Pengujian Validasi) – sebagai dasar pengujian perangkat lunak

  • Dilakukan setelah integration testing dilakukan serta kesalahan-kesalahan yang ditemukan telah diperbaiki.
  • Validasi berhasil jika fungsi-fungsi yang ada pada perangkat lunak telah sesuai dengan yang diharapkan oleh pemakai.
  • Merupakan kumpulan pengujian black-box yang memperlihatkan atau menunjukkan sesuai dengan yang diperlukan.
  • Garis besar rencana pengujian dikerjakan dan prosedur pengujian didefinisikan dengan test case yang spesifik untuk menunjukkan sesuai dengan yang diperlukan.
  • Rencana dan prosedur dirancang untuk menjamin seluruh keperluan fungsional telah terpenuhi, seluruh prformansi dapat dicapai, dokumentasi dilakukan dengan benar.
Setelah pengujian dikerjakan, ada satu kemungkinan dari dua kondisi yang ada, yaitu:
  1. Karakteristik performansi fungsi sesuai dengan spesifikasi dan dapat diterima.
  2. Penyimpangan dari spesifikasi ditemukan dan daftar penyimpangan dibuat.

Kajian Konfigurasi

  • Merupakan elemen penting dari proses validasi.
  • Tujuannya untuk memastikan apakah semua elemen konfigurasi perangkat lunak telah dikembangkan dengan tepat, dikatalog, dan memiliki detail yang perlu untuk mendukung fase pemeliharaan dari siklus hidup perangkat lunak.
  • Sering disebut audit.

Alpha dan Beta Testing

  • Sangat tidak mungkin bagi pengembang perangkat lunak untuk meramalkan bagaimana pelanggan akan benar-benar menggunakan sebuah program.
  • Instruksi yang digunakan dapat disalah-interprestasikan, kombinasi data yang aneh dapat dipakai secara reguler, dan output yang kelihatannya sudah jelas bagi penguji tidak dapat dimengerti oleh pemakai di lapangan.
  • Bila perangkat lunak biasa dibangun bagi satu pelanggan, maka acceptance test dapat dilakukan untuk memungkinkan pelanggan memvalidasi semua persyaratan.
  • Acceptance Test dilakukan karena memungkinkan pelanggan untuk menemukan kesalahan yang lebih terinci dan membiasakan pelanggan lebih memahami perangkat lunak yang telah dibuat.
  • Jika perangkat lunak dibuat dan dikembangkan untuk dipakai oleh banyak pelanggan, maka tidak praktis untuk melakukan pengujian satu per satu terhadap perangkat lunak tersebut.
  • Maka digunakan Alpha dan Beta Testing.
  • Alpha Testing adalah tahap pengembangan dimana perangkat lunak atau perangkat keras yang telah dibuat dikirim ke kelompok pemakai atau pembeli yang potensial kemudian mereka akan menggunakan produk ini untuk melaporkan jika produk ini gagal.
  • Pengujian alpha dilakukan pada sebuah lingkungan yang terkontrol.
  • Pengujian beta dilakukan oleh pelanggan yang merupakan pemakai akhir perangkat lunak.
  • Pengujian Beta merupakan sebuah aplikasi “live” dari perangkat lunak dari suatu lingkungan yang tidak dapat dikontrol oleh pengembang.
  • Pelanggan merekam semua masalah yang ditemui selama pengujian beta dan melaporkannya kepada pengembang.
  • Pengembang melakukan modifikasi kemudian mempersiapkan pelepasan produk ke seluruh pelanggan.

System Testing

  • Perangkat lunak merupakan salah satu dari sistem yang berbasis komputer yang sangat besar.
  • Perangkat lunak diintegrasikan dengan elemen sistem lainnya (hardware, informasi) dan serangkaian integrasi sistem dan validasi test dilakukan.
  • Jika pengujian gagal atau diluar scope dari pengembangan sistem dan tidak hanya dikerjakan oleh programmer, maka langkah yang diambil selama perancangan dan pengujian dapat diperbaiki.
  • Peran Analisis Sistem antara lain:
    • Menangani kesalahan-kesalahan yang muncul dari elemen-elemen perangkat lunak.
    • Mengerjakan serangkaian pengujian.
    • Mencatat hasil pengujian.
    • Berpartisipasi dalam perencaan dan merancang pengujian sistem untuk menjamin kualitas perangkat lunak.
  • System testing adalah sederetan pengujian yang berbeda-beda dengan tujuan utama mengerjakan keseluruhan elemen dalam sistem yang telah dikembangkan.

Stress Testing (Pengujian Stres)

  • Didesain untuk menghadapi situasi yang tidak normal, pada saat program mengalami pengujian.
  • Dilakukan oleh sistem untuk kondisi-kondisi volume data yang tidak normal (melebihi atau kurang dari batasan) frekuensi dan lain-lain.
  • Intinya penguji berusaha untuk merusak program.

Recovery Testing (Pengujian Perbaikan)

  • Adalah pengujian sistem yang memaksa perangkat lunak untuk mengalami kegagalan dalam berbagai cara dan melakukan verifikasi sesuai dengan performansi yang tepat.
  • Banyak sistem yang berbasis komputer harus melindungi dari kesalahan dan melanjutkan prosesnya dalam waktu yang telah ditentukan.
  • Sistem harus toleran terhadap kesalahan-kesalahan. Kesalahan pemrosesan tidak boleh keseluruhan fungsi berhenti.

Security Testing (Pengujian Keamanan)

  • Adalah pengujian yang akan melakukan verifikasi dari mekanisme perlindungan yang akan dibuat oleh sistem, melindungi dari hal-hal yang mungkin terjadi.
  • Penguji memerankan individu yang akan menembus sistem.
  • Pengujian untuk mencoba menembus tingkat keamanan sebuah perangkat.
  • Strategi Sandwitch Compromise, menguji perangkat lunak dengan melakukan pengujian mulai dari entry point tertentu kemudian bergerak keatas atau kebawah.
  • Volume Testing, menguji perangkat lunak dengan data yang berlebihan.
  • Configuration Testing, menguji berbagai variasi perangkat lunak di berbagai lingkungan perangkat lunak.
  • Compability Testing, menguji kesesuaian sebuah perangkat lunak dengan sistem yang sedang dimanfaatkan.
  • Timing Testing, melakukan pengujian terhadap perangkat lunak untuk evaluasi terhadap waktu tanggap dan waktu proses yang dibutuhkan untuk meyelesaikan sebuah tugas.
  • Enviromental Testing, menguji toleransi perangkat lunak terhadap suhu, kelembaban, gerak dan perpindahan.
  • Human Factor Testing, menguji antar muka perangkat lunak bersama-sama dengan pemakai.

Interface Testing (Pengujian Interface)

  • Dilakukan ketika modul atau subsistem diintegrasi untuk membuat sistem yang lebih besar.
  • Setiap modul atau subsistem memiliki interface yang terdefinisi yang dipanggil oleh komponen program lain.
  • Tujuannya adalah untuk mendeteksi kesalahan yang mungkin telah masuk ke dalam sistem karena error interface atau asumsi invalid mengenai interface.
  • Penting untuk pengembangan berorientasi objek.
Visit my other website: http://masjidalfajar.com/

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

No comments:

Post a Comment