Jumat, 04 Juni 2010

Pengujian Object Oriented (Pengujian Berorientasi Obyek)

Nama : Okkie Raya Pertiwi
NPM : 17109241
Kelas : 4 KA 18

PENGUJIAN OBJECT ORIENTED (PENGUJIAN BERORIENTASI OBYEK)

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.
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.
Karakteristik OOP antara lain :
- 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. Ini juga penjelasan yang paling mudah dipahami. 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 yaituObjekObjek 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 dirinnya 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. Inheritance 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. Bahasa pemrogramman yang berorientasi objek sejati harus bisa konsisten terhadap sifat yang ada dan telah dideskripsikan diawal ketika program dan data tersebut dibuat di JAVA sifat polimorfisme ini bisa dilihat pada perilaku method, dimana method di JAVA bisa di override. istilah kerennya overridding method analoginya seperti class anjing misalnya dia punya method smell. maka parameter yang diberikan oleh kepada method smell ini bisa berbeda, misalnya saya memberikan parameter kucing pada method smell di class anjing, maka method smell akan memberikan pengembalian menggonggong. Sedangkan ketika saya memberikan parameter makanan pada method smell di class anjing, maka method smell akan memberikan pengembalian makan.
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
- Komunikasi antar Objek
Macam-macam bahasa OOP antara lain :
- 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
- Mengapa OOP dibutuhkan ?
- Sudut pandang pembuatan program selaras dengan realitas dunia nyata.
- Kemudahan pengembangan.
- Analisis ke desain ke implementasi ke pengujian ke perawatan
- Kecepatan pengembangan.
- Peningkatan produktivitas.

Perangkat Lunak : Merupakan program-program komputer dan dokumentasi yang berkaitan, Produk perangkat lunak dibuat untuk pelanggan tertentu ataupun untuk pasar umum Produk perangkat lunak tersebut:

* Generik – dibuat untuk dijual ke suatu kumpulan pengguna yang berbeda.

* Bespoke (custom) – dibuat untuk suatu pengguna tunggal sesuai dengan spesifikasinya.

Rekayasa Perangkat Lunak :

adalah suatu disiplin rekayasa yang berkonsentrasi terhadap seluruh aspek produksi perangkat lunak. mengadopsi pendekatan yang sistematis dan terorganisir terhadap pekerjaannya dan menggunakan tool yang sesuai serta teknik yang ditentukan berdasarkan masalah yang akan dipecahkan, kendala pengembangan dan sumber daya yang tersedia

Paradigma Berorientasi Objek

* Paradigma OO meliputi suatu pandangan yang lengkap mengenai Rekayasa Perangkat Lunak.
* Rekayasa Perangkat Lunak dengan metoda klasik:

1. Analisis
2. Desain
3. Pemrograman
4. Pengujian
5. Teknologi yang sesuai

Paradigma Rekayasa Perangkat Lunak OO


Model proses evolusioner yang di rangkai dengan suatu pendekatan yang mendorong pemasangan komponen.

Proses OO bergerak melewati spiral evolusioner yang berangkat dengan komunikasi pelanggan. Analisis risiko dan perencanaan membangun fondasi bagi rencana proyek OO. Rekayasa Perangkat Lunak OO menekankan penggunaan ulang sehingga di lihat di dala pustaka ( dari kelas OO yang ada ) sebelum di bangun.

Bagaimana jika suatu kelas tidak ditemukan pada pustaka?

Perekayasa perangkat lunak melakukan :

* Mengaplikasikan analisis berorientasi objek (OOA)

* Berorientasi objek design (OOD)

* Pemrograman berorientasi objek (OOP)

* Pengujian berorientasi objek (OOT)

Konsep – Konsep Berorientasi Objek

1. Objek mengenkapsulasi data
2. Operasi (aksi yang diaplikasikan untuk merubah atribut)
3. Objek lain (objek komposit dapat ditentukan)

Enkapsulasi berarti semua informasi dikemas di bawah satu nama dan dapat digunakan lagi sebagai satu spesifikasi atau komponen program

Definisi berorientasi objek menurut Coad dan Tourdon :

Berorentasi objek = objek + klasifikasi + pewarisan +komunikasi

Kelas & Objek

Kelas adalah konsep OO yang mengenkapsulasi data dan abtraksi prosedural yang diperlukan untuk menggambarkan isi serta tingkah laku berbagai entitas dunia nyata.

Kelas dapat didefinisikan juga sebagai suatu deskripsi tergeneralisir (template,pola,cetak biru).

Objek yang ada pada suatu kelas mewarisi atribut dan operasi nya yang dapat diperoleh untuk memanipulasi atribut tersebut.

Superkelas adalah sekumpulan kelas.

Subkelas adalah kejadian dari suatu kelas

Atribut

Entitas kehidupan nyata sering digambarkan dengan kata – kata yang mengindikasikan keadaan yang stabil . Sebagian besar objek fisik memiliki keadaan seperti potongan, berat, warna dan tipe material.Manusia memiliki keadaan, termasuk data kelahiran, orang tua, nama dan warna mata.

Teknologi Object Oriented

Merupakan paradigma baru dalam rekayasa software yang didasarkan obyek dan kelas

Teknik object oriented memandang software bagian per bagian dan menggambarkannya dalam satu obyek

Teknologi obyek menganalogikan sistem aplikasi seperti kehidupan nyata yang didominasi obyek

contoh :

1. Manusia adalah obyek yang memiliki atribut (nama, pekerjaan, rumah, dll.)

2. Manusia dapat berjalan, bicara, makan, minum, dll.

* Obyek dapat beraksi dan bereaksi

Prinsip Dasar dari Pemograman berorientasi obyek

* Abstraksi : memfokuskan pada karakteristikobyek

* Enkapsulasi : menyembunyikan banyak hal yang terdapat dalam obyek yang tidak perlu diketahui obyek lain

* Modularitas : membagi sistem yang rumit menjadi bagian-bagian yang lebih kecil

* Hirarki : berhubungan dengan abstraksi dan modularitas yaitu pembagian berdasarkan urutan dan pengelompokan tertentu

* Bagi Software Engineer, Teknik Pemodelan Object Oriented berpengaruh dalam bahasa pemrograman, metodologi rekayasa,manajemen proyek, hardware, dsb

* Analisis dan perancangan berorientasi obyek adalah suatu metode analisis yang memeriksa requirements (syarat-syarat/keperluan yang harus dipenuhi suatu sistem) dari sudut pandang kelas-kelas dan obyek-obyek dalam lingkup permasalahan

Konsep dasar Object Oriented Analysis and Design

* Obyek adalah benda secara fisik atau konseptual yang memiliki keadaan (state) dan perilaku (behavior)

* Kelas (Class) adalah definisi umum (pola, template atau cetak biru) untuk himpunan obyek sejenis
* Kotak hitam dan Interface : sebuah obyek digambarkan sebagai kotak hitam untuk mengakses obyek melalui interface.Kotak hitam berisi Kode (himpunan instruksi dengan bahasa yang dipahami komputer) dan Data
* Association dan Aggregation:

1. Association adalah hubungan antar obyek yang saling membutuhkan.
2. Aggregation adalah menggambarkan seluruh bagian dari obyek

Perbedaan antara Metode Struktural dan OOAD

Terletak pada bagaimana data dan fungsi disimpan

Metode Struktural : data dan fungsi disimpan terpisah. Biasanya semua data ditempatkan sebelum fungsi ditulis.

Metode OOAD : data dan fungsi yang berhubungan dalam suatu obyek disimpan bersama-sama dalam satu kesatuan.

Pemrograman berorientasi obyek

Adalah kelanjutan dari proses analisa dan desain berorientasi obyek yang kemudian diimplementasikan dengan bahasa pemrograman berorientasi obyek.
misal : C++, Java, Visual Basic, dsb

Kebutuhan dan Spesifikasi Perangkat Lunak

LINGKUP PEMBAHASAN

* Pengumpulan Kebutuhan Perangkat Lunak

- Mengumpulkan Data mengenai analisa sistem dan masalah nya

* Teknik Pemodelan Analisa Kebutuhan

- Dengan pendekatan berorientasi obyek menggunakan UML( Unified Modelling Language )

* Kebutuhan Fungsional & Non Fungsional
* Pembuatan Prototipe & teknik spesifikasi formal

- Perancangan sistem dengan pendekatan UML sbg alat bantu perangkat lunak

Sistem yang baik adalah yang selalu menyesuaikan dengan perubahan lingkungan yang terjadi disekitarnya atau sistem tersebut harus dinamis menuju keadaan yang lebih baik.

Tahapan Pengembangan Sistem Informas

1. Tahap Perencanaan :

menyangkut studi kebutuhan user, studi kelayakan baik secara teknis maupun teknologi serta penjadwalan pengembangan suatu proyek sistem informasi

2. Tahap Analisis :

yaitu tahap dimana kita berusaha mengenali segenap permasalahan yang muncul pada pengguna, mengenali komponen-komponen sistem, obyek-obyek, hubungan antar obyek dan sebagainya.

3. Tahap Perancangan :

yaitu tahap dimana kita mencoba mencari solusi permasalahan yang didapat dari tahap analisa.

4. Tahap Implementasi :

tahap dimulainya pemilihan perangkat keras, penyusunan perangkat lunak aplikasi, melihat apakah sistem yang dibuat sudah sesuai dengan kebutuhan user atau belum.

5. Tahap Pemeliharaan :

mulai melakukan pengoperasian sistem dan jika diperlukan dapat melakukan perbaikan-perbaikan kecil.

Object Oriented Testing
Untuk melakukan testing sistem OO (Object Oriented) yang mencukupi, harus dilakukan tiga hal berikut:
a. definisi testing harus diperluas untuk mencakup teknik penemuan error yang diaplikasikan ke dalam model OOA dan OOD.
b. strategi unit testing akan menjadi kurang berarti dan strategi integrasi harus berubah secara signifikan.
c. disain test case harus bertanggung jawab terhadap karakteristik unik software OO.

Kebenaran Model OOA (Object Oriented Analys) dan OOD (Object Oriented Design)
Notasi dan sintaksis digunakan untuk menggambarkan model analisa dan disain akan sangat terkait dengan metode analisa dan disain tertentu yang digunakan pada proyek.
Karenanya kebenaran sintaksis dinilai berdasarkan pada ketepatan penggunaan simbologi, dan tiap model direview untuk memastikan ketepatan konvensi pemodelan yang akan dirawat.
Selama analisa dan disain, kebenaran simantik harus dinilai berdasarkan pada pemenuhan model terhadap domain masalah yang sebenarnya.
Konsistensi Model OOA dan OOD Konsistensi model OOA dan OOD dinilai dengan memperhatikan hubungan antar entitas dalam model.
Untuk menilai konnsistensi, tiap class dan koneksinya dengan class lain harus diperiksa. Model Class-Responsibility-Colaboration dan diagram hubungan obyek dapat digunakan untuk membantu aktivitas ini. Model CRC berupa kartu berindex, yang tersusun dari nama class, tipe class, karakteristik class, tanggung jawab class (operasi yang ada), dan kolaborator-nya (class-class lain yang mengirim pesan dan yang bergantung pada pemenuhan tanggung jawabnya)
Disain Test Case untuk Software OO
Ada beberapa pendekatan menurut Berard :
- Setiap test case harus secara unik diidentifikasikan dan harus secara explisit diasosiasikan dengan class yang akan ditest.
- Tujuan dari test case harus telah ditentukan.
- Daftar langkah – langkah test harus dibangun dan berisi:
- Daftar dari status object yang akan ditest.
- Daftar dari message dan operasi yang akan diperiksa sebagai konsekuensi dari test case.
- Daftar perkecualian yang mungkin terjadi dari obyek yang dites.
- Daftar kondisi external (perubahan yang terjadi pada lingkungan external yang harus ada pada software agar dapat dites)
- Informasi pendukung yang akan digunakan untuk membantu pemahaman atau pengimplemenntasian dari tes.

Unit Testing dalam Kontek OO
Enkapsulasi menentukan definisi dari class dan obyek.
Unit testing tidak melakukan tes pada tiap modul secara individual, namun unit terkecil yang dites adalah class atau obyek yang di-enkapsulasi.
Dalam OO kita tak dapat melakukan tes operasi tunggal dalam suatu isolasi, tapi harus dalam bagian dari class.
Testing class untuk software OO sama dengan unit testing untuk software konvensional
Tak seperti testing software konvensional, yang cenderung berfokus pada detil algoritma dari modul dan aliran data sepanjang interface modul, testing class untuk software OO ditentukan oleh operasi dari class yang dienkapsulasi dan tingkah laku dari class.
Integration Testing dalam Kontek OO
Karena software OO tidak mempunyai struktur kendali dalam bentuk hirarkhi, strategi integrasi konvennsional (top-down / bottom-up integration) menjadi tak berarti.
Ada 2 strategi untuk testing integrasi dari sistem OO, yaitu:
- Thread-based Testing, mengintegrasikan sekumpulan class yang dibutuhkan dalam merespon satu input atau event terhadap sistem. Tiap thread diintegrasikan dan dites secara individual.
- Used-based Testing, memulai konstruksi dari sistem dengan melakukan testing class-class (disebut independent class) yang menggunakan sangat sedikit (jika ada) class server. Setelah itu dilanjutkan dengan melakukan testing terhadap dependent class yang menggunakan independent class yang telah dites. Proses testing berlanjut terus hingga keseluruhan sistem selesai dikonstruksikan.
Cluster Testing adalah suatu langkah dalam testing integrasi dalam software OO. Disini, suatu kluster mengkolaborasi class (ditentukan oleh CRC dan model hubungan obyek) diperiksa dengan mendisain test cases yang dapat untuk menemukan error dalam kolaborasi.
Validation Testing dalam Kontek OO
Seperti pada validasi software konvensional, validasi software OO berfokus pada aksi user dan output dari sistem. Test cases dapat diturunkan dari model tingkah laku obyek dan dari diagram alur kejadian (event) yang dibuat sebagai bagian dari OOA.
Re- testing on Inheritance (Regression testing of Classes)
Dalam teori testing ulang, suatu fungsi yang tidak diubah setelah diturunkan, adalah tidak perlu. Fitur class yang sudah ditest perlu ditest ulang pada class yang menurunkannya. Dalam hal ini karakteristik yang sudah ditest sebelumnya kemudian di modifikasi pada turunannya memerlukan test case yang berbeda.
Berapa banyak re- test diperlukan? Jawaban tergantung pada spesifik risk vs economic tradeoff dari subclass yang menurunkan object.
Beberapa superclass mungkin tidak dipengaruhi oleh perubahan dalam class yang diturunkannya.
Random testing
-Identifikasi operasi yang dapat digunakan pada class
-Definisikan constrain yang mungkin terjadi
-Identifikasi minimum test sequence, sequence yang mungkin terjadi definisikan secara minimum dalam sejarahnya
-Jalankan berbagai macam test sequence secara random, terutama class instance yang mempunyai sejarah yang kompleks
Partitioning testing
Menghemat banyak test case yang dibutuhkan oleh class yang banyaknya sama partitioning dalam konvensional software
State based testing
Kategori dan operasi test yang berjalan tergantung pada kemampuan dari class untuk berubah. Masalah yang mungkin terjadi:
-Testing harus dapat memberikan semua report yang ada dan dapat diakses oleh internal state dari object itu sendiri
-Informasi hiding : keadaan ini secara tidak langsung dapat diakses, tetapi dapat diakses jika class itu sudah di public

Sumber:
aimyaya.com/.../testing-pengujian-berorientasi-objek-pada-gls-tsp
http://364ground.blogspot.com/2009/12/object-oriented-testing.html
http://www.jevuska.com/topic/konsep+object+oriented+programming+oop+dalam+pemrograman+visual.html
http://speechyourm1nd.blogspot.com/2009/03/konsep-dan-prinsip-berorientasi-objek.html

Tidak ada komentar:

Posting Komentar