Pages

Selasa, 17 Maret 2009

Pengujian_Software_Pada Mata kuliah "Testing & Implementasi"

Softcopy ini di ambil saat perkuliahan Testing dan Implementasi


Pengujian Software
Sebuah strategi, untuk pengujian software mengintegrasikan metode desain kasus pengujian software kedalam langkah-langkah terencanaan yang tersusun rapi sehingga menghasilkan konstruksi software yang sukses. Yang terpenting adalah strategi pengujian software menyediakan jalan bagi software developer, organisasi penjamin kualitas dan pelanggan karena jalan ini mendeskripsikan langkah-langkah yang akan dipakai sebagai bagian dari pengujian yaitu ketika langkah-langkah ini direncanakan dan kemudian dijalankan lalu dapat diketahui berapa banyak usaha, waktu dan sumber daya yang akan diperlukan. Oleh karena itu, strategi pengujian manapun harus menyertakan perencanaan pengujian, desain kasus pengujian, pelaksanaan pengujian dan koleksi serta evaluasi data resultan.

Strategi pengujian software haruslah cukup fleksibel untuk mempromosikan kreatifitas dan customisasi yang diperlukan bagi pengujian semua system software berskala besar. Pada saat yang sama, strategi haruslah cukup kaku untuk mempromosikan perencanaan yang layak dan tracking manajemen sebagai jalannya proyek.

Shooman[SHO83] :
Dalam berbagai bentuk, pengujian atau testing adalah proses yang bersifat individu dan banyaknya jenis perbedaan dari variasi pengujian sebanyak perbedaan dalam pendekatan pengembangan. Dalam beberapa tahun, pertahanan kita menghadapi error dalam pemrograman hanyalah desain yang hati-hati dan kecerdasan alami dari programmer. Sekarang kita berada pada masa dimana teknik desain modern [dan review dari teknik formal] membantu kita untuk menurunkan jumlah dari error yang terinisialisasi dan tidak dapat dipisahkan dari kode. Dengan cara yang sama, metode pengujian yang berbeda diawali untuk mengikat error kedalam beberapa pendekatan dan filosofi yang berbeda.
Pendekatan dan filosofi inilah yang akan disebut strategi.
Pendekatan strategi dalam pengujian software
Pengujian atau testing adalah aktifitas yang dapat direncanakan kedepannya dan penyelenggaraannya secara sistematis. Karena alasan ini untuk 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 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
Sebuah strategi untuk pengujian software harus mengakomodasi pengujian tingkat rendah yang diperlukan untuk memverifikasi segmentasi source code yang kecil apakah telah dengan benar diimplementasikan sebaik pengujian pada pengujian tingkat tinggi yang memvalidasi fungsi system utama dalam menghadapi kebutuhan pelanggan. Sebuah strategi haruslah menyediakan petunjuk bagi praktisi dan manajer. Karena langkah-langkah dalam strategi pengujian terjadi pada saat tekanan deadline meningkat, kemajuan harus terukur dan permasalahan harus diketahui secepat mungkin.

Verifikasi dan Validasi
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.

Boehm [BOE81]:
Verifikasi: “Apakah kita membangun produk dengan baik?”
Validasi: “Apakah kita membangun produk yang baik?”
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.
Mendapatkan Kualitas Software

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

Organisasi Pengujian Software
Obyektif pengujian: tidak menutup error(defects) pada software, termasuk error pada:
- kebutuhan dari analisa kebutuhan
- desain terdokumentasi dalam spesifikasi desain
- coding (implementasi)
- sumber sistem dan lingkungan sistem
- masalah-masalah hardware dan interface-nya terhadap software

Pengujian Software dapat dipertimbangkan secara psikologi dihancurkan(destructive).
Siapa yang terlibat dalam pengujian software?
- developer
- tester (test engineer) di ITG
- SQA group

Organisasi pengujian software:
- Individual tester dalam sebuah tim pengembang
- Independent test group (ITG)
Sebuah Strategi Pengujian Software

Diagram diatas menunjukkan dua langkah yaitu proses rekayasa perangkat lunak(software engineering) dan proses strategi pengujian perangkat lunak. Untuk proses software engineering :
— Software Engineering mendefinisikan peran dari software dan mengarahkan ke software requirement analysis, sebagai pusat kriteria informasi, fungsi, perilaku, performa, batasan dan validasi dari software yang dibangun.
— Bergerak kedalam sepanjang spiral, hingga design dan terakhir proses koding (code).
Untuk proses strategi pengujian perangkat lunak :
— Dimulai dari Unit Testing yang dikonsentrasikan pada setiap unit software seperti yang diterapkan dalam source code
— Kemudian bergerak keluar hingga ke integration testing dimana fokus pada desain dan konstruksi pada arsitektur software.
— Kemudian bergerak lagi hingga ke validation testing dimana kebutuhan dibentuk sebagai bagian dari software requirement analysis yang divalidasi berdasarkan software yang dibentuk.
— Terakhir pada system testing dimana software dan element system lainnya dites secara keseluruhan


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, memiliki bentuk
Fungsi diatas dapat disederhanakan menjadi
Keterangan
f(t)=jumlah kegagalan secara kumulatif yang diharapkan terjadi ketika software telah diuji dalam waktu tertentu, t.
l0 = inisial intensitas kegagalan software(kegagalan per unit dalam satuan waktu) pada awal testing
p = reduksi secara eksponensial pada intensitas kegagalan atas error yang tidak terdeteksi dan perbaikan yang dibuat
Grafik intensitas kegagalan sebagai fungsi dari waktu eksekusi

Argumen Tom Gilb
Yang 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 diantaranya
ü Integrasi resource dan/atau integrasi lingkungan
Penguji integration: pengembang dan/atau test engineer.
Strategi Pengujian Integrasi
Pendekatan:
a) integrasi non-incremental
b) 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:
a) Top-down
b) bottom-up
c) Sandwich
- menggunakan top-down untuk modul upper-level dan bottom-up untuk modul low-level
Integrasi Top-down
Ide:
- 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
Ide:
- 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
Penguji validasi : uji engineer pada orang-orang ITG atau SQA.
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 4 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
Area fokus adalah:
— Fungsi dan performance sistem
— Reliability(ketersediaan) dan recoverability (kemampuan menutup/recovery test) sistem
— Instalasi (uji instalasi) sistem
— Perilaku pada kondisi tertentu (uji tekanan dan load) sistem
— Operasi user (acceptance test/alpha test/) sistem
— Integrasi dan kolaborasi hardware dan software
— Integrasi software eksternal dan sistem
Penguji sistem : uji engineer pada orang-orang ITG atau SQA.
Saat sebuah sistem akan dikeluarkan sebagai sebuah produk software, suatu proses pengujian yang disebut pengujian beta sering digunakan.
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.
(Gambar berikut)

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??????
Kriteria pengujian, lingkup pengujian, pengujian adequate.
Pengujian software lainnya:
Pengujian GUI
Pengujian Software Berorientasi Object
Pengujian Komponen dan Pengujian Berbasis Komponen Software
Pengujian Fitur spesifik Domain
Pengujian Sistem Berbasis Web

Tidak ada komentar: