Matakuliah Tahun Versi : H0112 – Pemrograman Bahasa Tingkat Tinggi : 2005/2006 : <<versi/revisi>> Pertemuan 6 Unit Testing 1 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Menggunakan debugger pada pemrograman C 2 Outline Materi • • • • Sistem Testing Memory Leak White Box Black Box 3 Sistem Testing Manakah pernyataan Sistem Testing yang benar berikut ini: • a) Sebelum menambahkan komponen software pada suatu sistem, maka software tersebut harus sudah ditest terlebih dahulu. • b) Komponen program yang berbeda dapat ditest dengan cara yang berbeda pula. • c) Tingkatan Testing program adalah beta test dan alpha test. 4 • d) Modul testing berfungsi mengcek apakah modul tersebut sudah benar, terlepas dari modul lain yang berinteraksi dengan-nya. • e) Dependensi Dalam Modul tidak perlu ditest. 5 Apa itu Kebocoran Memori (Memory Leak)? • Apa itu? – Alokasi memori tanpa dilepas setelah selesai digunakan. • Mengapa buruk? – Menurunkan perfoma/kinerja – Menyebabkan komputer hang/crashed • Solusi? – Mencari tahu dimana memori tersebut mengalami kebocoran. 6 C/C++ memory leak • Dalam C/C++, Anda dapat mengalokasikan ruang untuk objek atau variabel secara dinamis pada saat program berjalan. Setelah selesai menggunakannya, maka Anda perlu melepas memori yang dikonsumsi oleh objek/variabel tersebut, terutama sebelum pointer objek/variabel ybs, keluar dari Lingkup (Scope)-nya. 7 Contoh Memory leak • Ketika sebuah variabel dibuat dengan deklarasi biasa, yaitu tanpa new, maka memori yang dialokasikan terletak pada “Stack”. – { – int i = 3; // memory for i and obj – MyObject obj; // allocated on the stack – ... – } – Kapan Anda menghapusnya? • Ketika variabel tsb keluar dari “Scope”, alokasi memorinya secara otomatis terhapus (“popped off the stack”). // i and obj go out of scope, 8 // memory freed Contoh Memory leak • Untuk alokasi memori secara dinamis, Anda perlu membuat pointer MyClass* ptr; • ptr sendiri adalah sebuah variabel dalam stack. Kemudian, Anda membuat objek: ptr = new MyClass( constructor args ); • Perintah diatas menghasilkan suatu objek (ditunjuk oleh ptr) dari blok memori yang disebut dengan “heap”. • Ketika objek keluar dari “Scope”, ptr dihapus dari stack, tetapi memori pada objek tersebut tetap berada pada “heap”. { MyClass* ptr = new MyClass(); //creates object….. … } // ptr goes out of scope here -- memory leak! 9 Contoh Memory leak Untuk menghindari kebocoran memori, Anda perlu mendealokasi memori objek tersebut, sebelum objek keluar dari “Scope” { MyClass* ptr MyClass* a = ... delete ptr; delete [] a; = new MyClass(); new MyClass[n]; // creates an object // array of objects // deletes the object pointed to by ptr // brackets needed for array of objects } Untuk setiap new, maka seharusnya ada sebuah delete. Untuk setiap new dengan tanda kurung [], maka seharusnya ada sebuah delete [] 10 Cakupan Test/Koding • Kondisi Awal – Software product under development – Test suite Test / Code coverage provides a measure of how well test suite actually tests the product. 11 Cakupan Analisa Test/Code • Cakupan Analisa adalah alat ukur untuk menentukan seberapa banyak koding tertentu telah di-test. • Cakupan Analisa dapat mengidentifikasi struktur koding yang tidak pernah dieksekusi – Perlu penambahan alur test baru? – Hapus koding yang tidak digunakan! 12 Contoh Cakupan Analisa Test/Koding Pernyataan Pilihan ? ? 1 2 Cakupan Alur ? 4 alur test 13 Contoh Testing Software Cantata++ Customers Medical Systems – GE Medical Train Control - Alcatel Cantata++ running under Symbian – Nokia Series 60 Airbus A340 – Ultra Electronics Nuclear Reactor Control - Thales International Space Station – Dutch Space EFA Typhoon – BAe Systems 14 Topik Minggu Depan • Optimasi Pemrograman C • Tugas: Mahasiswa mencoba fungsi debugger pada bahasa C untuk Studi Kasus: Konversi data Digital ke data Analog – buku pustaka no:2 halaman 85) 15
© Copyright 2024 Paperzz