Senin, 01 Juli 2013

Jaminan Mutu Terhadap Sebuah Software

Uji Integrasi Pada Jaminan Mutu Software

Definisi
Menurut wikipedia :
Aktifitas pengujian software dalam mana modul-mudul software dikombinasikan dan diuji sebagai satu kesatuan.
Menurut Roger S. Pressman :
teknik sistematis untuk mekmbangun arsitektur software sambil pada saat yang sama menjalankan pengujian untuk menemukan error tekait dengan interfacing, komunikasi antar modul.

Tujuan uji integrasi
Untuk pemeriksaan fungsional, kinerja dan kehandalan dari struktur program yang dirancang.

Pendekatan Big Bang/Non-incremental
Dalam metode Non-incremental, kita mengintegrasikan semua modul pada suatu waktu. Metode ini, sementara umum, tidak dianjurkan karena membuat hampir tidak mungkin untuk menentukan penyebab kesalahan atau masalah.
¨Keuntungan: Sederhana
¨Kerugian:
  1. sulit untuk men-debug.
  2. tidak mudah untuk mengisolasi error
  3. tidak mudah untuk memvalidasi hasil test
  4. mustahil untuk membentuk sebuah sistem terintegrasi impossible
Pendekatan incremental
Pada metode Incremental, kita mengintegrasikan segmen kecil dari sistem perlahan-lahan untuk mudah mengisolasi masalah. Metode ini lebih disukai dan sangat dianjurkan karena memaksa pendekatan yang lebih sistematis untuk pengembangan perangkat lunak dan akan meningkatkan kehandalan.
Metode incremental dapat dilakukan dengan empat cara.
  1. Top-down
  2. Bottom-up
  3. Regression Testing
  4. Pengujian smoke
Integrasi Top-down
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.
pola depth-first
¨Dalam pola depth first, modul di integrasikan satu demi satu melalui struktur kendali utama. Diawali dari struktur kendali paling kritis, dilanjutkan pada kendali lain.
Pola breadth-first
¨Dalam pola bread first, seluruh komponen subordinat langsung di setiap level, menelusuri secara horizontal.

Integrasi Bottom-Up
Modul pada level terbawah diintegrasi  pertama, kemudian dengan menggerakkan keatas melalui struktur kontrol.

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:
  1. ¨Sebuah Contoh yang mewakili tes yang akan menguji semua fungsi software
  2. ¨Tes tambahan yang berfokus pada fungsi software yang tampak yang akan berubah akibat perubahan lain
  3. ¨Tes yang berfokus pada komponen software yang telah berubah Validation testing.
Pengujian smoke
¨Pemeriksaan keseluruhan sistem dari status  terahir ke status terahir berikutnya. Tidak perlu uji menyeluruh, tetapi sanggup menunjukan masalah penting.

Uji integrasi dalam OO
Software berorientasi objek tidak memiliki stuktur kendali hirarki, sehingga integrasi top down/ bottom up kurang berarti.
Pengujian Integritas dalam konteks berorientasi objek
Thread-based testing
  • mengintegrasikan sekumpulan kelas suatu input atau kejadian dalam  sistem.
  • Setiap thread diintegrasikan dan diuji secara individual.
  • Pengujian regresi diterapkan untuk memastikan tidak ada efek samping yang muncul.
Use-based testing
  • Pengujian terhadap setiap independent classes
  • Pengujian terhadap dependent classes sampai keseluruhan sistem terbentuk
Cluster testing
salah satu langkah dalam pengujian integritas, memeriksa kolaborasi antar kelas pada model CRC dan object- relationship.

Alpha test vs beta test
Apha test
Pengujian terhadap perangkat lunak yang siap untuk dipasarkan dibawah kendali programmer maupun developer
Beta test
Pengujian terhadap perangkat lunak yang siap untuk dipasarkan tanpa pengawasan  developer.

Uji Arsitektur Client Server
Level pengujian client server
  • Aplikasi client individual diuji dalam bentuk disconnected
  • Software client dan aplikasi server diuji tetapi jaringan tidak diperhatikan
  • Arsitektur client server lengkap
Pendekatan pengujian
  • Applicatio function test
  • Server test ¨Database test
  • Transaction test
  • Network communication tests
Uji Navigasi, Uji Intergritas untuk Aplikasi Web
  • Meyakinkan bahwa mekanisme penelususran web untuk setiap pengguna
  • Untuk memvalidasi bahwa setiap navigation semantic unit (NSU) dapat dicapai seluruh pengguna
Uji Sintaks Navigasi
  • Navigation links
  • Redirects
  • Bookmarks
  • Frame and Framesets
  • Site Maps
  • Internal search engines
Uji Semantik Navigasi
Sekumpulan atau informasi dan struktur navigasi terkait yang berkerja sama memenuhi sejumlah kebutuhan pengguna terkait
Pengujian
  • Tahap 1 perserta yang berbeda
  • Tahap 2 project stakeholder dan tim penguji independent

  • Tahap 3 pengguna non teknik
Berdasarkan definisi IEEE (1991), Jaminan Mutu Perangkat Lunak ( Software Quality Assurance ) adalah : 
  1. 1. Sebuah pola yang terencana dan sistematis dari semua tindakan yang diperlukan untuk menyediakan kepercayaan yang cukup bahwa sebuah produk atau barang sesuai dengan kebutuhan teknis yang telah disusun.
  2. 2. Sekumpulan aktifitas yang dirancang untuk mengevaluasi proses dimana sebuah produk dikembangkan atau diproduksi.
dari beberapa pengertian diatas, kita dapat menyimpulkan bahwa jaminan mutu perangkat lunak adalah sebuah aktifitas untuk menjaga kulitas perangkat lunak yang dikembangkan. Sejak kita memasuki jaman teknologi informasi, kita mulai mengenal berbagai macam produk yang bersifat “maya” (bukan ghoib lho ya…), yaitu sebuah produk yang bisa kita lihat tetapi tidak bisa kita sentuh selayaknya produk-produk nyata yang kita kenal selama ini (seperti mobil, motor, sendok, piring, dbs) 
Seperti yang disampaikan oleh Galin (2004), menjaga kualitas perangkat lunak memiliki tantangan tersendiri karena memiliki karakteristik yang berbeda dengan produk industri. Dari segi apa saja tantangannya ?
  1. 1. Kompleksitas (complexity).
    Produk Perangkat Lunak (Software Product) : Biasanya sebuah perangkat lunak memiliki tingkat kompleksitas yang tinggi karena didalamnya sangat mungkin terdapat ribuan fungsi operasi.
  2. 2. Visibilitas Produk (product visibility).
    Produk Perangkat Lunak dikatakan invisible product karena dalam mendeteksi produk yang cacat sangat tidak mungkin melalui penglihatan (by sight).
  3. 3. Sifat Pengembangan dan Proses Produksi (nature of development and production process).
    Kesempatan untuk mendeteksi produk yang cacat hanya mungkin dilakukan pada fase pengembangan. Berbeda dengan produk industri, dimana kesempatan untuk mendeteksi produk yang cacat dapat dilakukan di semua fase pengembangan dan produksi.
Sedikit petunjuk untuk membayangkan seberapa kompleks-kah sebuah perangkat lunak, coba teman-teman bayangkan sebuah gedung atau rumah, saya yakin, orang yang bukan ahli bangunan pun bisa menyebutkan jika gedung lebih kompleks dari rumah karena beberapa faktor yang terlihat. Terbayang ?? nah sekarang coba kalian bayangkan beberapa perangkat lunak yang teman-teman kenal, lalu sebutkan mengapa salah satu dari perangkat lunak yang baru saja disebutkan lebih kompleks dari yang lainnya ? 
Kembali lagi ke jaminan mutu perangkat lunak. Agar kita dapat membangun atau mengembangkan sebuah perangkat lunak yang berkualitas, kita harus memahami terlebih dahulu beberapa hal dibawah ini :
  1. 1. Apa itu perangkat lunak (software) ?
  2. 2. Apa itu software errors, faults dan failures ?
  3. 3. Apa itu software quality ? dan
  4. 4. Apa hubungannya software quality assurance dengan software engineering ?

  1. Referensi

    1. Galin, D. 2004. Software Quality Assurance from Theory to Implementation. England: Pearson Education Limited.
    2. Chemuturi, M. 2011. Mastering Software Quality Assurance Best Practice, Tools and Techniques for Software Developers. USA: J.Ross Publishing.
    3. Naik, K., and Triphathy., P. 2008. Software Testing and Quality Assurance Theory and Practice. Kanada: John Wiley & Sons.