Enikusuma's Blog

Pengujian Software

Posted on: 24 September 2010

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 dan semuanya memiliki karakteristik umum:

  • 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

Pengujian Software adalah satu elemen dari sebuah topik broader yang sering diartikan sebagai Verifikasi dan Validasi (V&V)

  • Verifikasi : menunjuk ke kumpulan aktifitas yang memastikan bahwa software mengimplementasi sebuah fungsi spesifik.
  • Validasi : menunjuk ke sebuah kumpulan berbeda dari aktivitas yang memastikan bahwa software yang telah dibangun dapat di-trace terhadap kebutuhan customer.

Defenisi V&V meliputi banyak aktifitas SQA, termasuk review teknis formal, kualitas dan audit konfigurasi monitor performance, tipe yang berbeda dari pengujian software study feasibility dan simulasi.

  • Metode software engineering menyediakan dasar dari mutu yang mana yang akan dipakai.
  • Metode Analysis, design and Construction berupa tindakan untuk meningkatkan kualitas dengan menyediakan teknik yang seragam dan hasil yang sesuai dengan keinginan.
  • Metode Formal Technical Reviews menolong untuk memastikan kualitas kerja produk merupakan hasil konsekuensi dari setiap langkah software engineering.
  • Metode Measurement diberlakukan pada setiap elemen dari konfigurasi software
  • Metode Standards and Procedures membantu untuk memastikan keseragaman dan formalitas dari SQA untuk menguatkan dasar “filosofi kualitas total”
  • MetodeTesting menyediakan cara terakhir dari tingkat kualitas mana yang dapat dicapai dan dengan praktis dapat mengetahui letak error.

Langkah-langkah Pengujian Software

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.

Kriteria dari Testing yang telah selesai

  • 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.

Tom Gilb menyatakan bahwa prosedur berikut harus digunakan jika ingin mengimplementasikan software testing strategy yang sukses

  1. Menetapkan seluruh kebutuhan produk software dalam perhitungan sebelum memulai testing
  2. Status obyek testing harus jelas
  3. Memahami pengguna software dan mengembangkan sebuah profil untuk setiap kategori user
  4. Mengembangkan rencana testing yang menekankan pada “rapid cycle testing”
  5. Membangun software yang sempurna yang didesain untuk mengetes dirinya sendiri
  6. Menggunakan tinjauan ulang yang formal sebagai filter sebelum pengujian
  7. Melakukan tinjauan ulang secara formal untuk menilai strategi tes dan kasus tes itu sendiri
  8. Mengembangkan pendekatan peningkatan yang berkelanjutan untuk proses testing

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, meliputi:

  • 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

Test Integrasi : 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

Pendekatan:

  1. integrasi non-incremental
  2. integrasi incremental

Integrasi non-incremental :

Big Band, menggabungkan (atau mengintegrasi) semua bagian dalam sekali.

  • 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:

Mengintegrasi sistem tahap demi tahap(atau bagian demi bagian) dalam sebuah pesanan yang didesain dengan baik. Tiga metode penting:

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

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. Proses integrasi(lima langkah) :

  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

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

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

Uji sistem: 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

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

Test planning adalah sebuah dari suatu test manager. Sebuah test plan adalah output dari perencanaan.

Debugging

  • 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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: