download

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