Pengujian berorientasi objek / Object oriented programming (OOP)
Mengubah strategi dan taktik pengujian Tujuan pengujian tetap yaitu untuk menemukan kesalahan dalam selang waktu yang realistik Mengubah strategi dan taktik pengujian Ada tiga hal yang harus diperhatikan : Definisi pengujian harus diperluas agar mencakup teknik untuk menemukan kesalahan pada model OOA (Object Oriented Analysis) dan OOD (Object Oriented Design) Strategi pengujian unit dan integrasi berubah Perancangan pengujian harus memperhatikan karakteristik dari perangkat lunak berorientasi objek
OOP Object Oriented Programming (OOP) dapat diartikan beberapa macam antara lain : Suatu teknik atau cara untuk membuat program (perangkat lunak) objek. Pemrograman yang dibangun dengan cara membungkus (enkapsulasi) komponennya menjadi kelompok data dan fungsi yang dapat mewarisi atribut dan sifat dari komponen lainnya. dan komponen-komponen tersebut dapat berinteraksi satu sama lainnya. Pemrograman yang didasarkan pada objek-objek, yaitu suatu unit terkecil dari program yang mengandung data dan fungsi yang bekerja atas objek tersebut.
Sudut Pandang Pengujian Perangkat lunak objek merupakan perangkat lunak yang dibangun dari kelas-kelas dan objek-objek yang saling berinteraksi satu sama lainnya. Kelas adalah deskripsi statis dari sesuatu objek-objek yang memiliki karakteristik yang sama. Objek adalah sesuatu yang diinstansiasi dari kelas. Kesalahan pendefinisian atribut kelas yang ditemukan pada tahap analisis akan menghilangkan pengaruh yang dapat muncul. Contoh : Sebuah kelas dengan sejumlah atribut didefinisikan pada tahap analisis. Sebuah atribut yang tidak berhubungan dan dua operasi yang memanipulasi atribut tersebut terdefinisi. Jika atribut yang tidak berhubungan dihilangkan pada tahap analisis, dapat mengurangi beberapa masalah dan usaha sbb : Pembuatan subclass yang khusus untuk mengakomodasi atribut tersebut Pembuatan relasi antar kelas yang salah Kelakuan dari sistem dapat menjadi tidak tepat
Karakteristik OOP Abstraksi : Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Enkapsulasi (Pembungkusan) : adalah Variabel dan method dibungkus dalam suatu objek dibungkus agar terlindungi. Dimana Setelah dibungkus, barulah hak akses terhadapnya bisa ditentukan. salah satu contohnya adalah jam tangan. Inheritance (Pewarisan/Penurunan) : adalah suatu metode pemrograman yang berbasiskan pada objek, secara singkat pengertian dari OOP adalah koleksi objek yang saling berinteraksi dan saling memberikan informasi satu dengan yang lainnya. Dalam Object Oriented terdapat istilah Objek dan kelas. Objek adalah sesuatu yang memiliki identitas (informasi tentang dirinya) dan tingkah laku (apa yang dapat dilakukan) contoh objek dalam dunia nyata adalah rumah, sepeda, motor, manusia, hewan dll. Identitas dari suatu objek adalah informasi tentang dirinya sebagai contoh adalah objek Hewan memiliki indentas berupa nama, jenis, tangan, kaki, mata dll, tingkah laku dari objek hewan adalah berjalan, berlari, tidur dll. Contoh lain adalah tentang jam tangan. Dulu fungsi jam tangan hanya sebagai penunjuk waktu saja, tapi sekarang fungsinya sudah nambah, dari yang bisa nampilin tanggal sampe kalender. Jadi, dengan inheriten semua perubahan itu gak ngerubah bulat-bulat objek yang ada, tetapi hanya menambah dan memodifikasi dengan mempertahankan objek (class) awalnya.
Polymorphism : adalah objek yang memiliki banyak bentuk Polymorphism : adalah objek yang memiliki banyak bentuk. Bahasa pemrogramman yang berorientasi objek sejati harus bisa konsisten terhadap sifat yang ada dan telah dideskripsikan diawal. Penerapan di JAVA : class variable1 { int x; int y; varible1 (int x, int y) { //method dengan parameter list this.x = x; this.y = y; } variable1 () { //method tanpa parameter list x = 1; y = 1; } class variableview { public static void main (String args []){ varable1 a = new variable1 (); System.out.println(“x=” + a.x + “y=” + a.y); } } Hasil yang akan ditampilkan ketika program diatas dijalankan adalah x = 1 dan y = 1 karena program ini membuktikan sifat polimorfisme yang ada di JAVA, class variableview memanggil method variable1 tanpa parameter, sehingga nilai yang dikembalikan adalah nilai yang ada dimana nilai tersebut berada di method yang tidak memiliki parameter list.
Reusability : Supaya dapat dipakai dalam banyak aplikasi dan situasi – supaya tidak perlu lagi mengimplementasi ulang, walaupun hanya ada perbedaan sedikit saja dari yang sudah dikerjakan sebelumnya
Pengujian Model OOA dan OOD Object-Oriented Analysis (OOA) Object-oriented analysis adalah suatu metoda analisis yang memeriksa syarat-syarat dari sudut pandang kelas-kelas dan objek-objek yang ditemui pada ruang lingkup permasalahan. Mendefinisikan kebutuhan-kebutuhan sistem melalui skenario atau penggunaan kasus-kasus. Kemudian, membuat suatu model obyek dengan kemampuan memenuhi kebutuhan-kebutuhan. Output : Model kebutuhan-kebutuhan, biasanya menggunakan CRC Cards (Class Responsibilty Collaboration). Memberikan gambaran rinci dari suatu sistem. Mengidentifikasi “WHAT” kebutuhan fungsional (Use Cases) Identifikasi : objects, classes, operations Identifikasi : object relationships, object interations Bangun model-model di dunia nyata menggunakan tampilan OO Tujuan dari OOA adalah untuk memahami domain masalah dan meningkatkan ketelitian, konsistensi, kelengkapan
CRC (Class Responsibility Collaboration) Cards CRC menyediakan teknik yang efektif untuk menemukan berbagai kemungkinan menemukan responsibility dan collaboration. Contoh CRC Card :
Object-Oriented Design (OOD) Object-oriented design adalah metoda untuk meng-arahkan arsitektur perangkat lunak yang didasarkan pada manipulasi objek-objek sistem atau subsistem. Model kebutuhan-kebutuhan yang dibuat pada fase analisis diperkaya dalan fase perancangan. Kadang-kadang ditambahkan lebih banyak lagi atribut dan pelayanan. Ditambahkan antarmuka obyek-obyek. Memberikan blueprint untuk implementasi Menspesifikasi “HOW” Menspesifikasi: class definitions, class categories Menspesifikasi: subsystems, system architectures OOA + Rincian Implementasi Tujuan dari OO Design adalah mengoptimalkan maintainability, reusability dan Reliability
Kebenaran dari model OOA dan OOD Kebenaran dari sintaks : Penggunaan simbol dan aturan pemodelan yang tepat Kebenaran dari sematik Model yang mewakili dunia nyata, dibutuhkan seorang ahli dalam domain persoalan. Hubungan antar kelas Kekonsistenan dari model OOA dan OOD hubungan antar entitas dalam model dapat digunakan model CRC dan object-relationship diagram
Jenis Bahasa OOP Bahasa OOP Murni adalah bahasa yang mengharuskan program betul-betul ditulis dari objek-objek saja. Contoh: Eiffel, SmallTalk, Java. Bahasa OOP Hybrid adalah bahasa yang masih memungkinkan penulisan program mencampuradukkan objek dengan fungsi dan type lainnya di luar objek. Contoh: C++, PHP, Delphi
Strategi Pengujian Pengujian Unit dalam konteks berorientasi objek Strategi : pengujian semua unit program terkecil, pengujian integritas dari modul, dan pengujian keseluruhan sistem Pengujian Unit dalam konteks berorientasi objek Unit terkecil Kelas atau objek Setiap operasi yang diturunkan pada kelas turunan harus diperiksa Pengujian Integritas dalam konteks berorientasi objek Thread-based testing mengintegrasikan sekumpulan kelas suatu input atau kejadian dalam sistem. Setiap thread diintegrasikan dan diuji secara individual. Pengujian regresi diterapkan untuk memastikan tidak ada efek samping yang muncul.
Pengujian Validasi dalam Konteks Berorientasi Objek Use-based testing Pengujian terhadap setiap independent classes Pengujian terhadap dependent classes sampai keseluruhan sistem terbentuk Cluster testing : salah satu langkah dalam pengujian integritas memeriksa kolaborasi antar kelas pada model CRC dan object relationship Pengujian Validasi dalam Konteks Berorientasi Objek memusatkan pada aksi dari user dan keluaran dari sistem yang dapat dikenali user Use Case membantu untuk menemukan kesalahan pada kebutuhan interaksi user Black Box mengatur pengujian validasi
METODA PENGUJIAN PADA LEVEL KELAS Random Testing Contoh : Aplikasi perbankan mempunyai kelas account yang dengan operasi : open, setup, deposit, withdraw balance, summarize, creditLimit, & close. Sejarah hidup minimum dari account adalah operasi : open • setup • deposit • withdraw • close Variasi yang mungkin muncul : open • setup • deposit • [ deposit | withdraw | balance | summarize | creditLimi t ] • withdraw • close Kasus uji lain yang mungkin : open • setup • deposit • deposit • balance • summarize • withdraw • close
Lanjutan Partition Testing mengurangi jumlah kasus uji dengan mengelompokkan input dan output, kasus uji dirancang untuk memeriksa setiap kelompok Ada beberapa cara : 1. Pembagian berdasarkan status (state-based partitioning) : mengelompokkan operasi berdasarkan kemampuan untuk mengubah status dari kelas Contoh pada kelas account : operasi yang mengubah status adalah deposit dan withdraw operasi yang tidak mengubah status adalah balance, summarize, dan creditLimit
Lanjutan 2. Pembagian berdasarkan atribut (attribute-based partitioning) mengelompokkan operasi berdasarkan atribut yang digunakan Contoh : operasi yang menggunakan creditLimit, operasi yang mengubah creditLimit operasi yang tidak menggunakan atau mengubah creditLimit. 3. Pembagian berdasarkan kategori (category-based partitioning) mengelompokkan operasi berdasarkan fungsi generik dari setiap operasi. Contoh : operasi inisialisasi (open, setup) operasi perhitungan (deposit, withdraw) operasi query (balance, summarize, creditLimit) operasi terminasi (close)
Desain Test Case Inter Kelas ATM User Interface Bank Validation Info Account Cashier CardInserted Password Deposit Withdraw Account Status Terminate Verify Status Deposit Status Dispense Cash Print Accnt Status ReadCard Info Get Cash Amount Verify Acct Verify PIN Verify Policy Withdraw Required Deposit Required Account Info Open Account Initial Deposit Authorize Card Deauthorize Close Account Valid PIN Valid Account Credit Limit Account Type Balance Withdraw Deposit Close