Sabtu, 16 Juni 2012

Software Testing

Sistem Pengujian Software
Pengujian software sangat diperlukan untuk memudahkan software aplikasi yang akan dibuat menjadi mudah untuk dipasang pada komputer pengguan. Pengembang harus membuat atau menggunakan program khusus yang digunakan bisa membuat paket instalasi, supaya progam instalasi menjadi baik. Testing sendiri memiliki arti elemen kritis dari jaminan kualitas perangkat lunak dan merepresentasikan kajian pokok dari spesifikasi, desain, dan pengkodean.
Pengujian software haruslah didefinisikan dalam proses rekayasa perangkat lunak atau software engineering. Sejumlah strategi pengujian software telah diusulkan dalam literatur. Semuanya menyediakan developer software dengan template untuk pengujian. Dalam hal ini, semuanya harus memiliki karakteristik umum berupa :

  • Testing dimulai pada level modul dan bekerja keluar kearah integrasi pada sistem berbasiskan komputer
  • Teknik testing yang berbeda sesuai dengan poin-poin yang berbeda pada waktunya
  • Testing diadakan oleh software developer dan untuk proyek yang besar oleh group testing yang independent
  • Testing dan Debugging adalah aktivitas yang berbeda tetapi debugging harus diakomodasikan pada setiap strategi testing

Langkah-langkah Pengujian Software
Kemudian kita akan menjalankan langkah-langkah yang harus diperhatikan dalam pengujian software sebagai berikut.
Terdapat 4 langkah yaitu:

  • Unit testing-testing per unit yaitu mencoba alur yang spesifik pada struktur modul kontrol untuk memastikan pelengkapan secara penuh dan pendeteksian error secara maksimum
  • Integration testing – testing per penggabungan unit yaitu pengalamatan dari isu-isu yang diasosiasikan dengan masalah ganda pada verifikasi dan konstruksi program
  • High-order test yaitu terjadi ketika software telah selesai diintegrasikan atau dibangun menjadi satu –tidak terpisah-pisah
  • Validation test yaitu menyediakan jaminan akhir bahwa software memenuhi semua kebutuhan fungsional, kepribadian dan performa.

Setelah kita menyelesaikan langkah-langkah pada pengujian software, kita dapat mengetahui kriteria dari hasil testing yang dilakukan diantara lain, yaitu :

  • Dengan menggunakan model statisitik dan teori software reliability, model dari kegagalan software-yang tidak terdeteksi selama testing-sebagai fungsi dari waktu eksekusi dapat dikembangkan
  • Sebuah versi dari model kegagalan yang disebut logarithmic Poisson execution-time model.

 

Test Unit (Test Level Komponen)
Pengujian unit: Komponen individual yang diuji secara independen untuk memastikan kualitasnya. Fokusnya untuk tidak menutup error pada desain dan implementasi, diantaranya adalah:

  • struktur data pada sebuah komponen
  • logika program dan struktur program pada sebuah komponen
  • interface komponen
  • fungsi dan operasi dari sebuah component
  • Penguji/tester unit: pengembang dari komponen.

Test Integrasi
Selain ada test unit ada pula test integrasi yang mempunyai arti Sebuah group dari component dependent diuji bersama untuk memastikan kualitas dari unit integrasinya. Merupakan teknik sistematik untuk membangun struktur program pada saat melakukan testing untuk mencari error. Secara obyektif untuk mengambil modul unit test dan membangun struktur program yang telah dirancang oleh desainnya. Fokusnya untuk meng-uncover error pada:

  • Desain dan konstruksi arsitektur software
  • Fungsi-fungsi yang terintegrasi atau operasi pada level sub-system
  • Interface dan interaksi
  • Integrasi resource dan/atau integrasi lingkungan
  • Penguji integration: pengembang dan/atau test engineer.

Strategi Pengujian Integrasi
Ada 2 pendekatan strategi penguji integrasi, yaitu :

  1. integrasi non-incremental
  2. integrasi incremental

Integrasi non-incremental :
Integrasi non-incremental adalah Big Band, menggabungkan (atau mengintegrasi) semua bagian dalam sekali. Terdapat keuntungan dan kerugian dari integrasi ini :

  • Keuntungan: Sederhana
  • Kerugian:
    • sulit untuk men-debug, tidak mudah untuk mengisolasi error
    • tidak mudah untuk memvalidasi hasil test
    • mustahil untuk membentuk sebuah sistem terintegrasi impossible

 

Integrasi incremental:
Integrasi incremental adalah  mengintegrasi sistem tahap demi tahap(atau bagian demi bagian) dalam sebuah pesanan yang didesain dengan baik. Terdapat tiga metode penting pada integrasi ini:

  1. Top-down
  2. bottom-up
  3. Sandwich

Integrasi Top-down
Integrasi top-down adalah Modul-modul diintegrasi dengan memindahkan downward melalui struktur kontrol. Modul subordinate ke modul kontrol utama digabung ke sistem dalam cara depth-first atau breadth-first. Proses integrasi memiliki lima langkah diantaranya adalah :

  1. Modul kontrol utama digunakan sebagai sebuah test driver, dan stubs disubstitusi untuk semua modul secara langsung ke modul kontrol utama.
  2. Stub subordinate digantikan sekali satu waktu dengan modul actual.
  3. Test terkonduksi sebagai tiap modul diintegrasi.
  4. Pada pelengkapan tiap kumpulan test, stub lainnya diganti dengan modul real.
  5. Pengujian regresi dapat dikonduksi.

Integration top-down pros dan cons :

  • biaya kostruksi stub
  • fungsi kontrol utama dapat diuji lebih cepat.

Integrasi Bottom-Up
Integrasi bottom-up adalah modul pada level terbawah diintegrasi pertama, kemudian dengan menggerakkan keatas melalui struktur kontrol. Proses integration(lima langkah):

  1. Modul low-level dikombinasikan ke cluster yang menunjukkan sebuah sub-function software spesifik.
  2. Sebuah driver ditulis untuk meng-coordinate input dan output test case.
  3. Test cluster diuji.
  4. Driver dipindah dan cluster digabungkan bergerak ke atas dalam struktur program.

Integrasi bottom-up pros dan cons:

  • tidak ada biaya stub
  • perlu pengujian driver
  • tidak ada sistem yang dapat dikontrol hingga langkah terakhir

Regression Testing
Regression testing Merupakan aktivitas yang membantu untuk memastikan sebuah perubahan (yang berkaitan dengan testing atau penjelasan lain) tidak menghasilkan perilaku yang tidak diharapkan atau error tambahan. Regression tes terdiri dari 3 kelas, yaitu:

  • Sebuah Contoh yang mewakili tes yang akan menguji semua fungsi software
  • Tes tambahan yang berfokus pada fungsi software yang tampak yang akan berubah akibat perubahan lain
  • Tes yang berfokus pada komponen software yang telah berubah
    Validation testing. Uji Validasi : Software yang berintegrasi diuji berdasarkan pada kebutuhan untuk memastikan bahwa kita memiliki produk yang benar. Fokus-nya adalah untuk meng-uncover error pada:
    • Input/output sistem
    • Informasi fungsi sistem dan data
    • Interface sistem dengan bagian eksternal
    • User interface
    • Perilaku dan performance sistem

Uji Sistem
Pengertian dari uji system adalah  Sistem software diuji keseluruhan. Ini memverifikasi semua elemen secara langsung untuk memastikan bahwa semua fungsi dan performance sistem diterima dalam lingkungan target. Terbagi menjadi 5 bagian yaitu :

  • Recovery Testing : sistem tes yang menekan software untuk gagal dengan cara yang bervariasi dan memverifikasi perbaikan sendiri dengan baik
  • Security Testing : usaha untuk memverifikasi mekanisme perlindungan yang dibuat dalam sistem apakah akan melindunginya dengan semestinya.
  • Stress Testing : didesain untuk menghadapi program dengan situasi abnormal.
  • Performance Testing : didesain untuk menguji performa software ketika bekerja dalam konteks pengintegraian sistem.
  • Pengujian instalasi : didesain untuk menguji prosedur instalasi dan software pendukungnya

Rencana Uji
Kemudian pada tahap rencana uji berhubungan dengan mengeset standar untuk pengujian proses dibanding penggambaran pengujian produk. Test plan/rencana uji terdiri atas:

  • standar untuk proses pengujian
  • resource yang diperlukan (hardware, software dan engineer)
  • jadwal pengujian (pengujian task dan milestones)
  • uji item (apa yang harus diuji)
  • prosedur recording test (hasil test harus secara sistematis direkam)
  • constraint

Debugging
Kemudian pada saat debugging  terdapat gejala-gejala yang mungkin terjadi

  • Gejalanya mungkin sebagai hasil dari masalah pemilihan waktu dibanding masalah proses
  • Kemungkinan sulit secara akurat mereproduksi kondisi input
  • Gejalanya mungkin terjadi dalam waktu yang dekat berkelanjutan
  • Gejalanya mungkin berkaitan dengan penyebab yang didistribusikan melewati sejumlah task yang berjalan pada prosesor yang berbeda. Terdapat 3 kategori pendekatan Debugging:
    1. Brute force : metode yang paling umum dan lebih efisien untuk mengisolasi penyebab dari error software
    2. Backtracking : metode yang dapat berhasil pada program kecil
    3. Cause elimination : perwujudan dari induksi atau deduksi dan pengenalan dari konsep binary partitioning

Test Issues pada Dunia Nyata

  • Pengujian software sangat mahal.
  • Bagaimana mendapat pengujian secara otomatis?

Pengujian software lainnya:

  • Pengujian GUI
  • Pengujian Software Berorientasi Object
  • Pengujian Komponen dan Pengujian Berbasis Komponen Software
  • Pengujian Fitur spesifik Domain
  • Pengujian Sistem Berbasis Web

 

Contoh dari Pengujian Sistem
IMPLEMENTASI ENTEPRISE SISTEM
Enterprise system adalah sistem berbasis software untuk membantu pengelolaan sistem informasi pada suatu organisasi dengan skala besar. Skala besar berarti volume transaksi yang besar, concern terhadap kualitas informasi yang tinggi, mengintegrasikan berbagai proses bisnis, lintas bidang (horisontal) maupun lintas strata (vertikal).

  • Contoh dari ES adalah ERP (Enterprise Resource Planning) atau e-Business secara umum, e-Government, dan ingrated software lainnya.

Mengimplementasikan ES tidak mudah, atau setidaknya memilki strategi yang berbeda dengan sistem lain yang terbatas ruang lingkupnya, penggunanya dan tidak terpadu. Implementasi di sini bermakna bahwa software telah dapat digunakan dan bisa memberikan value bagi penggunanya sesuai tujuan pemanfaatan software tsb. Implementasi ini bisa dilakukan secara internal organisasi (oleh divisi IT/MIS) atau dengan pihak eksternal dalam kerangka proyek dan terikat legalitas berbentuk kontrak.
implementator sebagai pihak eksternal yang melakukan implementasi dan klien sebagai organisasi yang diimplementasikan softwarenya.
Implementasi ES berbeda dengan implementasi software berskala kecil atau yang penggunanya tunggal seperti MS Word, Database Rental VCD atau website, meskipun produknya sama-sama software yang berjalan di atas server dan membutuhkan konektivitas. Tentu nanti ada strategi yang berbeda, metode pemilihan bahan yang berbeda, tahapan yang berbeda, standar-standar tertentu, dst. Demikian pula dalam konteks software, bisa dipilah berdasar cakupan penggunaannya, bisa dilihat juga dari jenisnya (generik dan customized), yang masing-masing punya strategi implementasi yang berbeda. SE berkaitan dengan pengelolaan sistem informasi, yang tidak hanya bicara teknologi saja, tapi berkaitan dengan proses bisnis, struktur organisasi dan manusianya.
Pola pikir ”developer” adalah menganggap suatu problem bisa selesai dengan solusi berbasis software yang baik dan tepat. Tapi apakah cukup seperti itu? Dalam membangun solusi, ya itu cukup, tapi belum tentu menjamin kesuksesan implementasi. Pola pikir developer cenderung berfokus pada analisis dan development tidak pada implementasinya. Padahal sukses tidaknya proyek software, baik buruknya reputasi implementator, seringkali orang luar melihat pada keberhasilan implementasinya dan value yang didapatkan klien. ES untuk organisasi dengan puluhan divisi, ribuan orang, puluhan kepentingan, dan mungkin ratusan konflik. Apalagi jika software yang kita implementasikan bukan sekedar supporting tools tapi adalah core dari bisnis itu sendiri (konsep e-business). Cara implementasi dengan pola pikir seperti ini hanya akan menghasilkan solusi dan software yang bagus, tapi tidak optimal dan memberikan value untuk organisasi tsb, atau bahkan malah tidak pernah akan digunakan.

http://enikusuma.wordpress.com/2010/09/24/pengujian-software/
elearning.amikom.ac.id/.../TESTING%20PERANGKAT%20LUNAK

»»  Baca Selanjutnya...