Tugas RPL II (Teknik Pengujian Perangkat Lunak dan Pengujian Sistem)
Sabtu, 16 Januari 2010TEKNIK PENGUJIAN PERANGKAT LUNAK
DAN PENGUJIAN SISTEM
Testing (Pengujian Perangkat Lunak)
Adalah elemen kritis dari jaminan kualitas perangkat lunak dan merepresentasikan kajian pokok dari spesifikasi, desain, dan pengkodean. Pentingnya pengujian perangkat lunak dan implikasinya yang mengacu pada kualitas perangkat lunak tidak dapat terlalu ditekan karena melibatkan sederetan aktivitas produksi di mana peluang terjadinya kesalahan manusia sangat besar dan arena ketidakmampuan manusia untuk melakukan dan berkomunikasi dengan sempurna maka pengembangan perangkat lunak diiringi dengan aktivitas jaminan kualitas. Meningkatnya visibilitas (kemampuan) perangkat lunak sebagai suatu elemen sistem dan “biaya” yang muncul akibat kegagalan perangkat lunak, memotivasi dilakukannya perencanaan yang baik melalui pengujian yang teliti. Pada dasarnya, pengujian merupakan satu langkah dalam proses rekayasa perangkat lunak yang dapat dianggap sebagai hal yang merusak daripada membangun.
Tujuan pengujian PL :
· Tujuan langsung
- Identifikasi dan menemukan beberapa kesalahan yang mungkin ada dalam PL yang diuji
- Setelah PL dibetulkan, diidentifikasi lagi kesalahan dan dites ulang untuk menjamin kualitas level penerimaan
- Membentuk tes yang efisien dan efektif dengan anggaran dan jadwal yang terbatas
· Tujuan tidak langsung
- Mengumpulkan daftar kesalahan untuk digunakan dalam daftar pencegahan kesalahan (tindakan corrective dan preventive).
Strategi pengujian PL :
· Big bang testing : menguji PL keseluruhan, sekali untuk semua package yang ada
· Incremental testing : menguji PL per bagian dalam modul (unit testing), dilanjutkan dengan menguji integrasi tiap modul (integration test), selanjutnya seluruh package diuji (system testing)
Incremental testing :
Dibentuk dari dua dasar strategi :
Top-down
§ Modul pertama yang diuji : modul utama (tertinggi)
§ Modul terakhir yang diuji : modul pada level paling rendah
§ Keuntungan : memperlihatkan keseluruhan fungsi program (semua modul lengkap)
§ Kerugian : sulit menyiapkan potongan program dan menganalisis hasil tes
Bottom-up : kebalikan top-down
§ Keuntungan : relatif mendorong performance
§ Kerugian : menghambat program sebagai suatu keseluruhan modul
· Keduanya menganggap package PL dibangun berdasarkan hirarki modul PL
Pengelompokan berdasarkan konsep pengujian :
A. Black box (functionality) testing
Mengidentifikasi kesalahan yang berhubungan dengan kesalahan fungsionalitas PL yang tampak dalam kesalahan output. Pengujian yang mengabaikan mekanisme internal sistem atau komponen dan fokus semata-mata pada output yang dihasilkan yang merespon input yang dipilih dan kondisi eksekusi. Pengujian yang dilakukan untuk mengevaluasi pemenuhan sistem atau komponen dengan kebutuhan fungsional tertentu. Pengujian yang dilakukan untuk antar muka perangkat lunak,pengujian ini dilakukan untuk memperlihatkan bahwa fungsi-fungsi bekerja dengan baik dalam arti masukan yang diterima dengan benar dan keluaran yang dihasilkan benar-benar tepat, pengintegrasian dari eksternal data berjalan dengan baik(file/data).
Pengujian Black Box digunakan untuk menguji fungsi-fungsi khusus dari perangkat lunak yang dirancang. Kebenaran perangkat lunak yang diuji hanya dilihat berdasarkan keluaran yang dihasilkan dari data atau kondisi masukan yang diberikan untuk fungsi yang ada tanpa melihat bagaimana proses untuk mendapatkan keluaran tersebut. Dari keluaran yang dihasilkan, kemampuan program dalam memenuhi kebutuhan pemakai dapat diukur sekaligus dapat diiketahui kesalahan-kesalahannya.
Beberapa jenis kesalahan yang dapat diidentifikasi :
• Fungsi tidak benar atau hilang
• Kesalahan antar muka
• Kesalahan pada struktur data (pengaksesan basis data)
• Kesalahan inisialisasi dan akhir program
• Kesalahan performasi
B. White box (structural) testing / glass box testing
Memeriksa kalkulasi internal path untuk mengidentifikasi kesalahan. Pengujian yang memegang perhitungan mekanisme internal sistem atau komponen. White box testing memiliki empat kategori yaitu :
1. Data processing and calculations correctness test : melakukan pengecekan data processing untuk setiap kasus tes.
Pendekatan yang digunakan :
- Path coverage : rencana tes yang mencakup semua kemungkinan path, di mana coverage diukur dengan berapa % path discover
- Line coverage : rencana tes yang mencakup semua baris kode program, di mana coverage diukur dengan berapa % line discover
Correctness test & path coverage
- Path yang berbeda dalam modul PL akan dibentuk oleh pilihan kondisional statement seperti IF-THEN-ELSE / DO WHILE / DO UNTIL.
- Untuk full line coverage, tiap line dieksekusi min 1 kali selama proses pengujian, contoh : Imperial Taxi Service (ITS) taximeter ada 24 test case
- Software qualification test
- Maintainability test
- Reusability test
Pengujian yang dilakukan lebih dekat lagi untuk menguji prosedur-prosedur yang ada.Lintasan logic yang dilalui oleh setiap bagian prosedur diuji dengan memberikan kondisi/ loop spesifik. Pengujian ini menjamin pengujian terhadap semua lintasan yang tidak bergantung minimal satu kali.Dimana semua keputusan logic dari sisi ‘true’ dan ‘false’ program akan diuji serta eksekusi semua loop dalam batasan kondisi dan batasan operasionalnnya selain itu juga meliputi pengujian validasi struktur data internal.
Pengujian White Box digunakan untuk mengetahui cara kerja suatu perangkat lunak secara internal. Pengujian dilakukan untuk menjamin operasi-operasi internal sesuai dengan spesifikasi yang telah ditetapkan dengan menggunakan struktur kendali dari prosedur yang dirancang.
Pelaksanaan pengujian white box :
• Menjamim seluruh independent path dieksekusi paling sedikit satu kali. Independent path adalah jalur dalam program yang menunjukkan paling sedikit satu kumpulan proses ataupun kondisi baru.
• Menjalani logical decision pada sisi dan false
• Mengeksekusi pengulangan (looping) dalam batas-batas yang ditentukan
• Menguji struktur data internal
Untuk lebih lengkapnya silahkan download disini
Tugas Pemrosesan Parallel (SIMD dan MIMD)
SIMD dan MIMD
A. SIMD (Single Instruction Stream Multiple Data Stream)
SIMD adalah singkatan dari Single Instruction, Multiple Data, merupakan sebuah istilah dalam komputasi yang merujuk kepada sekumpulan operasi yang digunakan untuk menangani jumlah data yang sangat banyak dalam paralel secara efisien, seperti yang terjadi dalam prosesor vektor atau prosesor larik. SIMD pertama kali dipopulerkan pada superkomputer skala besar, meski sekarang telah ditemukan pada komputer pribadi.
Contoh aplikasi yang dapat mengambil keuntungan dari SIMD adalah aplikasi yang memiliki nilai yang sama yang ditambahkan ke banyak titik data (data point), yang umum terjadi dalam aplikasi multimedia. Salah satu contoh operasinya adalah mengubah brightness dari sebuah gambar. Setiap pixel dari sebuah gambar 24-bit berisi tiga buah nilai berukuran 8-bit brightness dari porsi warna merah (red), hijau (green), dan biru (blue). Untuk melakukan perubahan brightness, nilai R, G, dan B akan dibaca dari memori, dan sebuah nilai baru ditambahkan (atau dikurangkan) terhadap nilai-nilai R, G, B tersebut dan nilai akhirnya akan dikembalikan (ditulis kembali) ke memori.
Komputer yang mempunyai beberapa unit prosesor di bawah satu supervisi satu unit common control. Setiap prosesor menerima instruksi yang sama dari unit kontrol, tetapi beroperasi pada data yang berbeda.
Prosesor yang memiliki SIMD menawarkan dua keunggulan, yakni:
· Data langsung dapat dipahami dalam bentuk blok data, dibandingkan dengan beberapa data yang terpisah secara sendiri-sendiri. Dengan menggunakan blok data, prosesor dapat memuat data secara keseluruhan pada waktu yang sama. Daripada melakukan beberapa instruksi "ambil pixel ini, lalu ambil pixel itu, dst", sebuah prosesor SIMD akan melakukannya dalam sebuah instruksi saja, yaitu "ambil semua pixel itu!" (istilah "semua" adalah nilai yang berbeda dari satu desain ke desain lainnya). Jelas, hal ini dapat mengurangi banyak waktu pemrosesan (akibat instruksi yang dikeluarkan hanya satu untuk sekumpulan data), jika dibandingkan dengan desain prosesor tradisional yang tidak memiliki SIMD (yang memberikan satu instruksi untuk satu data saja).
· Sistem SIMD umumnya hanya mencakup instruksi-instruksi yang dapat diaplikasikan terhadap semua data dalam satu operasi. Dengan kata lain, sistem SIMD dapat bekerja dengan memuat beberapa titik data secara sekaligus, dan melakukan operasi terhadap titik data secara sekaligus.
Sayangnya, beberapa desainer SIMD terbentur dengan beberapa pertimbangan desain yang berada di luar kontrol mereka. Salah satu pertimbangan tersebut adalah harus menambahkan banyak register untuk menampung data yang akan diproses. Idealnya, hal ini dapat dilakukan dengan menambahkan unit SIMD ke dalam prosesor agar memiliki registernya sendiri, tetapi beberapa desainer terpaksa menggunakan register yang telah ada, umumnya yang digunakan adalah register floating-point. Register floating-point umumnya memiliki ukuran 64-bit, yang lebih kecil daripada yang dibutuhkan oleh SIMD agar bekerja secara optimal, meskipun hal ini dapat mendatangkan masalah jika kode hendak mencoba untuk menggunakan instruksi floating-point dan SIMD secara bersamaan.
Pada pendesainan awal SIMD, terdapat beberapa prosesor yang khusus disiapkan untuk melakukan tugas ini, yang seringnya disebut sebagai Digital Signal Processor (DSP). Perbedaan utama antara SIMD dan DSP adalah DSP merupakan prosesor yang komplit dengan set instruksinya sendiri (yang meskipun lebih sulit digunakan), sementara SIMD hanya bergantung pada register general-purpose untuk menangani detail program, dan instruksi SIMD hanya menangani manipulasi data.
Penggunaan instruksi SIMD pertama kali dilakukan dalam superkomputer vektor dan dipopulerkan oleh Cray pada tahun 1970-an. Akhir-akhir ini, SIMD skala kecil (64-bit atau 128-bit) telah menjadi populer dalam CPU yang bersifat general purpose, yang dimulai pada tahun 1994 dengan set instruks MAX yang diaplikasikan pada Hewlett-Packard PA-RISC. Instruksi SIMD, saat ini dapat ditemukan dalam kebanyakan prosesor, seperti halnya AltiVec dalam prosesor PowerPC; Intel MMX, SSE, SSE2, SSE3, SSE4, AMD 3DNow! dalam prosesor Intel x86; VIS dalam prosesor prosesor SPARC; MAX dalam Hewlett-Packard PA-RISC; MDMX serta MIPS-3D dalam MIPS serta MVI dalam prosesor DEC Alpha. Meskipun demikian, perangkat lunak pada umumnya tidak mengeksploitasi instruksi, dan bahkan instruksi ini hanya digunakan dalam aplikasi yang khusus, seperti pengolahan grafik.
Meskipun hal ini secara umum telah membuktikan bahwa sulitnya mencari aplikasi komersial yang dikhususkan untuk prosesor SIMD, ada beberapa kesuksesan yang terjadi seperti halnya aplikasi GAPP yang dikembangkan oleh Lockheed Martin. Versi yang lebih baru dari GAPP bahkan menjadi aplikasi yang dapat memproses video secara waktu-nyata (real-time) seperti halnya konversi antar bermacam-macam standar video yang (seperti konversi NTSC ke PAL atau sebaliknya, NTSC ke HDTV atau sebaliknya dan lain-lain), melakukan deinterlacing, pengurangan noise (noise reduction), kompresi video, dan perbaikan citra gambar (image enhancement).
Mesin SIMD secara umum mempunyai karakteristik sebagai berikut :
· Mendistribusi proses ke sejumlah besar hardware
· Beroperasi terhadap berbagai elemen data yang berbeda
· Melaksanakan komputasi yang sama terhadap semua elemen data
Sistem Komputer kategori SIMD
· Beberapa Processor Unit (Processing Element) disupervisi oleh Control Unit yang sama.
· Semua Processing Element menerima instruksi yang sama dari control unit tetapi mengeksekusi data yang berbeda dari alur data yang berbeda pula.
· Subsistem memori berisi modul-modul memori.
B. Komputer MIMD (Multiple Instruction stream-Multiple Data stream)
Pada sistem komputer MIMD murni terdapat interaksi di antara n pemroses. Hal ini disebabkan seluruh aliran dari dan ke memori berasal dari space data yang sama bagi semua pemroses. Komputer MIMD bersifat tightly coupled jika tingkat interaksi antara pemroses tinggi dan disebut loosely coupled jika tingkat interaksi antara pemroses rendah.
Analisa Algoritma Paralel
Pada saat sebuah algoritma digunakan untuk memecahkan sebuah problem, maka performance dari algoritma tersebut akan dinilai. Hal ini berlaku untuk algoritma sekuensial maupun algoritma paralel. Penampilan sebuah algoritma pengolahan peralel dapat dinilai dari beberapa kriteria, seperti running time dan banyaknya prosesor yang digunakan.
Running Time
Running time adalah waktu yang digunakan oleh sebuah algoritma untuk menyelesaikan masalah pada sebuah komputer paralel dihitung mulai dari saat algoritma mulai hingga saat algoritma berhenti. Jika prosesor-prosesornya tidak mulai dan selesai pada saat yang bersamaan, maka running time dihitung mulai saat komputasi pada prosesor pertama dimulai hingga pada saat komputasi pada prosesor terakhir selesai.
Counting Steps
Untuk menentukan running time, secara teoritis dilakukan analisa untuk menentukan waktu yang dibutuhkan sebuah algoritma dalam mencari solusi dari sebuah masalah. Hal ini dilakukan dengan cara menghitung banyaknya operasi dasar, atau step (langkah), yang dilakukan oleh algoritma untuk keadaan terburuknya (worst case).
Langkah-langkah yang diambil oleh sebuah algoritma dibedakan ke dalam dua jenis yaitu :
· Computational step
Sebuah computational step adalah sebuah operasi aritmetika atau operasi logika yang dilakukan terhadap sebuah data dalam sebuah prosesor.
· Routing step.
Pada routing step, sebuah data akan melakukan perjalanan dari satu prosesor ke prosesor lain melalui shared memory atau melalui jaringan komunikasi.
Speedup
· Pengukuran speedup sebuah algoritma paralel adalah salah satu cara untuk mengevaluasi kinerja algoritma tersebut.
· Speedup adalah perbandingan antara waktu yang diperlukan algoritma sekuensial yang paling efisien untuk melakukan komputasi dengan waktu yang dibutuhkan untuk melakukan komputasi yang sama pada sebuah mesin pipeline atau paralel.
Untuk lebih lengkapnya silahkan download disini