Software testing

22
PROSES TESTING Testing dan Implementasi Sistem Dosen : Mei P. Kurniawan Kelompok 3 Yulia Muharomah 09.12.4156 Zeptifa Wardani 09.12.4132 Ferry Dwi Laksono 09.12.4162 Dwi Sundari 09.12.4125 Tias Arini 09.12.4131

Transcript of Software testing

Page 1: Software testing

PROSES TESTING

Testing dan Implementasi Sistem

Dosen : Mei P. Kurniawan

Kelompok 3

Yulia Muharomah 09.12.4156

Zeptifa Wardani 09.12.4132

Ferry Dwi Laksono 09.12.4162

Dwi Sundari 09.12.4125

Tias Arini 09.12.4131

Sekolah Tinggi Ilmu Manajemen dan Komputer AMIKOM Yogyakarta

2012

Page 2: Software testing

PROSES TESTING

A. Kesalahan Pengujian

1. Fault (Kekeliruan)

Fault merupakan kesalahan pada sebuah baris kode atau lebih. Kesalahan

bisa saja tidak tampak pada program dengan indikasi perangkat lunak

bekerja sebagaimaa harapan pengembang. Bahkan mungkin untuk waktu

yang lama, sebuah baris program bisa saja tidak tersentuh oleh eksekusi

sehingga tidak tampak sebagai kekeliruan.

2. Eror (Kesalahan)

Hal yang akan muncul pada saat terjadi kekeliruan adalah kesalahan. Bila

kekeliruan dalam baris dieksekusi, perangkat lunak akan melakukan

operasi yang tidak sesuai dengan keinginan pengembang sehingga

menghasilkan respons yang salah.

3. Failure (Kegagalan)

Dalam beberapa kasus, kekeliruan akan muncul sebagai kegagalan.

Kegagalan perangkat lunak merupakan sederetan ketidakmampuan

perangkat lunak untuk menjalankan fungsinya. Misalnya kesalahan

keluaran perangkat lunak, proses eksekusi yang tidak normal, waktu

eksekusi dan kapasitas penyimpanan yang membengkak, dan lain-lain.

Kemudian failure masih dibagi lagi, yaitu :

- Requirement faillure

bug yang dilaporkan berhubungan dengan kegagalan sistem untuk

memenuhi kebutuhan.

- Non requirement failure

Page 3: Software testing

bug yang dilaporkan tidak memenuhi kebutuhan sistem, tetapi secara

signifikan mempengaruhi kualitas sistem dengan cara yang tidak dapat

diterima.

- Waiver failure

bug yang dilaporkan mendeskripsikan kegagalan, tetapi developer menuntut

dan menganggap hal tersebut tidak signifikan mempengaruhi kualitas dan user

experience.

- External failure

bug yang dilaporkan menunjukkan kegagalan karena faktor eksternal atau di

luar kontrol dari sistem yang diuji.

- Test failure

developer meyakini bahwa pengujian yang dikembalikan adalah invalid error.

B. Proses Pengujian Awal

Pengujian kadang-kadang disalah pahami sebagai kegiatan after the fact,

dilakukan setelah pemrograman sebuah produk dilakukan. Namun, pengujian harus

dilakukan setiap tahapan pengembangan produk. Penetapan pengujian data harus

diperoleh, kebenaran dan konsistesinya harus dipantau selama proses pengembangan.

Jika kita membagi siklus hidup pengembangan perangkat lunak menjadi

“Analisis Kebutuhan”,”Desain”,”Pemrograman/Konstruksi” dan “Operasi dan

Pemeliharaan” maka pengujian harus dilakukan di setiap tahapan pengembangan

tersebut jika pengujian menemukan kesalahan dan pernyataan masalah atau desain

bisa mendatangkan biaya terlalu tinggi. Tidak hanya kesalahan utama yang harus

diperbaiki, tetapi seluruh struktur dibangun diatasnya juga harus diubah. Oleh karena

itu, pengujian tidak boleh terisolasi sebagai kegiatan inspeksi, tetapi harus melibatkan

seluruh SDLC untuk menghasilkan produk yang berkualitas.

Page 4: Software testing

C. Proses Pengujian Akhir

Proses pengujian akhir sulit untuk ditentukan karena kebanyakan aplikasi

perankat lunak modern sangat kompleks dan berjalan sebagai lingkungan

interdependen dan pengujian lengkap pun tidak pernah bisa dilakukan. Kapan

menghentikan pengujian? Menjadi salah satu pertanyaan yang paling sulit bagi

perekayasa penguji. Faktor uum dalam memutuskan untuk berhenti adalah :

1. Tenggat waktu (deadline) yaitu tenggat rilis dan pengujian

2. Kasus-kasus pengujian diselesaikan dengan presentase tertentu yang

dilewatkan

3. Biaya pengujian habis

4. Pemenuhan kode/fungsionalitas/persyaratan menjangkau titik yang telah

ditentukan

5. Tingkat pada bug yang dapat ditemukan terlalu kecil

6. Beta atau pengujian alfa telah berakhir periodenya

7. Risiko dalam proyek dapat diterima dibawah batas.

Pada kenyataannya, keputusan menghentikan pengujian berdasarkan pada

tingkat risiko yang dapat diterima oleh manajemen. Sebagai catatan, pengujian adalah

proses yang tidak pernah berakhir dan tidak pernah mengaggap bahwa pengujian

100% telah selesai, kita hanya dapat meminimalkan risiko pegiriman produk kepada

klien dengan X pengujian yang sudah diselesaikan. Risiko dapat diukur oleh aalisis

risiko, tetapi durasi kecil/anggaran rendah/ randahnya sumber daya proyek, dapat

disimpulkan dengan :

1. Mengukur pemenuhan pengujian

Page 5: Software testing

2. Jumlah siklus pengujia

3. Jumlah bug prioritas tinggi

D. Automatic Testing

Otomatisasi testing adalah alat bantu yang digunakan untuk mempermudah proses

dan dokumentasi tes, mengefisienkan eksekusi dari tes, dan mempermudah

pengukuran pada tes. Sehingga diharapkan dapat memberikan peningkatan yang

cukup besar dalam manajemen proses, meminimalkan keterlibatan manusia, dan

replikasi pekerjaan. Otomatisasi testing adalah area yang paling tinggi tingkat

perkembangannya dalam industri testing.

Alasan untuk melakukan otomatisasi proses software adalah untuk meningkatkan

kualitas dan produktifitas kerja. Organisasi membutuhkan suatu strategi otomatisasi

untuk menuntun dalam menggunakan metode-metode dan teknik-teknik baru. Hal ini

membutuhkan pengetahuan tentang apa yang dibutuhkan, pengetahuan terhadap apa

yang fisibel, dan pengembangan suatu rencana yang telah ditetapkan.

Alasan dibutuhkannya otomatisasi testing Mengapa otomatisasi testing

dibutuhkan? Dari uraian singkat di atas, terdapat beberapa alasan pentingnya

melakukan otomatisasi testing, adalah sebagai berikut:

1. Testing selalu diharapkan pada masalah jadwal yang ketat2. Testing sering diulang

- ulang banyak sekali

3. Testing berkemungkinan untuk sijalankan 24 jam sehari, atau tidak pada jam kerja.

4. Testing dapat dilakukan dengan lebih cepat dan akurat, dimana ketidaksonsistenan

manusai dapat diminimalkan.

5. Dokumentasi testing dapat dilakukan secara konsisten, sehingga dapat diaudit

secara penuh dan berkala.

Page 6: Software testing

6. Script testing dapat menjadi aset yang dapat digunakan kembali untuk testing yang

sama pada proyek testing yang lain.

7. Mempercepat dalam peninjauan kembali terhadap testing itu sendiri

8. Dapat meningkatkan proses

Dikarenakan ujicoba software menghabiskan sekitar 40% dari total usaha yang

diperlukan untuk sebuah proyek pengembangan software, maka tools tools yang

dapat mengurangi waktu uji sangat dibutuhkan. Dengan melihat manfaat

potensialnya, maka dibentuklah generasi pertama dari automated test tools. Miller

mendeskripsikannya menjadi beberapa kategori, diantaranya :

1. Static Analyzer,

program sistem analisis ini mendukung untuk pembuktian dari pernyataan tanpa

bukti statis, perintah-perintah yang lemah dalam struktur program dan format.

2. Code Auditors,

sebuah filter dengan kegunaan khusus yang digunakan untuk memeriksa kualitas

software untuk memastikan bahwa software tersebut telah memenuhi standars

pengkodean minimum

3. Assertion Processors,

sistem preprocessor/postprocessor ini digunakan untuk memberitahukan programmer

dengan menyediakan klaim, yang disebut assertion, yaitu mengenai suatu perilaku

program yang benar-benar ditemukan saat pelaksanaan program riil.

4. Test File Generators,

merupakan pembangun processor, dan dipenuhi dengan definisi awal nilai, file

masukan yang serupa untuk program yang sedang diujikan.

Page 7: Software testing

5. Test Data Generators

merupakan sistem analisis otomatis yang membantu pengguna aplikasi dalam

memilih data uji yang menyebabkan program berperilaku khusus.

6. Test Verifiers,

tool ini mengukur cakupan uji internal, terkadang berhubungan dengan uji struktur

kontrol dari objek uji, dan melaporkan cakupan nilai untuk para ahli jaminan

kualitas

7. Test Harnesses.

Tools ini mendukung pemrosesan uji coba dengan (1) meng-instal program kandidat

dalam lingkungan uji, (2) berikan input data, dan (3) simulasikan dengan

menggunakan stubs perilaku dari modul-modul subordinat.

8. Output Comparators,

tool ini membuatnya sangat memungkinkan untuk membantingkan sekumpulan

output dari suatu program dengan sekumpulan output dari proses sebelumnya(yang

telah diarsipkan) untuk menentukan perbedaan diantara keduanya.

Dunn menambahkan tool otomatis diatas, dantaranya :

1. Symbolic Execution System,

tool ini penampilkan ujicoba program dengan menggunakan input aljabar, dari pada

nilai data numerik,. Software yang diuji akan menguji satu class data uji dari pada

satu kasus uji spesifik. Output yang dihasilkan dalam bentuk aljabar dan dapat

dibandingkan dengan output yang diharapkan yang telah ditulis dalam bentuk aljabar.

Page 8: Software testing

2. Environment Simulator,

merupakan tool untuk sistem berbasis komputer khusus, yang mampu untuk menguji

model lingkungan eksternal dari suatu software realtme, dan mensimulasikan kondisi

operasi sesungguhnya secara dinamis.

3. Data Flow Analyzer,

tool ini melacak aliran data yang melewati sistem, dan berusaha untuk

menemukandata reference yang belum didefinisikan , peng-indeks-an yang salah, dan

kesalahan data terkait lainnya.

Manual Testing VS Automated Testing

Test Step Manual

Testing

Autimated

Testing

Precent

Improve

Test plan development 32 40 -25%

Test case development 262 117 55%

Test execution 466 23 95%

Test result analyses 117 58 50%

Defect tracking 117 23 80%

Report creation 96 16 83%

Total hours

1090 277 75%

Page 9: Software testing

E. Kualitas Software

Kualitas Software didefinisikan sebagai kesesuaian yang diharapkan pada

semua perangkat lunak yang dibangun berkaitan dengan fungsi perangkat

lunak yang diutamakan dan untuk kerja perangkat lunak, standar

pembangunan perangkat lunak yang terdokumentasi dan karakteristik yang

ditunjukkan oleh perangkat lunak. Definisi ini menekankan pada tiga hal,

yaitu :

1. Kebutuhan perangkat lunak adalah dasar ukuran kualitas perangkat lunak,

jika perangkat lunak tidak sesuai dengan kebutuhan yang ditentukan,

kualitasnya pun berkurang.

2. Jika menggunakan sebuah standar untuk pembangunan perangkat lunak,

maka perangkat lunak dianggap kurang berkualitas jika tidak memenuhi

standar tersebut.

3. Sering kali ada kualitas yang secara langsung diutarakan (tersurat) seperti

kemudahan penggunaan dan pemeliharaan yang baik. Kualitas perangkat

lunak dipertanyakan jika tidak memenuhi kebutuhan ini.

Sedangkan definisi kualitas menurut The Internasional Standarts Organization

(ISO) adalah totalitas fitur-fitur dan karakteristik-karakteristik dari produk

atau layanan yang berpengaruh pada kemampuan untuk memenuhi kebutuhan

tertentu atau kebutuhan yang tersirat.

Faktor kualitas operasi produk

1. Correcnes

Memperluas sebuah program yang memenuhi spesifikasi dan tujuan pengguna.

Page 10: Software testing

2. Portability.

Kemudahan pemindahan software ke platform lain. Portability pada software, sangat

tergantung kepada teknologi yang digunakan. Pemilihan teknologi didasari oleh

pertimbangan yang matang berdasarkan hasil analisis terhadap calon pengguna. Jika

calon pengguna menggunakan platform yang heterogen, maka portability adalah hal

yang sangat penting. Namun portability akan berkurang prioritasnya ketika calon

pengguna menggunakan spesifikasi teknologi yang seragam.

3. Reliability.

Software dapat diandalkan untuk melakukan apa yang seharusnya dilakukan.

Reliability adalah atribut yang tidak dapat ditawar. Hal ini dapat dicapai dengan

melakukan proses analisis kebutuhan calon pengguna dengan baik. Dengan

menganalisa masalah calon pengguna, lalu menyimpulkan solusi dari maka engineer

dapat lebih menjamin reliability dari suatu software. Selain dari sisi analisis

kebutuhan, pengujian sistem dengan mekanisme yang baik juga dapat meningkatkan

reliability software. Pengujian sistem adalah fase untuk memastikan bahwa sistem

sudah dapat berjalan sesuai dengan yang diharapkan oleh pengembang perangkat

lunak.

4. Efficiency.

Software dapat melakukan pekerjaan dengan waktu kerja dan penggunaan

resource yang ekonomis. Efficiency adalah atribut yang seringkali tidak diperhatikan.

Umumnya hal tersebut terjadi, karena tim pengembang fokus kepada spesifikasi

fungsional sistem. Ketika spesifikasi fungsional sudah terpenuhi, maka modul

software dianggap telah mencapai kualitas yang baik. Efficiency seringkali tidak

terasa dibutuhkan pada aplikasi sistem informasi yang tidak melakukan proses yang

rumit. Namun untuk proses yang rumit, efficiency menjadi hal yang sangat penting

Page 11: Software testing

untuk diperhatikan. Efficiency dapat dicapai dengan disain yang baik dan code

review terhadap hasil implementasi disain yang dilakukan. Selain itu, pada saat

pengujian (testing), perlu dilakukan stress testing, suatu proses pengujian yang

menekankan pada kemampuan software pada saat melakukan proses pada keadaan

yang tersulit (contohnya adalah dikarenakan oleh data yang sangat banyak).

5. Maintainabily

Software mudah dipelihara (maintain) dan diubah.

6. Testability.

Software mudah dievaluasi dengan melakukan pengujian (testing).  Testability akan

berpengaruh terhadap reliability. Engineer dapat menyimpulkan bahwa suatu

software sudah cukup reliable untuk direlease adalah berdasarkan hasil pengujian.

Karena itu, testability adalah atribut yang sangat penting dalam pengembagan

software.

7. Integrity

Memperluas akses untuk perangkat lunak atau data tanpa diotorisasi dan tidak

dikontrol

8. Fleksibelity

Software mampu untuk beradaptasi dan bekerja dengan efektif sesuai dengan apa

yang dibutuhkan user.

9. Useability

Page 12: Software testing

Software mudah dipahami sehingga memudahkan proses pemeliharaan. Usaha yang

dibutuhkan untuk mempelajari, mengoperasikan, mempersiapkan masukan, dan

menerjemahkan keluaran

10. Interoperability

Kemampuan untuk membedakan system dan mengorganisasikan unuk bekerjasama

(inter operate). Dan interfacenya sangat compatible untuk bekerja dengan system

lainnya diwaktu ini ataupun dikemudianhari, tanpa implementasi.

11. Reuseability

Segmen dari sourcecode dapat digunakan kembali untuk menambahkan fungsi baru.

Pengukuran Perangkat Lunak

Pertanyaan pertama yang muncul ketika membahas pengukuran kualitas perangkat lunak, adalah apa yang sebenarnya mau kita ukur.

Kualitas perangkat lunak dapat dilihat dari sudut pandang proses pengembangan perangkat lunak (process) dan hasil produk yang dihasilkan (product).

Dan penilaian ini tentu berorientasi akhir ke bagaimana suatu perangkat lunak dapat dikembangkan sesuai dengan yang diharapkan oleh pengguna. Hal ini berangkat dari pengertian kualitas (quality) menurut IEEE Standard Glossary of Software Engineering Technology [3] yang dikatakan sebagai:

The degree to which a system, component, or process meets customer or user needs or expectation.

Dari sudut pandang produk, pengukuran kualitas perangkat lunak dapat menggunakan standard dari ISO 9126 atau best practice yang dikembangkan para praktisi dan pengembang perangkat lunak.

Taksonomi McCall adalah best practice yang cukup terkenal dan diterima banyak pihak, ditulis oleh J.A. McCall  dalam technical report yang dipublikasikan tahun 1977 [1].

Page 13: Software testing

Di lain pihak, dari sudut pandang proses, standard ISO 9001 dapat digunakan untuk mengukur kualitas perangkat lunak. Dan diskusi tentang ini berkembang dengan munculnya tema kajian tentang CMM (The Capability Maturity Model) yang dikembangkan di Software Engineering Institute, Carnegie Mellon University serta beberapa kajian lain seperti SPICE (Software Process Improvement and Capability dEtermination) dan BOOTSTRAP. CMM, SPICE dan BOOTSTRAP mengukur kualitas perangkat lunak dari seberapa matang proses pengembangannya.

Tulisan ini akan mencoba fokus ke bagaimana mengukur perangkat lunak dilihat dari

sudut pandang produk.

Parameter dan metode pengukuran

When you can measure what you are speaking about, and express it in numbers, you know something about it. But when you can not measure it, when you can not express it in numbers, your knowledge is of a meagre and unsatisfactory kind.(Lord Kelvin)

Pendekatan engineering menginginkan bahwa kualitas perangkat lunak ini dapat diukur secara kuantitatif, dalam bentuk angka-angka yang mudah dipahami oleh manusia. Untuk itu perlu ditentukan parameter atau atribut pengukuran. Menurut taksonomi McCall, atribut tersusun secara hirarkis, dimana level atas (high-level attribute) disebut faktor (factor), dan level bawah (low-level attribute) disebut dengan kriteria (criteria). Faktor menunjukkan atribut kualitas produk dilihat dari sudut pandang pengguna. Sedangkan kriteria adalah parameter kualitas produk dilihat dari sudut pandang perangkat lunaknya sendiri. Faktor dan kriteria ini memiliki hubungan sebab akibat (cause-effect) . Tabel 1 menunjukkan daftar lengkap faktor dan kriteria dalam kualitas perangkat lunak menurut McCall.

Tabel 1: Faktor dan Kriteria dalam Kualitas Perangkat Lunak

Page 14: Software testing

Kualitas software diukur dengan metode penjumlahan dari keseluruhan kriteria dalam suatu faktor sesuai dengan bobot (weight) yang telah ditetapkan. Rumus pengukuran yang digunakan adalah:

Fa = w1c1 + w2c2 + … + wncn

Dimana:

Fa adalah nilai total dari faktor awi adalah bobot untuk kriteria ici adalah nilai untuk kriteria i

Kemudian tahapan yang harus kita tempuh dalam pengukuran adalah sebagai berikut:

Tahap 1: Tentukan kriteria yang digunakan untuk mengukur suatu faktorTahap 2: Tentukan bobot (w) dari setiap kriteria (biasanya 0 <= w <= 1)Tahap 3: Tentukan skala dari nilai kriteria (misalnya, 0 <= nilai kriteria <= 10)Tahap 4: Berikan nilai pada tiap kriteriaTahap 5: Hitung nilai total dengan rumus Fa = w1c1 + w2c2 + … + wncn

CONTOH PENGUKURAN PERANGKAT LUNAK

Untuk mempermudah pemahaman, akan diberikan sebuah contoh pengukuran kualitas perangkat lunak dari faktor usabilitas (usability). Yang akan diukur adalah dua buah perangkat lunak yang memiliki fungsi untuk mengkontrol peralatan elektronik (electronic device). Perangkat lunak yang pertama bernama TukangKontrol, sedangkan kedua bernama Caktrol. Contoh dan hasil pengukuran dapat dilihat pada Table 2 dan 3.

Page 15: Software testing

Tabel 2: Contoh Pengukuran Usabilitas Dua Perangkat Lunak

Tabel 3: Hasil Pengukuran Usabilitas Dua Perangkat Lunak

Dari penghitungan yang ada di Tabel 3, dapat kita simpulkan bahwa dari faktor usabilitas, kualitas dari perangkat lunak bernama TukangKontrol lebih baik daripada Caktrol. Nilai total TukangKontrol untuk faktor usabilitas adalah 16.8, sedangkan Caktrol adalah 10.2 (dari maksimum total nilai 20).

Page 16: Software testing

DAFTAR PUSTAKA

S Presman, Roger.2002.Rekayasa Perangkat Lunak Pendekatan Praktisi.Penerbit

Andi:Yogyakarta

Simarmata, Janner.2010.Rekayasa Perangkat Lunak.Penerbit Andi:Yogyakarta