BAB IV IMPLEMENTASI DAN PENGUJIAN 4
Pada bab ini akan dibahas mengenai implementasi hasil dari analis dan perancangan library yang telah dilakukan pada bab-bab sebelumnya. Pada Tugas Akhir ini juga akan dijelaskan hasil-hasil pengujian terhadap library dengan membuat suatu aplikasi.
4.1 Implementasi Bagian ini akan menjelaskan lingkungan implementasi, implementasi kelas dalam library dan implementasi antarmuka yang dibuat dalam Tugas Akhir ini.
4.2 Lingkungan Implementasi Implementasi yang dilakukan menggunakan sebuah perangkat komputer portabel (laptop) dan sebuah telepon seluler yang digunakan sebagai modem untuk koneksi internet. Perangkat komputer yang digunakan untuk melakukan implementasi memiliki spesifikasi sebagai berikut: 1. Prosesor Intel Centrino Duo T2400 @ 1.83Ghz 2. RAM 1,5 GB 3. Hard Disk 80 GB 4. Perangkat masukan Keyboard dan Mouse 5. Perangkat keluaran monitor
,91
,92 Adapun perangkat lunak yang digunakan dalam melakukan implementasi adalah sebagai berikut: 1. Sistem Operasi Ubuntu Linux 7.10 dengan kernel 2.6.22-14-Generik 2. Eclipse 3.2.2 3. Android Development Toolkit 0.4 (Eclipse Plugin) 4. Android SDK m5-rc15-linux-x86 5. Wireshark 0.99.6 6. Eclipse Java Compiler versi 3.3.1 7. Pidgin 2.2.1
Library ini dikembangkan dengan menggunakan bahasa pemrograman java dengan menggunakan IDE Ecplise. Untuk koneksi internet digunakan telepon seluler Nokia E51 dengan menggunakan provider Indosat M2 3.5G.
4.3 Batasan Implementasi Pada tugas akhir ini, perangkat lunak yang dibangun memiliki batasan sebagai berikut: 1. Perangkat lunak dibangun dan diuji hanya menggunakan emulator yang disediakan oleh Android SDK. 2. Aplikasi yang dibangun hanya untuk tujuan pengujian library sehingga baik kelas-kelas untuk tampilan dan yang tidak berhubungan dengan library tidak akan dijelaskan.
,93
4.4 Implementasi Kelas Pada bagian ini akan dijelaskan tentang implementasi kelas hasil analisis dan perancangan yang telah dijelaskan pada bab-bab sebelumnya. Berikut adalah gambar package yang dibuat dalam library AYmsg .
Gambar 4.1: Package diagra m library AYm sg
Kelas-kelas dalam package org.if_itb.ui tidak akan dijelaskan lebih lanjut karena termasuk dalam aplikasi yang menggunakan library ini.
,94
4.4.1 Pemisahan Antara Aplikasi dan Library
Gambar 4.2: Pe mis a ha n a n t a r a a plikasi d a n library
Pada Gambar 4.2 ditunjukkan 3 package library ini. Dua layer paling atas merupakan bagian library AYmsg dan package paling bawah merupakan bagian aplikasi yang berisi user interface. Bagian Aplikasi nantinya hanya akan menggunakan kelas-kelas dari package org.if_itb.client (client library) dan tidak akan menggunakan kelas pada package org.if_itb.aymsg (service library). Aplikasi cukup mengimplementasi interface IAYmsgCallback yang berisi fungsi-fungsi callbak yang akan dipanggil oleh kelas AYmsg pada package org.if_itb.client.
4.4.2 Deskripsi Kelas Bagian berikut akan menjelaskan tentang implementasi kelas-kelas yang terdapat dalam library ini beserta kegunaannya.
,95 4.4.2.1 Service Library
Kelas-kelas dalam bagian service library dapat dilihat pada Tabel 4.1. Tabel 4.1: 7DEHOL P SOH P H Q W D VLNHOD Service library V NHOD V G DOD P
Nama Kelas
Nama File
Keterangan
AymsgBodyBuffer
AymsgBodyBuffer.java
Kelas yang digunakan untuk membentuk paket Yahoo! Messenger.
AymsgLib
AymsgLib.java
Library utama service yang digunakan untuk berkomunikasi dengan server Yahoo! Messenger.
AymsgService
AymsgService.java
Building block Service Android yang digunakan untuk menyediakan service bagi aplikasi yang menggunakannya.
IAYmsgService
IAYmsgService.java
Interface service yang digunakan oleh aplikasi (activity) untuk berkomunikasi dengan kelas service.
IAYmsgServiceCallback
IAYmsgServiceCallback.java
Interface aplikasi (activity) yang digunakan service sebagai interface untuk memanggil fungsi callback pada aplikasi.
Implementasi atribut dan operasi untuk kelas ini dapat dilihat pada Lampiran B bagian B.1. Kelas-kelas dalam bagian ini dikelompokkan ke dalam package org.if_itb.aymsg. Diagram kelas pada paket ini dapat dilihat pada Gambar 3.7. 4.4.2.2 Client Library
Kelas-kelas dalam bagian client library dapat dilihat pada Tabel 4.2.
,96
Tabel 4.2: 7DEHOL P SOH P H Q W D VLNHOD V NHOD V G DOD P &OLHQ
Nama Kelas
Nama File
Keterangan
AYmsg
AYmsg.java
Library yang langsung dipakai oleh pengembang untuk memanggil fungsi – fungsi utama. Fungsi ini akan berhubungan dengan kelas service
AYmsgBuddy
AymsgBuddy.java
Representasi suatu buddy. Menyimpan informasi suatu buddy.
AYmsgConference
AymsgConference.java
Representasi suatu ruangan conference. Menyimpan informasi conference.
AYmsgGroup
AymsgGroup.java
Representasi group dalam suatu buddy list. Menyimpan informasi suatu grup.
AYmsgType
AymsgType.java
Berisi konstanta yang dibutuhkan oleh kelas-kelas lain
IAYmsgCallback
IAYmsgCallback.java
Interface callback. Merupakan interface berisi fungsi-fungsi callback yang akan dipanggil apabila terjadi suatu event tertentu.
Implementasi atribut dan operasi untuk kelas ini dapat dilihat pada Lampiran B bagian B.2. Semua kelas ini dikelompokkan dalam package org.if_itb.client. Gambar class diagram untuk pakage ini dapat dilihat pada Gambar 4.4. 4.4.2.3 org.openymsg.network.challange
Dalam library ini juga digunakan library lain yang berisi fungsi-fungsi enkripsi. Library ini merupakan bagian dari library openymsg. Kelas-kelas dari library tersebut yang dipakai dalam library ini dapat dilihat pada Tabel 4.3.
,97 Tabel 4.3: kelas e nk ri p si p a d a p a ke t o rg.o pe ny m sg.network.challa nge
Nama Kelas
Nama File
Keterangan
ChallengeResponseUtility
ChallengeResponseUti- Berisi fungsi-fungsi untuk menghasillity.java kan enkripsi dari challenge string yang diberikan oleh server.
ChallengeResponseV10
ChallengeResponseV10.java
Berisi fungsi enkripsi untuk protokol Yahoo! versi 10 sampai 15
ChallengeResponseV10Tables
ChallengeResponseV10Tables.java
Tabel lookup yang digunakan oleh kelas lain dalam paket ini.
ChallengeResponseV9
ChallengeResponseV9.java
Berisi fungsi enkripsi untuk protokol Yahoo! Versi 9.
SHA1
SHA1.java
Berisi fungsi enkripsi dengan algoritma SHA1.
UnixCrypt
UnixCrypt.java
Berisi fungsi enkripsi yang dipakai pada sistem operasi unix.
Im ple m e n t a si a t rib u t d a n o pe r a si u n t u k kelas ini d a p a t diliha t p a d a Lam pira n B bagia n B.3
Gambar 4.3 : Kelas diagra m u n t u k pack age org.it_itb.ay m sg
,98
Gambar 4.4: diagra m kelas u n t u k pack age org.if_itb.client
,99
4.4.3 Implementasi Antarmuka Bagian ini berisi gambar-gambar hasil implementasi antarmuka dari program yang digunakan untuk menguji library ini. Gambar ini dihasilkan dari emulator Android.
Gambar 4.6: Activity login
Gambar 4.5: Men u b u d d y
Gambar 4.7 : Men u gr u p
Gambar 4.8: Men u u t a m a
,91 0
Gambar 4.1 0 : Activity ch at
Gambar 4.9: Activity confere nce
Gambar 4.1 2 : Activity s t a t u s
Gambar 4.1 1 : Activity m e m b u a t co nfe re nce
,91 1
4.5 Pengujian Pada bagian ini akan dijelaskan tentang pengujian terhadap library ini. Penjelasan ini dibagi menjadi prosedur pengujian, kasus uji, hasil pengujian dan evaluasi hasil pengujian.
4.5.1 Prosedur Pengujian Seperti yang telah dijelaskan pada bagian analisis, bahwa untuk menguji fungsionalitas library ini akan dibuat suatu program sederhana. Program ini layaknya program client messaging yang digunakan user untuk berkomunikasi dengan user lain. Program ini akan dijalankan pada emulator Android yang terdapat dalam SDK. Untuk prosedur pengujian, akan dibuat suatu skenario untuk tiap Use case dan tiap skenario tersebut diuji berdasarkan kasus uji yang telah disediakan. Hasilnya akan di sesuaikan dengan parameter keberhasilan.
Tabel 4.4: Kasus Uji untuk pengujian library AYmsg
Use-
Deskripsi
Prosedur pengujian
Masukan
case 1
2a
Kriteria Evaluasi
diharapkan
Hasil
Hasil yang didapat
Kesimpulan
� Jalankan program AYmsg
Username : if_bot Password: ready%to%serv
Terdapat notifikasi Proses login berha- Muncul notifikasi dan : starting sil layar buddy list activiy main muncul service, connecmuncul ting dan tampil daftar teman
Skenario alternatif login gagal
� Jalankan program AYmsg
Username : if_bot Password: salah
Muncul notifikasi pesan gagal
Proses login gagal dan muncul notifikasi kegagalan tersebut
Terdapat notifikasi “Aut- Diterima hentication Failed”
Manajemen daftar Teman: menambahkan teman
� Lakukan proses login
Yahoo! Id: ahmy135 Group: Buddies
Teman baru muncul pada grup sesuai masukan dan terdapat notifikasi keberhasilan
Berhasil menambahkan teman baru dan teman tersebut muncul kembali pada saat login
Teman tersebut muncul Diterima dalam buddy list dan status teman tersebut muncul, notifikasi muncul diterima atau ditolak
Skenario normal
pada emulator � masukan username dan password � tekan tombol login 1a
Keluaran yang
pada emulator � masukan username dan password � tekan tombol login � Tekan menu,
� Tekan Add Buddy
� Masukan Yahoo! Id teman
� pilih “Use Existing group”
Diterima
� Tekan Tombol “Add Buddy” � Logout dan login kembali
,91 2
Use-
Deskripsi
Prosedur pengujian
Masukan
Keluaran yang
Kriteria Evaluasi
diharapkan
Hasil
Buddy: ahmy135 Group: Buddies
Buddy terhapus dari daftar teman meskipun setelah proses login kembali dilakukan
Berhasil menghapus teman baru dan teman tersebut tidak muncul kembali pada saat login
case 2b
Manajemen daftar Teman: Menghapus teman
� Lakukan proses login
� Pilih buddy yang akan diha-
pus � Klik buddy tersebut � Pilih “Remove Buddy” � Tekan Tombol “Add Buddy” � Logout dan login kembali
3
Mendapatkan daftar � Lakukan proses login sesuai teman dengan kasus uji 1
Username : if_bot Password: ready%to%serv
Muncul daftar te- Aplikasi dapat meman milik user ter- munculkan daftar sebut teman milik user tersebut
4
Mendaftarkan teman � Lakukan proses login sesuai dengan kasus uji 1 � Dari aplikasi lain, kirimkan pesan ke user if_bot
Username : if_bot Password: ready%to%serv user pengirim: ahmy135
Muncul tab baru dengan id user yang mengirimkan pesan beserta pesan yang dikirimkan
Aplikasi dapat mendeteksi user lain sedang menuliskan pesan dan menerima pesan yang dikirimkan oleh user tersebut
Hasil yang didapat
Kesimpulan
Teman terhapus dari daf- Diterima tar teman, dan tidak muncul setelah proses login ulang
Muncul activity utama dengan menampilkan buddy list milik if_bot
Diterima
Tab baru muncul dengan Diterima id user “ahmy135” dan muncul animasi pengetikan pesan beserta pesan yang dikirimkan
,91 3
Use-
Deskripsi
Prosedur pengujian
Masukan
Keluaran yang
Kriteria Evaluasi
diharapkan
Hasil
Buddy id: ahmy135 pesan: “halo ahmy, gimana TA nya?”
Pada sisi penerima muncul notifikasi sedang mengetik dan pesan diterima
Notifikasi pengetikan muncul dan pesan yang dikirim sama dengan pesan yang diterima
Custom Status: “Mengetes perubahan status”
Pada Aplikasi lain, Status user berubah Pada aplikasi lain status Diterima status if_bot beru- sesuai masukan berubah menjadi “busy” bah lalu “Mengetes perubahan status”
case 5
Mengirim pesan
� Lakukan proses login sesuai
dengan kasus uji 1
� Klik teman yang ingin diki-
rimkan pesan
� Tuliskan pesan
� tekan enter atau tekan tombol
“send”
6a
Mengubah status
� Lakukan proses login sesuai
dengan kasus uji 1 � Pilih menu � pilih “Change Status” � Pilih “Busy” � tekan “Set Status” � Pilih Change Status kembali � tekan checkbox “Use custom status” � masukan status � tekan “Set status”
Hasil yang didapat
Kesimpulan
Tab ahmy135 muncul Diterima dan terdapat pesan “halo ahmy, gimana TA nya?”. Pada penerima, notifikasi pengetikan muncul dan pesan yang sama diterima
,91 4
Use-
Deskripsi
Prosedur pengujian
Masukan
case
Keluaran yang
Kriteria Evaluasi
diharapkan
Hasil
Hasil yang didapat
Kesimpulan
6b
Mendeteksi perubah- � Lakukan proses login sesuai an status dengan kasus uji 1
Buddy: ahmy135 Status: “hey if_bot can you detect this ?”
Pada daftar teman, status untuk user ahmy135 berubah sesuai input
Dapat mendeteksi perubahan status dan ketersediaan user lain
7a
Manajemen grup: menambah grup baru
Buddy: ahmy135 group: test
Muncul group baru beserta teman ke dalam daftar teman
Aplikasi dapat Grup “test” dan ahmy135 Diterima membuat grup baru muncul dan muncul dalam daftar grup
� Lakukan proses login � Tekan menu,
� Tekan Add Buddy
� Masukan Yahoo! Id teman � pilih “Custom Group”
User untuk ahmy135 Diterima berubah menjadi “hey if_bot can you detect this ?”, user tersebut terdeteksi log off dan log in
� Tekan Tombol “Add Buddy” � Masukan grup baru
� Tekan “Add Buddy”
7b
Manajemen grup: menghapus grup
� Lakukan proses login
Grup: � Klik grup yang ingin di hapus Test � pilih “remove group”
Grup terhapus dari Grup berhasil diha- Grup Test terhapus bedaftar teman bepus beserta isi-isi di serta buddy didalamnya serta isinya dalamnya
Diterima
,91 5
Use-
Deskripsi
Prosedur pengujian
Masukan
Keluaran yang
Kriteria Evaluasi
diharapkan
Hasil
-
User tergabung dalam ruang conference beserta terdapat teman yang tergabung dalam conference tersebut
User berhasil masuk ke dalam ruangan conference dan user lain dapat mendeteksi kehadiran user
Diterima User bergabung User berhasil keluar User keluar dari dan keluar dari dari suatu conferen- conference dan user lain mendeteksi hal tersebut conference, proses ce tersebut terlihat oleh user lain
case 8
Bergabung dalam conference
� Lakukan proses login
� dari aplikasi lain undang user
ke suatu conference � Klik “join”
9
10
Keluar dari Conference
� Lakukan proses bergabung
-
Mengirim Pesan ke conference
� Lakukan proses bergabung
Pesan: Pesan tersebut ter“Halo semua, kekirim ke conferennalkan saya if_bot” ce dan tersebut diterima oleh seluruh anggota dengan baik
dalam conference seperti pada use case 8 � Klik tombol “exit”
dalam conference seperti pada use case 8 � Ketik pesan � tekan “enter” atau tombol “send”
User berhasil mengirimkan suatu pesan ke conference dan user lain dapat membacanya
Hasil yang didapat
Kesimpulan
Diterima Terbuka taib conferece baru sesuai nama ruangan, lalu muncul daftar user dalam conference tersebut
Pesan “Halo semua, ke- Diterima nalkan saya if_bot” terkirim dan muncul pada member yang lain
,91 6
Use-
Deskripsi
Prosedur pengujian
Masukan
case 11
Menerima pesan dari � “Halo semua, kenalkan saya if_bot” conference
12
Membuat conference
� Lakukan proses login � Klik user yang ingin
di-invite � klik “Create Conferece: � Pilih ruangan conference � Masukan pesan invite � tekan tombol “create conference
Keluaran yang
Kriteria Evaluasi
diharapkan
Hasil
Hasil yang didapat
Kesimpulan
Pesan: “Halo if_bot, apa kabar”
Pesan tersebut muncul pada tab conference
User dapat menerima pesan yang dikirimkan oleh user lain dalam conference
Buddy: ahmy135 Room: if_bot-1 Pesan: coba gabung dalam conference saya
Muncul tab baru sesuai dengan nama ruangan, muncul teman yang diundang dalam conference tersebut.
User dapat membu- Muncul tab baru berisi orang yang diundang at suatu conference baru dan mengirim invitasi ke user lain
Pesan diterima berupa Diterima “Halo if_bot, apa kabar” dan muncul pada tab conference Diterima
,91 7
Use-
Deskripsi
Prosedur pengujian
Masukan
case 13
Login dari tempat lain
� Lakukan proses login
� Melalui aplikasi lain, login
dengan user dan password yang sama
Username : if_bot Password: ready%to%serv
Keluaran yang
Kriteria Evaluasi
diharapkan
Hasil
Muncul notifikasi bahwa telah melakukan login dari tempat lain dan koneksi terputus
User mendapatkan notifikasi bahwa telah melakukan login dari tempat lain dan koneksi terputus.
Hasil yang didapat
Kesimpulan
Koneksi terputus dan Diterima user mendapat notifikasi bahwa telah login di tempat lain.
,91 8
,91 9
4.5.2 Evaluasi Hasil Pengujian Dari hasil pengujian yang dilakukan dengan menggunakan kasus uji pada Tabel 4.4 didapat kesimpulan bahwa library yang dihasilkan pada Tugas Akhir ini berjalan dengan baik. Masing-masing uji kasus pada contoh di atas, menguji semua fungsi yang terdapat dalam library. Meskipun berjalan pada lingkungan emulator, aplikasi ini cukup merepresentasikan kondisi yang sebenarnya karena koneksi internet yang digunakan sesuai dengan keadaan yang sesungguhnya dan aplikasi ini benar-benar berkomunikasi dengan server dan aplikasi client messaging lain dalam kondisi realtime. Kekurangan yang terdapat dalam aplikasi ini adalah tampilan yang mungkin belum terlalu baik. Karena aplikasi yang dibuat semata-mata hanya untuk keperluan pengujian saja, maka hal ini tidak menjadi permasalahan yang akan dibahas dalam Tugas Akhir ini. Sesuai dengan tujuan awal Tugas Akhir ini akan berfokus pada library saja. Fungsi tab pada Android masih memiliki kekurangan. Dalam library Android terdapat fungsi untuk menambahkan sebuah tab baru tetapi tidak terdapat fungsi untuk menghapus tab tersebut.
4.6 Temuan Pada bagian ini akan dijelaskan Temuan-temuan dalam melaksanakan proses pengerjaan Tugas Akhir ini.
4.6.1 Fungsi Asynchronous Fungsi-fungsi untuk berkomunikasi dengan server Yahoo! Messenger banyak menggunakan fungsi asynchronous atau fungsi yang tidak blocking. Hal ini ternyata sangat tepat digunakan untuk membuat library pada platform Android. Dengan
,92 0 membuat fungsi secara synchronous atau blocking, user library ini harus membuat fungsi tersebut menjadi asynchronous kembali dengan cara memasukkanya ke dalam thread. Hal tersebut dilakukan untuk mengatasi batasan Android yang harus menyelesaikan dengan semua fungsi kurang dari lima detik. Karena apabila activity melakukan fungsi lebih dari lima detik maka pesan ANR akan muncul. Pesan ANR dapat dilihat pada Gambar 3.3.
4.6.2 Proses Mempelajari Protokol Yahoo! Messenger Dalam mempelajari protokol Yahoo! Messenger, dokumentasi yang ditemukan tidak mencukupi untuk membangun protokol ini secara lengkap. Perlu dicari programprogram yang menggunakan protokol Yahoo! Messenger. Dengan membaca source code program tersebut, dapat diketahui field-field dan maksud penggunaan field tersebut dalam paket Yahoo! Messenger. Proses packet capturing dilakukan dengan menggunakan kakas wireshark. Pemahaman lebih lanjut tentang struktur paket yang ditemukan. Melengkapi dokumentasi yang tersedia.
4.6.3 Penulisan Kode yang Tidak Sesuai Konvensi Untuk mencapai tingkat efisiensi yang tinggi, terkadang penulisan kode program pada library ini tidak sesuai konvensi. Sebagai contoh pasangan key dan value pada bagian data secara konvensi dibuat menjadi array dua dimensi. Tetapi dalam implementasi, method dalam Android lebih efisien untuk mengakses array tersebut apabila dipisahkan. Oleh karena itu penulisan kode seperti itu lebih dipilih karena dapat berjalan lebih baik pada platform Android.
4.6.4 Fungsi Tab pada Android Fungsi tab pada Android masih tergolong baru. Saat pembuatan Tugas Akhir ini
,92 1 masih ditemukan beberapa bug-bug dalam Android. Bug tersebut antara lain: �
Terdapat fungsi untuk menambahkan tab baru tetapi tidak ada fungsi untuk menghapus tab yang telah dibuat.
�
Seringkali setelah melakukan update tampilan pada tab, tab tersebut tidak menunjukkan update tampilan tersebut.