Entri Populer

Rabu, 18 November 2015

TEKNIK PENGUJIAN PERANGKAT LUNAK


kata pengantar
Puji dan syukur kehadirat Tuhan Yang Maha Kuasa atas segala rahmat yang diberikan-Nya sehingga tugas paper yang berjudul “TEKNIK PENGUJIAN PERANGKAT LUNAK” ini dapat penulis selesaikan. paper ini penulis buat sebagai kewajiban untuk memenuhi tugas dari matakuliah Testing dan Implementasi Sistem Informasi..

Tak lupa pula penulis sampaikan banyak terima kasih kepada semua pihak yang turut berpartisipasi dalam proses penyusunan tugas makalah ini, karena penulis sadar sebagai makhluk sosial penulis tidak bisa berbuat banyak tanpa ada interaksi dengan orang lain dan tanpa adanya bimbingan, serta rahmat dan karunia dari -Nya.
Akhirnya walaupun  telah berusaha dengan secermat mungkin. Namun sebagai manusia biasa yang tak mungkin luput dari salah dan lupa. Untuk itu penulis mengharapkan koreksi dan sarannya semoga kita selalu berada dalam lindungan-Nya.






                                                                      Padang,  Oktober 2015



                                                                                  Penulis

BAB 1

PENDAHULUAN

Dalam dunia teknologi sekarang pengembangan dalam bidang informatikan telah mengalami perkembangan yang sangat pesat. Dengan perkembangan ini, dalam bidang informatika tidak hanya menghasilkan hanya dalam pengembangan program perangkat lunak saja, melainkan pengambangan dalam bidang suatu permodelan yang bersifat komplek.
Dalam pembuatan sebuah perangkat lunak yang haruslah memiliki Teknik analisa kebutuhan dan teknik permodelan yang baik, supaya terwujudnya suatu perangkat lunak yang baik. Dengan hal tersebut maka perlulah suatu pengenalan mengenai permodelan dalam suatu pembangunan suatu Perangkat Lunak (Software). Terdapat teknik yang digunaka dalam pengujian perangkat lunak
Berdasarkan penjelasan yang terdapat pada latar belakang masalah diatas, kami dihadapkan untuk menganalisa mengenai teknik dalam pengujian perangkat lunak
Memenuhi tugas Matakuliah Sistem Informasi Manajemen pada Semester 4
Selain itu agar Mahasiswa mampu :
a.       Menjelaskan konsep dalam pengujian perangkat lunak
b.      Menjelaskan  beberapa indikator adanya permasalahan, peluang  dan kesempatan yang dapat diraih jika memerlukan pengembangan pengujian perangka lunak


BAB 11
PEMBAHASAN
1.      GAMBARAN PENGUJIAN
Siapakah yang melakukan pengujian ? Hal ini tergantung pada proses dan para pemangku kepentingan terkait proyek. Dalam industri TI, perusahaan besar memiliki tim yang bertanggung jawab untuk mengevaluasi perangkat lunak yang dikembangkan dalam konteks persyaratan yang diberikan. Selain itu, pengembang juga melakukan pengujian yang disebut Unit Testing. Dalam banyak kasus, profesional berikut yang terlibat dalam pengujian sistem dalam kapasitas masing-masing ;
·         Software Tester
·         Software Developer
·         Pimpinan Proyek / Manajer
·         Pengguna Akhir
1.1.Kapan memulai pengujian
Pada awalnya pengujian mengurangi biaya, waktu untuk mengolah dan kesalahan perangkat lunak bebas yang dikirimkan ke klien. Namun di Software Development Life Cycle (SDLC) pengujian dapat dimulai dari fase Persyaratan Mengumpulkan dan berlangsung sampai penyebaran perangkat lunak. Namun hal ini juga tergantung pada model pembangunan yang sedang digunakan. Misalnya dalam Air Model jatuh pengujian formal dilakukan dalam fase Testing, tetapi dalam model inkremental, pengujian dilakukan pada akhir setiap kenaikan / iterasi dan pada akhirnya seluruh aplikasi yang diuji.
1.2.Kapan Berhenti Pengujian
Berbeda saat untuk memulai pengujian sangat sulit untuk menentukan kapan harus berhenti pengujian, seperti pengujian adalah proses yang tidak pernah berakhir dan tidak ada yang dapat mengatakan bahwa perangkat lunak adalah 100% dapat diuji. Berikut ini adalah aspek yang harus dipertimbangkan untuk menghentikan pengujian:


·         Pengujian Batas Waktu.
·         Penyempurnaan pelaksanaan uji kasus.
·         Penyelesaian cakupan Fungsional dan kode ke suatu titik tertentu.
·         Tingkat Bug turun di bawah tingkat tertentu dan tidak ada bug prioritas tinggi diidentifikasi.
·         Keputusan Manajemen.
1.3.Perbedaan antara Verifikasi & Validation
Verifikasi :
·         Apakah Anda membangun dengan benar?
·         Pastikan bahwa sistem perangkat lunak memenuhi semua fungsi tersebut.
·         Verifikasi berlangsung pertama dan termasuk pemeriksaan untuk dokumentasi, kode dll
·         Dilakukan oleh pengembang
·         Memiliki kegiatan statis karena mencakup review, walkthrough, dan inspeksi untuk memastikan perangkat lunak yang benar atau tidak.
·         Ini adalah proses yang obyektif dan tidak ada keputusan subjektif harus diperlukan untuk memverifikasi Perangkat Lunak.
Validasi :
·         Apakah Anda membangun hal yang benar?
·         Pastikan bahwa fungsi memenuhi perilaku yang diinginkan.
·         Validasi terjadi setelah verifikasi dan terutama melibatkan pengecekan produk secara keseluruhan.
·         Dilakukan oleh penguji.
·         Memiliki kegiatan dinamis karena mencakup mengeksekusi perangkat lunak terhadap persyaratan.
·         Ini adalah proses subjektif dan melibatkan keputusan subjektif pada seberapa baik Software bekerja.



1.4.Perbedaan antara Testing dan Debugging
·         Testing: Ini melibatkan identifikasi bug / error / cacat dalam perangkat lunak tanpa pengoreksian. Biasanya dengan latar belakang Quality Assurance terlibat dalam identifikasi bug. Pengujian dilakukan dalam tahap pengujian.
·         Debugging: Ini terlibat dalam mengidentifikasi, mengisolasi dan memperbaiki masalah / bug. Debugging adalah bagian dari kotak putih atau Unit Testing. Debugging dapat dilakukan dalam tahap pengembangan saat melakukan Unit Testing atau fase sementara memperbaiki bug yang dilaporkan. Pengujian Mitos Pengujian.


2.      TEKNIK PENGUJIAN PERANGKAT LUNAK
Pengujian perangkat lunak adalah elemen kritis dari jaminan kualitas perangkat lunak dan merepresentasikan kajian pokok dari spesifikasi, desain dan pengkodean. Pengujian menyajikan anomali yang menarik bagi perekayasa perangkat lunak. Pada proses perangkat lunak, perekayasa pertama-tama berusaha membangun perangkat lunak dari konsep abstrak ke implementasi yang dapat dilihat, baru dilakukan pengujian. Perekayasa menciptakan sederetan test case yang dimaksudkan untuk “membongkar” perangkat lunak yang sudah dibangun. Pada dasarnya, pengujian merupakan satu langkah dalam proses rekayasa perangkat lunak yang dapat dianggap (paling tidak secara psikologis) sebagai hal yang destruktif daripada konstruktif.
2.1.Sasaran-sasaran pengujian
Beberapa sasaran pengujian diantaranya :
a.       Pengujian adalah proses eksekusi suatu program dengan maksud menemukan kesalahan
b.      Test case yang baik adalah test case yang memiliki probabilitas tinggi untuk menemukan kesalahan yang belum pernah ditemukan sebelumnya
c.       Pengujian yang sukses adalah pengujian yang mengungkap semua kesalahan yang belum pernah ditemukan sebelumnya.
Sasaran tersebut mengimplikasikan adanya perubahan titik pandang yang dramatis. Sasaran itu berlawanan dengan pandangan yang biasanya dipegang yang menyatakan bahwa pengujian yang berhasil adalah pengujian yang tidak ada kesalahan yang ditemukan. Bila pengujian dilakukan secara sukses (sesuai dengan sasaran tersebut), maka akan ditemukan kesalahan di dalam perangkat lunak. Sebagai keuntungan sekunder, pengujian menunjukkan bahwa fungsi perangkat lunak bekerja sesuai dengan spesifikasi dan bahwa persyaratan kinerja telah dipenuhi.

2.2.Prinsip Pengujian
Prinsip Pengujian meliputi :
a.       Semua pengujian harus dapat ditelusuri sampai ke persyaratan pelanggan. Sebagaimana telah kita ketahui, sasaran pengujian perangkat lunak adalah untuk mengungkapkan kesalahan. Hal ini memenuhi kriteria bahwa cacat yang paling fatal (dari titik pandang pelanggan) adalah cacat yang menyebabkan program gagal memenuhi persyaratannya.
b.      Pengujian harus direncanakan lama sebelum pengujian itu mulai. Perencanaan pengjuian dapat dimulai segera setelah model pernyaratan dilengkapi. Definisi detail mengeani test case dapat dimulai segera setelah model desain diteguhkan. Dengan demikian, semua pengujian dapat direncanakan dan dirancang sebelum semua kode dibangkitkan.
c.       Prinsip Pareto berlaku untuk pengujian perangkat lunak. Secara singkat prinsip Pareto mengimplikasikan bahwa 80 persen dari semua kesalahan yang ditemukan selama pengujian sepertinya akan dapat ditelusuri sampai 20 persen dari semua modul program. Masalahnya,bagaimana mengisolasi modul yang dicurigai dan mengujinya dengan teliti. Pengujian harus mulai “dari yang kecil” dan berkembang ke pengujian “yang besar”.Pengujian pertama yang direncanakan dan dieksekusi biasanya berfokus pada modul program individual. Selagi pengujian berlangsung maju, pengujian mengubah fokus dalam usaha menemukan kesalahan pada cluster modul yang terintegrasi dan akhirnya pada sistem secara keseluruhan.
d.      Pengujian yang mendalam tidak mungkin. Jumlah jalur permutasi untuk program yang berukuran menengah-pun sangat besar. Karean itulah tidak mungkin untuk mengeksekusi setiap kombinasi jalus skema pengujian. Tetapi dimungkinkan untuk secara tepat mencakup logika program dan memastikan bahwa semua kondisi dalam desai prosedural telah diuji.
e.       Untuk menjadi paling efektif, pengujian harus dilakukan oleh pihak ketiga yang independent.Yang dimaksud dengan kata “yang paling efektif” adalah pengujian yang memiliki probabilitas tertinggi di dalam menemukan kesalahan (sasaran utama pengujian). Karena perekayasa perangkat lunak yang membuat sistem tersebut bukanlah orang yang paling tepat untuk melakukan semua pengujian bagi perangkat lunak.
2.3.Testabilitas
Testabilitas perangkat lunak adalah seberapa mudah sebuah program komputer dapat diuji.Karena pengujian sangat sulit, perlu diketahui apa yang dapat dilakukan untuk membuatnya menjadi mudah. Kadang-kadang pemrogram beresedia melakukan hal-hal yang akan membantu proses pengujian dan checklist mengenai masalah-masalah desai yang mudah, fitur dan lain sebagainya yang berguna dalam bernegosiasi dengan mereka.
Checklist berikut memberikan serangkaian karakteristik yang membawa kepada perangkat lunak yang dapat diuji :
a.       Operabilitas. “Semakin baik dia bekerja, semakin efisien dia dapat diuji”
·         Sistem memiliki beberapa bug (bug menambah analisis dan biaya pelaporan ke proses pengujian).
·         Tidak ada bug yang memblok eksekusi pengujian
·         Produk berkembang di dalam tahapan fungsional (memungkinkan pengembangan dan pengujian secara simultan)
b.      Observabilitas. “Apa yang Anda lihat adalah apa yang Anda uji”
·         Output yang berbeda dikeluarkan oleh masing-masing input
·         Tahap dan variabel sistem dapat dilihat atau diantrikan selama eksekusi.
·         Sistem dan variabel yang lalu dapat dilihat atau diantrikan (misal : log transaksi) secara otomatis
·         Kode sumber dapat diakses
c.       Kontrolabilitas. “Semakin baik kita dapat mengontrol perangkat lunak, semakin banyak pengujian yang dapat diotomatisasi dan dioptimalkan”
·         Semua output yang mungkin dapat dimnculkan melalui beberapa kombinasi input
·         Semua kode dapat dieksekusi melalui berbagai kombinasi input
·         Keadaan dan varibale perangkat lunak dan perangkat keras dapat dikontrol secara langsung oleh perekayasa pengujian
·         Format input dan output konsistem dan terstruktur
·          Pengujian dapat dispesifikasi, dioptimasi dan direproduksi dengan baik
d.      Dekomposabilitas. “Dengan mengontrol ruang lingkup pengujian, kita dapat dengan lebih cepat mengisolasi masalah dan melakuakn pengujian kembali secara lebih halus”
·         Sistem perangkat luank dibangun dari modul-modul independen
·         Modul-modul perangkat lunak dapat diuji secara independen
e.       Dekomposabilitas. “Dengan mengontrol ruang lingkup pengujian, kita dapat dengan lebih cepat mengisolasi masalah dan melakuakn pengujian kembali secara lebih halus”
·         Sistem perangkat luank dibangun dari modul-modul independen
·         Modul-modul perangkat lunak dapat diuji secara independen Kesederhanaan struktural (seperti, arsitektur dimodularisasi untuk membatasi penyebaran kesalahan)
·          Kesederhanaan kode (seperti, standar pengkodean diadopsi demi kemduahan
·        inspeksi dan pemeliharaan)

f.       Stabilitas. “Semakin sedikti perubahan, semakin sedikit ganggunan dalam pengujian”
·         Pengujian ke perangkat lunak tidak sering
·         Perubahan ke perangkat lunak terkontrol
·         Perubahan ke perangkat lunak memvalidasi pengujian yang sudah ada
·         Kegagalan perangkat lunak dapat diperbaiki dengan baik
g.      Kemampuan untuk dapat dipahami. “Semakin banyak informasi yang kita miliki, semakin halus pengujian yang akan dilakukan”
Desain dipahami dengan baik
·         Ketergantungan di antara komponen internal, eksternal dan yang dipakai bersama dipahami dengan baik.
·         Perubahan ke desai dikomunikasikan
·          Dokumentasi teknik dapat diakses dengan cepat
·         Dokumentasi teknis diorganisasikan dengan baik
·         Dokumentasi teknis spesifik dan detail
·         Dokumentasi teknis akurat
2.4.Desain Test Case
Lebih dari dua dekade terakhir telah berkembang berbagai metode desai test case untuk perangkat lunak. Metode-metode tersebut memebrikan kepada pengembang sebuah pendekatan yang sistematik ke pengujian. Yang lebih penting, metode itu memberikan mekanisme yang dapat membantu memastikan kelengkapan pengujian dan memberikan kemungkinan tertinggi untuk mengungkap kesalahan pada perangkat lunak. Semua produk yang direkayasa dapat diuji dengan satu atau dua cara : (
a.       denganmengetahui fungsi yang ditentukan dimana produk dirancang untuk melakukannya, pengujian dapat dilakukan untuk memperlihatkan bahwa masing-masing fungsi beroperasi sepenuhnya, pada waktu yang sama mencari kesalahan pada setiap fungsi.

b.      mengetahui kerja internal suatu produk, maka pengujian dapat dilakukan untuk memastikan bahwa “semua roda gigi berhubungan”, yaitu operasi internal bekerja sesuai dnegan spesifikasi dan semua komponen ineternal telah diamati dengan baik.Pendekatan pengujian pertama disebut pengujian black box dan yang kedua disebut white box.
2.5.Pengujian White-Box
Pengujian white box, kadang-kadang disebut pengujian glass box, adalah metode desaintest case yang menggunakan struktur kontrol desain prosedural untuk memperoleh test case. Dengan menggunakan metode pengujian white box, perekayasa sistem dapat melakukan test case yang :
a.       memberikan jaminan bahwa semua jalur independen pada suatu modal telah digunakan,paling tidak satu kali.
b.       Menggunakan semua keputusan logis pada sisi true dan false
c.        Mengeksekusi semua loop pada batasan mereka dan baas operasional mereka
d.       Menggunakan struktur data internal untuk menjamin validitasnya
2.5.1.      Pengujian Basis-Path
Pengujian basis path adalah teknik pengujian white box yang diusulkan pertama kali oleh Tom McCabe. Metode basis ini memungkinkan desainer test case mengukur kompleksitas logis dari desai prosedural dan menggunakannya sebagai pedoman untuk menetapkan basis set dari jalur eksekusi. Test case yang dilakukan untuk menggunakan basis set tersebut dijamin menggunakan setiap statment di dalam program paling tidak sekali selama pengujian.
a.       Notasi Diagram Alir
Diagram Alir atau grafik program menggambarkan aliran control logika.
b.      Kompleksitas Siklomatis
Kompleksitas Siklomatis adalah metric perangkat lunak yang memberikan pengukuran kuantitaif terhadap kompleksitas logis suatu program.Kompleksitas Siklomatis menentukan jumlah jalur independen dalam basis set suatu program dan memberikan batas atas bagi jumlah pengujian yang harus dilakukan untuk memastikan bahwa semua statemen telah dieksekusi sedikitnya satu kali. Jalur independen adalah jalur yang melalui program yang mengintroduksi sedikitnya saturangkaian statemen proses baru atau suatu kondisi baru.
c.       Melakukan Test Case
·         Dengan menggunakan desain atau kode sebagai dasar, gambarkan sebuah grafik alir yang sesuai.
·         Tentukan kompleksitas siklomatis dari grafik alir resultan.
·         Tentukan sebuah basis set dari jalur independen secara linier.
·         Siapkan test case yang akan memaksa adanya eksekusi setiap basis set.
d.      Matrik Grafis
·         Matrik grafis adalah matriks bujur sangkar yang ukurannya sama dengan jumlah simpul pada grafik alir.
·         Masingmasing baris dan kolom sesuai dengan yang diidentifikasi kan, dan entri matriks sesuai dengan edge di antara simpul.
2.5.2.      Pengujian struktural kontrol
·         Pengujian Kondisi
·         Pengujian Aliran Data
·         Pengujian Loop
2.6.Pengujian black box
·         Pengujian blackbox berfokus pada persyaratan fungsional pe rangkat lunak.
·         Disebut juga pengujian behavioral atau pengujian partisi.
·          Pengujian blackbox memungkinkan perekayasa perangkat lunak mendapatkan serangkaian input yang sepenuhnya menggunakan semua persyaratan fungsional untuk suatu program.
·         Pengujian blackbox berusaha menemukan :
-          Fungsi fungsi yang tidak benar atau hilang
-           Kesalahan interface
-          Kesalahan dalam struktur data atau akses database eksternal.
-          Kesalahan kinerja
-          Inisialisasi dan kesalahan terminasi.
·         Dengan mengaplikasikan teknik blackbox maka kita menarik serangkaian test case yang memenuhi criteria beirkut :
-          Test case yang mengurangi, dengan harga lebih dari satu, jumlah test case tambahan yang harus di desain untuk mencapai pengujian yang dapat dipertanggungjawabkan.\
-          Test case yang member tahu kita sesuatu mengenai kehadiran atau ketidakhadiran kelas kesalahan, daripada member tahu kesalahan yang berhubungan hanyadengan pengujian spesifik.
Tidak seperti pengujian white box yang dilakukan pada awal proses pengujian, pengujian black box cenderung diaplikasikan selama tahap akhir pengujian. Karena pengujianblack box memperhatikan struktur kontrol, maka perhatian berfokus pada domain informasi. Pengujian didesain untuk menjawab pertanyaan-pertanyaan berikut :



·         Bagaimana validitas fungsional diuji ?
·         Kelas input apa yang akan membuat test cse menjadi baik ?
·          Apakah sistem sangat sensitif terhadap harga input tertentu ?
·         Bagaimana batasan dari suatu data diisolasi ?
·          Kecepatan data apa dan volume data apa yang dapat ditolerir oleh sistem ?
·         Apa pengaruh kombinasi tertentu dari data terdahap operasi sistem ?
2.6.1.      Metode Pengujian Graph-based
Langkah pertama pada pengujian black box adalah “memahami objek” yang dimodelkan didalam perangkat lunak dan hubungan yang akan menghubungkan objek tersebut. Setelah hal itu dilakukan maka langkah selanjutnya adalah menentukan sederaetan pengujian yang membuktikan bahwa “semua objek memiliki hubungan yang diharapakan satu dengan yang lainnya”. Dengan kata lain, pengujian perangkat lunak dimulai dnegan membuat grafik dari objek-objek yang penting dan hubungan objek-objek serta kemudian memikirkan sedereetan pengujian yang akan mencakup
grafik tersebut sehingga masing-masing objek dan hubungan digunakan dan kesalahan ditemukan.Untuk melakuka langkah-langkah tersebut, perekayasa perangkat lunak memulianya denganmembuat suatu grafik, sekkumpulan simpul yangmerepresentasikan objek; link yang merepresentasikan hubungan antar objek; node weight yang menggambarkan properti dari suatu simpul (misal : nilai data tertentu atau tingkah laku keadaan) dan links weight yang menggambarkan beberapa karakteristik suatu link.
direpresentasikan sebagai lingkaran yang dihubungkan oleh link yang memakai sejumlah bentukyang berbeda. Link terarah (direpresentasikan oleh sebuah anak panah) menunjukkan bahwa hubungan bergerak hanya dalam satu arah. Link dua arah yang disebut link simetris, mengimplikasikan bahwa hubungan tersebut berlaku dalam dua arah. Link paralel digunakan pada saat sejumlah hubungan yang berbeda dibangun di antara simpul-simpul grafik.
2.6.2.      Partisi Ekivalensi
Partisi ekivalensi adalah metode pengujian black-box yangmembagai domain input dari sautu program ke dalam kelas data dari mana test case dapat dialkukan. Test case yang ideal mengungkap kelas kesalahan (misal, pemrosesan yang tidak benar terhadap semua data karakter) yang akan memerlukan banyak kasus untuk dieksekusi sebelum kesalaha umum diamati.
Partisi ekivalensi berusaha menentukan sebuah test case yang mengungkap kelas-kelas kesalahan, sehingga mengurangi jumlah total test case yang harus dikembangkan.Desain test case untuk partisi ekivalensi didasarkan pada evaluasi terhdap kelas ekivalensi untuk suatu kondisi input. Dengan menggunakan konsep yan telah dijelaskan pada bagian sebelumnya, bila serangkaian objek dapat di-link oleh hubungan yan gsimetris, transitif dan refleksif, maka ada kelas ekivalensi. Kelas ekivalensi merepresentasikan serangkaian keadaan valid atau invalid untuk kondisi input. Secara khusus, suatu kondisi input dapat berupa harga numeris, suatu rentang harga atau serangkaian haraga terkait atau sebuah kondisi Boolean. Kelas ekivalensi dapat ditentukan sesuai pedoman berikut ini :
a.       Bila kondisi input menentukan suatu range, maka satu kelas ekivalensi valid dan dua yang invalid ditentukan
b.       Bila suatu kondisi input membutuhkan suatu harga khusus, maka satu kelas ekivalensi vaild dan uda yang invalid ditentukan
c.       Bila suatu kondisi menentukan anggota suatu himpunan, maka satu kelas ekivalensi valid atau dua yang invalid ditentukan.
d.      Bila suatu kondisi input adalah Boolean, maka satu kelas valid dan satu yang invalid ditentukan.

2.6.3.      Analisis Nilai Batas
Karena alasan yang tidak jelas, jumlah kesalahan yang lebih besar terjadi pada batas domain input daripada di pusat. Karena itulah analisis nilai batas/boundary value analysis (BVA)telah dikembangkan sebgai teknik pengujian. Analisis nilai batas memunculkan pemilihan test case yang menggunakan nilai batas.
Analisis nilai batas adalah teknik desain proses yang melengkapi partisi ekivalensi. Daripada memilih sembarang elemen kelas ekivalensi, BVA lebih mengarah kepada pemilih test case pada “edge” dari kelas. Daripada hanya berfokus pada kondisi input, BVA melakukan test case dari domain output.
Dalam banyak hal, pedoman untuk BVA sama dengan yang diberikan untuk partisi ekivalensi:
a.       Bila suatu kondisi input mengkhususkan suatu range dibatasi oleh nilai a dan b,maka test case harus didesain dengan nilai a dan b, persis di atas dan di bawah a dan b secara berkesesuaian.
b.      Bila suatu kondisi input mengkhususkan sejumlah nilai, maka test case harus dikembangkan dengan menggunakan jumlah minimum dan maksimum. Nilai tepat di atas dan di bawah minimum dan maksimum juga diuji.
c.        Pedoman 1 dan 2 diaplikasikan ke kondisi output. Contohnya anggap bahwa suhu vs.tabel tekanan diperlukan sebagai output dari program analisis rekayasa. Test case harus didesain untuk menciptakan laporan output yang menghasilkan jumlah minimum (dan maksimum) entri tabel yang diijinkan.
d.      Bila struktur data program telah memesan batasan (misal, suatu array memiliki suatu batas yang ditentukan dari 100 entri), pastikan untuk mendesain test case yang menggunakan struktur data pada batasannya.

2.6.4.      Pengujian Perbandingan
Ada banyak situasi (seperti avionik pesawat udara) dimana reliabilitas perangkat lunaknya sangat kritis. Dalam aplikasi semacam itu, perangkat lunak dan perangkat keras redundan sering digunakan untuk meminimalkan kemungkinan kesalahan. Pada saat perangkat lunak redundan dikembangkan, tim rekayasa perangkat lunak yang terpisah mengembangkan versi-versi independen dari suatu aplikasi dengan menggunakan spesifikasi yang sama. Dalam situasi semacam itu, setiap versi dapat diuji dengan data uji yang sama untuk memastikan bahwa semua versi memberikan output yang identik. Kemudian semua versi dieksekusi secara paralel dnegan perbandingan real time hasil untuk memastikan konsistensi.
Dengan pelajaran mengenai sistem redundan, para peneliti mengusulkan agar versi perangkat lunak independen dikembangkanbagi aplikasi kritis, bahkan bila hanya sebuah versi tunggal saja yang akan digunakan pada sistem berbasis komputer yang disampaikan. Versi independen membentuk basis teknik pengujian black box yang disebut pengujian perbandingan atau pengujian back to back.
Bila implementasi bertingkat dari spesifikasi yang sama telah dihasilkan, maka test case yang didesain dengan menggunakan teknik black box yang lain (misal partisi ekivalensi) diberikan sebagai input untuk masing-masing versi perangkat lunak tersebut. Bila output dari masing-masing versi sama, maka diasumsikan bahwa implementasinya benar. Bila outputnya berbeda, maka masingmasing dari aplikasi itu diperiksa untuk menentukan cacat pada suatu versi atau agar perbedaan itudapat lebih jelas. Pada sebagian besar kasus, perbandingan output dapat dilakukan dengan suatu peranti yang diotomatisasi.
Pengujian perbandingan tidaklah mudah. Bila spesifikasi dari mana semua fungsi telah dikembangkan mengandung kesalahan, maka semua versi kemungkinan besar merefleksikan kesalahan. Lagi pula jika masing-masing versi independen identik tetapi tidak benar, maka pengujian kondisi akan gagal mendeteksi kesalahan.


2.7.Pengujian Untuk Aplikasi dan Lingkungan Khusus
Pada saat perangkat lunak komputer menjadi semakin kompleks,maka kebutuhan akan pendekatan pengujian yang khusus juga makin berkembanga. Metode pengujian black-box dan white box yang dibicarakan sebelumnya dapat diaplikasikan pada semua lingkungan, arsitektur dan aplikasi, tetapi kadang-kadang dalam pengujian diperlukan pedoman dan pendekatan yang unik. Pada bagian ini akan dibahas pedoman pengujian bagi lingkungan arsitektur dan aplikasi khusus yang umumnya ditemui oleh para perekayasa perangkat lunak.
2.7.1.      Pengujian GUI
Graphical User Interfaces (GUI) menyajikan tantangan yang menarik bagi para perekayasa. Karena komponen reusable berfungsi sebagai bagian dari lingkungan pengembangan GUI, pembuatan interface pemakai telah menjadi hemat waktu dan lebi teliti. Pada saat yang sama, kompleksitas GUI telah berkembanga, menimbulkan kesulitan yang lebih besar di dalam desain dan eksekusi test case.
Karena GUI modern memiliki bentuk dan cita rasa yang sama maka dapat dilakukan sederetan pengujian standar. Pertanyaan berikut dapat berfungsi sebagai panduan untuk serangkaian pengujian generik untuk GUI :
a.      Untuk windows :
·         Apakah window akan membuka secara tepat berdasarkan tipe yang sesuai atau perintahberbasis menu ?
·         Dapatkah window di-resize, digerakkan atau digulung ?
·         Apakah semua isi data yang diisikan pada window dapat dituju dengan tepat dengansebuah mouse, function keys, anak panah penunjuk dan keyboard ?
·         Apakah window dengan cepat muncul kembali bila dia ditindih dan kemudian dipanggil lagi ?



·         Apakah semua fungsi yang berhubungan dengan window dapat diperoleh bila diperlukan ?
·         Apakah semua fungsi yang berhubungan dengan window operasional ?
·         Apakah semua menu pull down, tool bar,scroll bar, kotak dialog, tombol ikon dan kontrol yang laina dapat diperoleh dan dengan tepat ditampilkan untu window tersebut ?
·         Pada saat window bertingkat ditampilkan, apakah nama window tersebut direpresentasikan secara tepat ?
·         Apakah window yang aktif disorot secara tepat ?
·         Bila multitasking digunakan, apakah semua window diperbarui pada waktu yang sesuai ?
·         Apakah pemilihan mouse bertingkat atau tidak benar di dalam window menyebabkan efek samping yang tidak diharapkan ?
·         Apkaha audio prompt dan atau color prompt ada di dala window atau sebagai konsekuensi dari operasi windoe disaajikan menurut spesifikasi ?
·          Apakah window akan menutup secara tepat ?
b.      Untuk menu pull down dan operasi mouse :
·         Apakah menu bar yang sesuai ditampilkan di dalam konteks yang sesuai ?
·         Apakah menu bar aplikasi menampilkan fitur-fitur yang terkait dengan sistem (misal tampilan jam ) ?
·         Apakah operasi menu pull down bekerja secara tepat ?
·         Apakah menu breakway, palette dan tool bar bekerja secara tepat ?
·         Apakah semua fungsi menu dan subfungsi pulldown didaftar secara tepat ?
·         Apakah semua fungsi menu dapat dituju secara tepat oleh mouse ?
·         teks alternatif ?
·         Apakah fungsi menu disorot berdasarkan konteks operasi ang sedang berlangsung di dalam suatu window ?
·         Apakah semua menu function bekerja seperti diiklankan ?
·         Apakah nama-nama menu funvtion bersifat self explanatory ?
c.       Entri Data :
·         Apakah entri data alfanumeris dipantulkan dan diinput ke sistem ?
·         Apakah mode grafik dari entri (misal, slide bar) bekerja dengan baik ?
·         Apakah data invalid dikenali dengan baik ?
·         Apakah pesan input data sangat pintar ?
2.7.2.      Pengujian Arsitektur Client Server
Arsitektur client/server (C/S) menghadirkan tantangan yang berarti bagi para pengujiperangkat lunakan. Sifat terdistribusi dari lingkungan client/server, masalah kinerja yang berhubungan dengan pemrosesan transaksi, kehadiran potensial dari sejumlah platform perangkat keras yang berbeda, kompleksitas komunikasi jaringan,kebutuahn aka layanan client multipel dari suatu database terpusat dan persyaratan koordinasi yang dibebabkan pada server, semua secara bersama-sama membuat pengujian terhadap arsitektur C/S dan perangkat lunak yang ada didalamnya menjadi jauh lebih sulit daripada pengujian aplikasi yang berdiri sendiri. Kenyataannya studi industri terakhir menunjukkan pertambahan berarti di dalam waktu pengujian dan biaya ketika lingkungan C/S dikembangkan

2.7.3.      Pengujian Dokumentasi dan Fasilitas Help
Istilah “pengujianperangkat lunak” memunculkan citra terhdapa sejumlah besar test caseyang disiapkan untuk menggunakan program komputer dan data yang dimanipulasi oleh program.Dengan melihat kembali definisi perangkat lunak yang disajikan di awal, penting untuk dicatat bahwa pengujian harus berkembang ke elemen ketiga dari konfigurasi perangkat lunak, yaitu“dokumentasi”.Kesalahan dala dokumentasi dapat menghancurkan penerimaan program seperti halnya kesalahan pada data atu kode sumber. Tidak ada yang lebih membuat frustasi dibanding mengikuti tuntuan pemakai secara tepat dan mendapatkan hasil atau tingkah laku yang tidak sesuai dengan yang diprediksi oleh dokumen.
Karena itulah pengujian dokumentasi harus menjadi suatu bagian yang berarti dari setiap rencana pengujian perangkat lunak.Pengujian dokumentasi dapat didekati dalam dua fase. Fase pertama, kajian teknis formal yang menguji kejelasan editorial dokumen. Fase kedua, live test, menggunakan dokumentasi dalam kaitannya dengan penggunaan program aktual. Live test untuk dokumentasi dapat didekati dengan menggunaka teknik yang analog dneganberbagai metode pengujian black box. Pengujian graph-based ddapat digunakan untuk menggambarkan penggunaan program tersebut; partisi ekivalensi dan analisis nilai batas dapat digunakan untuk menentukan berbagai kelas input dan interaksi yang sesuai. Kegunaan program
kemudian ditelusuri pada seluruh dokumen :
a.       Apakah dokumen tersebut secara akurat menggambarkan bagimana menyelesaikan masingmasing mode penggunaan ?
b.      Apakah deskripsi dari masing-masing urutan interaksi akurat ?
c.       Apakah contoh-contoh akurat ?
2.7.4.      Pengujian Sistem Real-Time
Sifat asinkron dan tergantung waktu yang ada pada banyak aplikasi real time menambahkan elemen baru yang sulit dan potensial untuk bauran pengujian-waktu. Tidak hanya desainer teset case yang harus memeprtimbangkan test case balck box dan white box tetapi juga penanganan kejadian (yaitu pemrosesan interupsi), timing data dan paralelisme tugas-tugas (proses) yang menangani data. Pada banyak situasi, data pengujian yang diberikan pada saat sebuah sistem real
time ada dalam satu keadaan akan menghasilkan pemrosesan yang baik, sementara data yang sama yang diberikan pada saat sistem berada dalam keadaan yang berbeda dapat menyebabkan kesalahan.
Hubungan erat perangkat lunak real time dan lingkungan perangkat kerasnya dapat juga menyebabkan pengaruh kegagalan perangkat keras pada pemrosesasn perangkat lunak. Kesalahan semacam itu dapat sangat sulit untuk bersimulasi secara realistis. Metode desain test case yang komprehensif untuks istem real time harus berkembang. Tetapi strategi emapat langkah berikut dapat diusulkan :
a.      Pengujian tugas. Langkah pertama dalam pengujian perangkat lunak real time adalah menguji masing-masing tugas secara independen, yaitu pengujian white box dan black box yang didesain dan dieksekusi secara independen bagi masing-masing tugas. Masing-masing tugas dieksekusi secara independen selama pengujian ni. Pengujian tugas mengungkap kesalahan di dalam logika dan fungsi, tetapi tidak akan mengungkap timing atau kesalahan tingkah laku.
b.      Pengujian tingkah laku. Dengan menggunakan model yang idciptakan dengan peranti CASE, dimungkinkan untuk mensimulasi tingkah laku sistem real time dan menguji tingkah lakunya sebagai konsekuensi dari event eksternal. Aktivitas analisis ini dapat berfungsi sebgai dasar bagi desain test case yang dilakukan pada saat perangkat lunak real time dibangun


c.       Pengujian antar tugas. Setelah kesalahan-keaslahan pada tugas individual dan pada perilaku sistem diisolasi, maka pengujian beralih kepada kesalahan yang berkaitan dengan waktu. Tugas-tugas asinkronous yang dikenali untuk saling berkomunikasi diuji dnegna tingkat data yang berbeda dan pemrosesan dipanggil untuk menentukan apakah kesalahan sinkronisasi antar tugas akan terjadi. Sebagai tambahan, tugas-tugas yang berkomuniaksi melalui antrian pesan atau penyimpanan data, diuji untuk menemukan kesalahan dalam ukuran area penyimpanan data tersebut.
d.      Pengujian sistem. Perangkat lunak dan perangkat keras diintegrasi dan suatu rentang penuh dari pengujian sistem dilakukan di dalam usahan mengungkap keslahan pada interface perangkat lunak/perangkat keras.
Sebagian besar sitem real time memproses interupsi, karena itu pengujian penanganan
terhadap kejadian-kejadian. Boolean merupakan hal yang penting. Dengan menggunakan diagram keadaan transisi dan spesifikasi kontrol, penguji mengembangkan daftar semua interupsi yang mungkin dan pemroesan yang terjadi sebagai konsekuensi dari interupsi. Kemudain pengujian didesain untuk menilai karakteristik sistem berikut ini :
a.        Apakah priortias interupsi ditetapkan dan ditangani secara tepat ?
b.       Apakah pemrosesan untuk masing-masing interupsi ditangani dengan tepat ?
c.        Apakah kinerja (misal waktu pemrosesasn) dari masing-masing prosedur penangan interupsi sesuai dengan persyaratan ) ?
d.      Apakah volume interupsi yang tinggi yang terjadi pada waktu kritis menimbulkan masalah di dalam fungsi atau kinerja ?






3.      JENIS-JENIS PENGUJIAN PERANGKAT LUNAK
3.1.Pengujian manual
Jenis ini termasuk pengujian Software secara manual yaitu tanpa menggunakan alat otomatis atau script apapun. Dalam jenis ini tester mengambil alih peran pengguna akhir dan menguji Software untuk mengidentifikasi perilaku un-yang diharapkan atau bug. Ada tahapan yang berbeda untuk pengujian manual seperti unit testing, pengujian Integrasi, pengujian sistem dan User Acceptance testing.
Penguji menggunakan tes rencana, uji kasus atau skenario tes untuk menguji Software untuk memastikan kelengkapan pengujian. Pengujian manual juga mencakup pengujian eksplorasi sebagai penguji, dan mengeksplorasi perangkat lunak untuk mengidentifikasi kesalahan di dalamnya.
3.2.Pengujian otomatisasi
Proses ini melibatkan otomatisasi dari proses manual. Otomasi Pengujian digunakan untuk menjalankan kembali skenario pengujian yang dilakukan secara manual, dengan cepat dan berulang-ulang.
Terlepas dari pengujian regresi, pengujian Otomasi juga digunakan untuk menguji aplikasi dari beban, kinerja dan titik tekanan pandang. Hal ini meningkatkan cakupan tes; meningkatkan akurasi, menghemat waktu dan uang dibandingkan dengan pengujian manual.

4.      TINGKATAN PENGUJIAN PERANGKAT LUNAK
4.1.Pengujian Fungsional
               Aplikasi ini adalah jenis pengujian black box yang didasarkan pada spesifikasi perangkat lunak yang akan diuji. Aplikasi ini diuji dengan memberikan masukan dan kemudian hasilnya diperiksa dengan fungsi yang dimaksud. Pengujian fungsional perangkat lunak yang dilakukan pada sistem, lengkap terpadu dan digunakan untuk mengevaluasi kepatuhan sistem dengan persyaratan yang ditentukan.
Pada pengujian fungsional terdapat beberapa jenis pengujian yaitu :
4.1.1.      Pengujian Satuan (Unit Testing)
               Jenis pengujian dilakukan oleh para pengembang sebelum setup diserahkan kepada tim pengujian secara resmi pada saat melaksanakan uji kasus. Unit pengujian dilakukan oleh para pengembang masing-masing unit individu dari kode sumber tempat yang ditentukan. Para pengembang menggunakan data uji yang terpisah dari data uji tim kualitas jaminan.
4.1.2.      Pengujian Integrasi/Gabungan (Intregation Testing)
               Pengujian gabungan merupakan bagian dari aplikasi untuk menentukan apakah mereka berfungsi dengan benar secara bersamaan. Ada dua metode dalam melakukan Pengujian Integrasi yaitu pengujian Integrasi bottom-up dan pengujian Integrasi Top Down.
4.1.3.      Pengujian Sistem (System Testing)
               Ini adalah tingkat pengujian berikutnya dan tes sistem secara keseluruhan. Setelah semua komponen yang terintegrasi, aplikasi secara keseluruhan diuji ketat untuk dilihat apakah dapat memenuhi Standar Mutu atau tidak. Jenis pengujian dilakukan oleh tim pengujian khusus.
4.1.4.      Pengujian Regresi
               Tujuan dari pengujian regresi adalah untuk memastikan bahwa perubahan, seperti memperbaiki bug tidak menimbulkan kesalahan lain yang sering ditemukan dalam aplikasi.


4.1.5.      Pengujian Penerimaan (Accepance Testing)
               Hal ini bisa dibilang tipe yangterpenting karena sebagian besar pengujian dilakukan oleh Tim Jaminan Kualitas yang akan mengukur apakah aplikasi memenuhi spesifikasi yang diinginkan dan memenuhi kebutuhan klien. Tim QA akan memiliki satu set skenario dan Uji Kasus yang akan digunakan untuk menguji aplikasi.

4.2.PENGUJIAN NON FUNGSIONAL
               Bagian ini didasarkan pada pengujian aplikasi dari atribut non-fungsional. Pengujian non-fungsional melibatkan pengujian Perangkat Lunak dari persyaratan yang non-fungsional baik seperti kinerja, keamanan, user interface, dll.
Ada beberapa jenis pengujian pada pengujian non fungsional :
4.2.1.      Pengujian Kinerja
               Hal ini sebagian besar digunakan untuk mengidentifikasi adanya kemacetan atau masalah kinerja pada saat menemukan bug dalam perangkat lunak.
4.2.2.      Pengujian Usability
               Bagian ini mencakup konsep yang berbeda. Ini adalah teknik black box dan digunakan untuk mengidentifikasi kesalahan dan perbaikan dalam Perangkat Lunak dengan memperhatikan pengguna melalui penggunaan dan operasi mereka.
4.2.3.      Pengujian keamanan
               Pengujian Keamanan melibatkan pengujian Software untuk mengidentifikasi setiap kelemahan kesenjangan iklan dari keamanan dan kerentanan sudut pandang.
4.2.4.      Pengujian Portabilitas
               Pengujian ini meliputi pengujian Software yang harus kembali dan bisa digunakan dan dipindahkan dari Software lain.



5.      PENGUJIAN DOKUMENTASI (DOCUMENTATION TESTING)
          Pengujian dokumentasi melibatkan dokumentasi artefak yang harus dikembangkan sebelum atau selama pengujian Software. Pengujian ini membantu software dalam memperkirakan upaya pengujian yang diperlukan, cakupan tes, pelacakan persyaratantracing dll.
          Bagian ini mencakup deskripsi beberapa artefak yang umum digunakan yang berkaitan dengan pengujian Software seperti:
a.       Rencana Uji
b.      Uji Skenario
c.       Kasus Uji
d.      Matrix Laca

BAB 111
KESIMPULAN
               Pengujian perangkat lunak adalah elemen kritis dari jaminan kualitas perangkat lunak dan merepresentasikan kajian pokok dari spesifikasi, desain dan pengkodean.metode dalam pengujian perangkat lunak menggunkan 2 metode yaitu: metode white box dan mmetode black box.
Jenis pengujian perangkat lunak ada 2 cara yaitu: pengujian manual dan pengujian otomatisasi.


            DAFTAR PUSTAKA
file.upi.edu/Direktori/FPMIPA/PRODI._ILMU_KOMPUTER/196603252001121-MUNIR/Software_Testing/BAB_1_Pengujian_Perangkat_Lunak.pdf