Selasa, 13 April 2010

PENGUJIAN BERORIENTASI OBJEK



Untuk menguji system orientasi objek (OO) secara memadai, harus dilakukan tiga hal berikut :
1. definisi pengujian harus diperluas untuk mencakup tehnik penemuan kesalahan yang diaplikasikan ke model OOA dan OOD.
2. strategi untuk pengujian unit dan terintegrasi harus berubah secara signifikan.
3. design test case harus bertanggung jawab terhadap karekteristik unit perangkat lunak OO.
Sararan keseluruhan pengujian berorientasi objek untuk menemukan jumlah kesalahan maksimum dengan jumlah usaha minimum identik dengan sasaran pengujian perangkat lunak konvensional. Tetapi taktik dan strategi untuk pengujian OO sangat berbeda. Pandangan mengenai pengujian meluas, mencakup kajian terhadap model analisis maupun design. Focus pengujian juga bergerak menjauh dari komponen procedural (modul) dan menuju ke kelas.

Karena model analisis dan desain OO serta kode sumber hasil dirangkai secara semantik, maka pengujian (dalam bentuk kajian teknik formal) dimulai selama aktifitas rekayasa ini. Karena itu, kajian CRC, hubungan objek, dan model tingkah laku objek, dapat dipandang sebagai pengujian tahap pertama. Begitu OOP diselesaikan, pengujian unit ini diaplikasikan pada masing masing kelas. Pengujian kelas menggunakan berbagai metode: pengujian fault-based, pengujian random, dan pengujian partisi. Masing-masing metode menggunakan operasi yang dienkapsulasi oleh kelas tersebut. Urutan pengujian didesain untuk memastikan apakah operasi yang relevan telah dilakukan. Keadaan kelas, yang dipresentasikan oleh harga atau nilai atributnya, diuji untuk menentukan apakah ada kesalahan.

Pengujian integrasi dapat dilakukan dengan menggunakan strategi thread-based atau used-based. Pengujian thread mengintergrasikan rangkaian kelas yang berkolaborasi untuk merespon ke satu input atau event. Pengujian use-based mengkonstruksi system di dalam lapisan, mulai dengan kelas-kelas server. Integrasi metode-metode desain test case juga dapat menggunakan pengujian partisi dan random. Pengujian scenario-based dan pengujian yang ditarik dari model tingkah laku juga dapat digunakan untuk menguji kolaboratornya. Urutan pengujian melacak aliran operasi yang melalui kolaborasi kelas.

Pengujian validasi system OO berorientasi pada black-box dan dapat dilakukan dengan mengaplikasikan metode black-box yang sama yang dibahas untuk perangkat lunak konvensional. Tetapi pengujian scenario-based mendominasi validasi dari system OO, dengan membuat case driver printer untuk validasi pengujian. Untuk mengevaluasi model kelas, direkomendasikan langkah langkah berikut (MCG94) :





• Lihat lagi model CRC dan model hubungan objek
• Periksa deskripsi masing-masing kartu indeks CRC
• Menginversikan koneksi
• Tentukan apakah kelas-kelas yang lain diperlukan
• Tentukan apakah tanggung jawab yang diminta secara luas dapat dikombinasikan
• Langkah 1 – 5 diaplikasikan secara iterative pada masing-masing kelas
Strategi pungujian berorientasikan objek secara keseluruhan di uji untuk memastikan apakah kesalahan terungkap.

Desain test case untuk perangkat lunak OO berada pada tahap formatifnya. Namun demikian, pendekatan menyeluruh ke desain test case OO telah diusulkan oleh Berard (BER93) :
• Masing – masing test case harus diidentifikasikan secara unik dan secara eksplisit
• Tujuan pengujian tersebut harus dinyatakan
• Daftar langkah pengujian harus dikembangkan
Pengaruh pemrograman OO terhadap pengujian bergantung pada pendekatan ke OPP, sebagai berikut :
• Berbagai tipe kesalahan menjadi lebih tidak masuk akal
• Berbagai tipe kesalahan menjadi lebih masuk akal
• Berbagai tipe kesalahan baru muncul
Pengujian struktur permukaan mengacu pada struktur program OO yang dapat diobservasi secara eksternal, yaitu struktur yang sangat jelas bagi pemakai akhir. Struktur dalam mengacu pada detail teknis suatu program OO, yaitu struktur yang dipahami dengan menguji desain atau suatu kode. Pengujian struktur dalam didesain untuk menggunakan ketergantungan, tingkah laku, dan mekanisme komunikasi.

Metode pengujian yang dapat diaplikasikan pada tingkat kelas dapat menggunakan pengujian random untuk kelas-kelas OO. Sedangkan pengujian partisi mengurangi tes case yang diperlukan untuk menggunakan kelas dengan cara yang sangat mirip dengan partisi ekivalensi untuk perangkat lunak konvensional. Partisi state-based mengkategori operasi kelas berdasarkan kemampuan operasi untuk mengubah keadaan kelas. Partisi atribut-based mengkategorikan operasi kelas berdasarkan atribut yang mereka gunakan. Partisi category-based mengkategorikan operasi kelas berdasrkan fungsi generic yang dilakukan oleh masing-masing. Pendekatan untuk pengujian partisi kelas bertingkat sama dengan pendekatan yang digunakan untuk pengujian partisi dari kelas individual.
System Calls
Biasanya tersedia sebagai instruksi bahasa assembly. Beberapa sistem mengizinkan system calls dibuat langsung dari program bahasa tingkat tinggi. Beberapa bahasa pemrograman (contoh: C, C++) telah didefenisikan untuk menggantikan bahasa assembly untuk sistem pemrograman.
Tiga metoda umum yang digunakan dalam memberikan parameter kepada sistem operasi:
• Melalui register.
• Menyimpan parameter dalam block atau tabel pada memori dan alamat block
tersebut diberikan sebagai parameter dalam register.
• Menyimpan parameter (push) ke dalam stack oleh program, dan melakukan pop off
pada stack oleh sistem operasi.
Jenis System Calls
1. Kontrol Proses
System calls yang berhubungan dengan kontrol proses antara lain ketika penghentian pengeksekusian program. Baik secara normal (end) maupun tidak normal (abort). Selama proses dieksekusi kadang kala diperlukan untuk me-load atau mengeksekusi program lain, disini diperlukan lagi suatu system calls. Juga ketika membuat suatu proses baru dan menghentikan sebuah proses. Ada juga system calls yang dipanggil ketika kita ingin meminta dan merubah atribut dari suatu proses.
MS-DOS adalah contoh dari sistem single-tasking. MS-DOS menggunakan metoda yang sederhana dalam menjalankan program aan tidak menciptakan proses baru. Program di-load ke dalam memori, kemudian program dijalankan.
Berkeley Unix adalah contoh dari sistem multi-tasking. Command Interpereter masih tetap bisa dijalankan ketika program lain dieksekusi.
2. Manipulasi File
System calls yang berhubungan dengan file sangat diperlukan. Seperti ketika kita ingin membuat atau menghapus suatu file. Atau ketika ingin membuka atau menutup suatu file yang telah ada, membaca file tersebut, dan menulis file itu. System calls juga diperlukan ketika kita ingin mengetahui atribut dari suatu file atau ketika kita juga ingin merubah atribut tersebut. Yang termasuk atribut file adalah nama file, jenis file, dan lain-lain.
Ada juga system calls yang menyediakan mekanisme lain yang berhubungan dengan direktori atau sistim berkas secara keseluruhan. Jadi bukan hanya berhubungan dengan satu spesifik berkas. Contohnya membuat atau menghapus suatu direktori, dan lain-lain.
3. Managemen Device
Program yang sedang dijalankan kadang kala memerlukan tambahan sumber daya. Jika banyak pengguna yang menggunakan sistem, maka jika memerlukan tambahan sumber daya maka harus meminta peranti terlebih dahulu. Dan setelah selesai penggunakannnya harus dilepaskan kembali. Ketika sebuah peranti telah diminta dan dialokasikan maka peranti tersebut bisa dibaca, ditulis, atau direposisi.
4. Informasi Lingkungan
Beberapa system calls disediakan untuk membantu pertukaran informasi antara pengguna dan sistem operasi. Contohnya system calls untuk meminta dan mengatur waktu dan tanggal. Atau meminta informasi tentang sistem itu sendiri, seperti jumlah pengguna, jumlah memori dan disk yang masih bisa digunakan, dan lain-lain. Ada juga system calls untuk meminta informasi tentang proses yang disimpan oleh sistem dan system calls untuk merubah (reset) informasi tersebut.
5. Komunikasi
Dua model komunikasi:
o Message-passing
Pertukaran informasi dilakukan melalui fasilitas komunikasi antar proses yang disediakan oleh sistem operasi.
o shared-memory
Proses menggunakan memori yang bisa digunakan oleh berbagai proses untuk pertukaran informasi dengan membaca dan menulis data pada memori tersebut.
Dalam message-passing, sebelum komunikasi dapat dilakukan harus dibangun dulu sebuah koneksi. Untuk itu diperlukan suatu system calls dalam pengaturan koneksi tersebut, baik dalam menghubungkan koneksi tersebut maupun dalam memutuskan koneksi tersebut ketika komunikasi sudah selesai dilakukan. Juga diperlukan suatu system calls untuk membaca dan menulis pesan (message) agar pertukaran informasi dapat dilakukan.
System program menyediakan lingkungan yang memungkinkan pengembangan program dan eksekusi berjalan dengan baik.
Dapat dikategorikan:
• Managemen/manipulasi File
Membuat, menghapus, copy, rename, print, memanipulasi berkas dan direktori.
• Informasi status
Beberapa program meminta informasi tentang tanggal, jam, jumlah memori dan disk yang tersedia, jumlah pengguna dan informasi lain yang sejenis.
• Modifikasi file
Membuat berkas dan memodifikasi isi berkas yang disimpan pada disk atau tape.
• Pendukung bahasa pemrograman
Kadang kala compiler, assembler, interpreter dari bahasa pemrograman diberikan kepada pengguna dengan bantuan sistem operasi.
• Loading dan eksekusi program
Ketika program di-assembly atau di-compile, program tersebut harus di-load ke dalam memori untuk dieksekusi. Untuk itu sistem harus menyediakan absolute loaders, relocatable loaders, linkage editors, dan overlay loaders.
• Komunikasi
Menyediakan mekanisme komunikasi antara proses, pengguna, dan sistem komputer yang berbeda. Sehingga pengguna bisa mengirim pesan, browse web pages, mengirim e-mail, atau mentransfer berkas.