BAB V IMPLEMENTASI DAN PENGUJIAN Bab ini mengulas tentang proses implementasi perangkat lunak, dari hasil rancangan yang telah dibuat sebelumnya. Selain itu juga terdapat hasil-hasil pengujian terhadap kebenaran dan kinerja perangkat lunak.
5.1 Implementasi Penjelasan implementasi perangkat lunak ini meliputi pembahasan mengenai lingkungan implementasi, implementasi kelas, serta implementasi layar antarmuka dari perangkat lunak. 5.1.1 Lingkungan Implementasi Perangkat lunak XGP dikembangkan pada perangkat keras notebook Toshiba Satellite M200, dengan spesifikasi sebagai berikut: 1. Prosesor Intel Pentium Core2Duo T5250 1.50GHz. 2. Memory RAM 2 GB. 3. Harddisk 120 GB. Sedangkan spesifikasi perangkat lunak yang dipakai adalah: 1. Sistem operasi Microsoft Windows Vista. 2. IDE NetBeans 6.0. 3. Java 2 Micro Edition, yang menggunakan Java Development Kit 1.6 Update 4 dan Java Runtime Environment 1.6 Update 4. 4. Sun Java Wireless Toolkit 2.5.2. 5.1.2 Implementasi Kelas Setiap kelas pada perangkat lunak diimplementasikan dalam bahasa pemrograman Java. Sebuah kelas akan diimplementasikan dalam sebuah file, dimana semua kelas tersebut sesuai dengan kelas perancangan yang telah diuraikan pada Subbab 4.2.2.
V-1
V-2 Pada implementasi proses penyisipan, video akan menyisipkan sebuah data tambahan berupa header sebelum isi dari pesan yang asli. Header ini berisikan jumlah byte dari isi pesan, dan nama file dari pesan jika ada, yang masing-masing dibatasi oleh 8-bit 0. Header ini tidak mengalami pengacakan, dan akan digabungkan dengan isi pesan yang diacak. Bentuk dari pesan seluruhnya dapat dilihat pada Gambar V–1. Jumlah pesan
8-bit 0
Nama file, jika ada
8-bit 0
Isi pesan
Gambar V–1 Pesan dengan header
Ukuran pesan tidak divalidasi terlebih dahulu, melainkan langsung disisipkan. Tujuannya adalah mempercepat proses penyisipan, karena sebagaimana telah dijelaskan pada Subbab 3.5 bahwa implementasi pada perangkat mobile phone tidak secepat implementasi pada komputer. Oleh karena itu, pesan yang dimasukkan dapat berukuran berapapun, namun apabila proses penyisipan sudah mencapai bit LSB ke-3, maka proses tersebut berhenti, sehingga hanya sebagian pesan saja yang disisipkan. Apabila hal tersebut terjadi, maka akan muncul konfirmasi terhadap pengguna yang menanyakan apakah video yang memiliki sebagian pesan tersebut tetap disimpan atau tidak. Proses ini secara tidak langsung akan membutuhkan memori kosong minimal sebesar video tersebut. Pada implementasi proses ekstraksi, akan dibaca header pesan terlebih dahulu. Nilai yang didapat dari jumlah pesan akan menjadi batasan dari isi pesan yang akan dibaca. Dan apabila bagian nama file terisi, pesan akan disimpan ke dalam bentuk file dengan nama tersebut. Pembuatan file ini akan memeriksa terlebih dahulu ada atau tidaknya file dengan nama yang sama. Apabila ada, maka akan dicari nama file yang baru, sehingga tidak akan menimpa file yang sama. Apabila ukuran pesan yang diekstraksi lebih kecil daripada ukuran pesan yang dibaca pada header, diketahui bahwa hanya sebagian pesan saja yang terdapat pada video. Maka akan muncul pesan yang menandakan keadaan tersebut, bahwa pesan yang berhasil diekstraksi tidak utuh tetapi hanya sebagian. Bahasa Java sebenarnya memiliki fungsi pembangkit nilai MD5, tetapi tidak pada J2ME. Oleh karena itu, untuk membangkitkan nilai MD5 sebagai bilangan seed akan menggunakan sebuah library pembangkit nilai MD5 yang dikembangkan pada platform J2ME untuk CLDC. Library ini terdapat pada [MAC08].
V-3 5.1.3 Batasan Implementasi Perangkat lunak XGP yang dikembangkan memiliki batasan sebagai berikut: 1. XGP mengasumsikan bahwa proses ekstraksi mendapatkan video masukan yang memang berisikan pesan di dalamnya, sehingga tidak dilakukan penanganan lebih lanjut apabila video tidak berisi pesan. 2. Apabila pesan yang didapat dari hasil ekstraksi berupa text, pesan tersebut hanya dapat ditampilkan ke layar, dan tidak dapat disimpan ke dalam file. 5.1.4 Implementasi Antarmuka Implementasi tampilan pada XGP sesuai dengan perancangan pada Subbab 4.2.1, dengan tambahan layar konfirmasi dan error. Layar konfirmasi menampilkan pesan konfirmasi, beserta tombol „Yes‟ untuk lanjut, dan tombol „No‟ untuk kembali. Layar error akan menampilkan pesan kesalahan yang terjadi, dan hanya memiliki sebuah tombol „Back‟ untuk kembali. Layar konfirmasi akan muncul apabila salah satu dari hal berikut terjadi: 1. Kembali dari menu penyisipan atau ekstraksi, ke menu utama. Konfirmasi terjadi karena proses ini akan menghapus semua informasi yang telah dimasukkan. 2. Proses penyisipan membutuhkan ukuran video yang lebih besar, sehingga dikonfirmasi apakah ingin tetap disimpan video hasil penyisipan yang memiliki sebagian pesan saja. 3. Nama file untuk video keluaran telah ada, sehingga dikonfirmasi apakah file tersebut ingin ditimpa atau tidak. Sedangkan layar error akan muncul apabila salah satu dari hal berikut terjadi: 1. Video yang dimasukkan tidak valid, yaitu memiliki codec selain H.263, atau berekstensi yang bukan „.3gp‟. 2. Terdapat masukan yang belum lengkap pada proses penyisipan atau ekstraksi. 3. Proses penyisipan atau ekstraksi tidak berhasil diselesaikan, atau mengalami error. 4. Memori tidak mencukupi.
V-4
5.2 Pengujian Perangkat Lunak Pada Tugas Akhir ini, dilakukan pengujian kebenaran perangkat lunak, mencakup proses penyisipan dan ekstraksi pesan, serta pengujian kinerja perangkat lunak, yaitu membandingkan kualitas video hasil penyisipan dengan video yang asli. Berikut ini akan dijelaskan mengenai lingkungan pengujian, kasus uji dan hasilnya masingmasing, beserta evaluasi dari hasil pengujian. 5.2.1 Lingkungan Pengujian Pengujian dilakukan pada perangkat keras notebook yang sama dengan implementasi, dan juga pada perangkat mobile phone Sony Ericsson K610i, yang dapat menjalankan aplikasi Java dengan konfigurasi CLDC 1.1 dan MIDP 2.0, serta dukungan terhadap API JSR 75. Pengujian perbandingan kualitas video juga menggunakan notebook yang sama saat implementasi. Perangkat lunak yang digunakan untuk mengekstraksi frame adalah Total Video Converter [EFF08], dan implementasi perbandingan video dengan metode SSIM menggunakan kode Matlab yang terdapat pada [WAN08]. 5.2.2 Tujuan Pengujian Terdapat dua buah jenis pengujian, yaitu pengujian kebenaran dan kinerja perangkat lunak, sehingga tujuan pada pengujian adalah sebagai berikut: 1. Menguji kebenaran validasi format video 3GP. 2. Menguji kebenaran proses penyisipan dan ekstraksi video. 3. Menguji proses penggunaan kunci. 4. Menguji dampak perubahan video setelah proses penyisipan. 5.2.3 Data Uji Berikut adalah file video 3GP yang digunakan pada pengujian: 1. “Take-off.3gp”. Berukuran 39.586 bytes, dan ukuran maksimal pesan yang dapat ditampung pada 1 LSB adalah 71 bytes. 2.
“snagItNarration.3gp”. Berukuran 425.244 bytes, dan ukuran maksimal pesan yang dapat ditampung pada 1 LSB adalah 1.664 bytes.
3. “MacVsPc.3gp”. Berukuran 1.510.692 bytes, dan ukuran maksimal pesan yang dapat ditampung pada 1 LSB adalah 8.467 bytes.
V-5 4. “MOV00123.3gp”, memiliki codec MP4 dan hanya dipakai untuk uji validasi format video. Sedangkan file pesan untuk pengujian adalah sebagai berikut: 1. “file.txt”. Berukuran 39 bytes. 2. “Readme.txt”. Berukuran 69 bytes. 3. “pic.jpg”. Berukuran 960 bytes. 4. “pic2.jpg”. Berukuran 4.702 bytes. 5.2.4 Kasus Uji Berdasarkan tujuan pengujian yang didefinisikan pada Subbab 5.2.2, maka terdapat 3 buah kasus untuk pengujian kebenaran perangkat lunak, yaitu kasus uji 1 hingga 3. Sedangkan pengujian kinerja perangkat lunak akan diuji pada kasus uji 4. Data pengujian akan menggunakan data yang telah didefinisikan pada Subbab 5.2.3. 1. Kasus uji 1 - Menguji validasi format video Pengujian ini dilakukan untuk menguji kebenaran validasi format video, sebagai video untuk masukan pada proses penyisipan dan ekstraksi. Cara yang dilakukan adalah memberikan dua jenis video input ke dalam proses penyisipan, yang memiliki codec yang berbeda. Video jenis pertama memiliki codec H.263, yang menjadi masukan yang valid, dan video jenis kedua memiliki codec yang tidak valid. Pengujian akan berhasil apabila hanya video jenis pertama saja yang dapat masuk ke dalam proses penyisipan. 2. Kasus uji 2 - Menguji kebenaran proses penyisipan dan ekstraksi Pengujian ini dilakukan untuk menguji kebenaran proses penyisipan pesan dan ekstraksi pesan. Cara yang dilakukan adalah menyisipkan pesan dengan sebuah kunci, lalu mengekstraksinya dengan kunci yang sama. Pengujian akan berhasil apabila pesan berhasil disisipkan, dan dapat diekstraksi kembali dengan benar. Proses ini juga harus menangani apabila pesan yang disisipkan hanya sebagian, yang dikarenakan ukuran pesan melebihi 3 LSB INTRA-DC pada video.
V-6 3. Kasus uji 3 - Menguji proses penggunaan kunci Pengujian ini dilakukan untuk menguji kebenaran dari penggunaan kunci, yaitu dengan cara memasukkan kunci yang salah pada saat ekstraksi. Pengujian akan berhasil apabila pesan yang diekstraksi memiliki isi yang tidak sama dengan pesan yang asli. 4. Kasus uji 4 - Menguji dampak penyisipan pada video Pengujian ini dilakukan untuk menguji kualitas dari video hasil penyisipan, yaitu dengan membandingkannya dengan video yang asli. Pembandingan ini memakai masukan dari video hasil penyisipan pada Kasus uji 2, dan menggunakan dua cara perbandingan, yaitu subjektif dan objektif. Pengujian akan berhasil apabila dari masing-masing cara, didapatkan hasil seperti berikut: 1. Pada cara subjektif, video dianggap mirip. 2. Pada cara objektif, nilai SSIM yang dihasilkan diatas 0,7. 5.2.5 Hasil Pengujian dan Evaluasi Berikut ini adalah hasil pengujian dari kasus uji yang dilakukan, beserta evaluasi dari masing-masing kasus uji. 1. Kasus uji 1 Pengujian ini mencoba memasukkan 3 buah video dengan codec H.263, dan sebuah video dengan codec MP4. Hasilnya ditunjukkan pada Tabel V-1, dimana video dengan codec H.263 dapat masuk ke dalam proses penyisipan, sedangkan video dengan codec MP4 memunculkan pesan error. Tabel V-1 Hasil Pengujian Kasus Uji 1
Masukan video “Take-off.3gp” “snagItNarration.3gp” “MacVsPc.3gp” “MOV00123.3gp”
Codec H.263 H.263 H.263 MP4
Hasil validasi Valid Valid Valid Tidak valid
Kesimpulan Diterima Diterima Diterima Diterima
Dari hasil tersebut, terbukti bahwa XGP telah berhasil menjalankan fungsi parsing video 3GP beserta codec H.263, sehingga validasi format video, atau pengambilan nilai dalam video dapat dilakukan dengan baik.
V-7 2. Kasus uji 2 Pengujian ini dilakukan dengan cara menyisipkan pesan ke dalam video, kemudian mengekstraksinya kembali. Video yang menjadi media adalah video yang valid dari hasil Kasus uji 1, dan pesan masukannya adalah semua file pesan yang terdefinisi pada Data uji. Kunci yang digunakan adalah string 123, dan video keluaran diberi nama baru yang sesuai dengan file pesan. Hasil penyisipan pesan ini ditunjukkan pada Tabel V-2. Beberapa frame dari video asli dan video hasil perbandingan dapat dilihat pada Lampiran D. Tabel V-2 Hasil Pengujian Kasus Uji 2 (Penyisipan)
Masukan video “Takeoff.3gp”
Masukan pesan “file.txt” “Readme.txt” “pic.jpg”
Masukan kunci 123 123 123
“pic2.jpg”
123
“snagItNarr ation.3gp”
“file.txt” “Readme.txt” “pic.jpg” “pic2.jpg”
123 123 123 123
“MacVsPc. 3gp”
“file.txt” “Readme.txt” “pic.jpg” “pic2.jpg”
123 123 123 123
Keluaran video “Take-offFile.3gp” “Take-offReadme.3gp” “Take-offPic.3gp”, namun hanya menyisipkan sebagian pesan “Take-offPic2.3gp”, namun hanya menyisipkan sebagian pesan “snagItNarrationFile.3gp” “snagItNarrationReadme.3gp” “snagItNarrationPic.3gp” “snagItNarrationPic2.3gp”, namun hanya menyisipkan sebagian pesan “MacVsPcFile.3gp” “MacVsPcReadme.3gp” “MacVsPcPic.3gp” “MacVsPcPic2.3gp”
Setelah proses penyisipan selesai, dilakukan proses ekstraksi dari masingmasing video. Hasil dari proses ekstraksi dapat dilihat pada Tabel V-3. Kunci sama pada proses penyisipan, yaitu string „123‟, sehingga diharapkan isi pesan yang dihasilkan juga sama.
Tabel V-3 Hasil Pengujian Kasus Uji 2 (Ekstraksi)
Keluaran video “TakeoffFile.3gp” “TakeoffReadme.3gp” “Take-
Masukan kunci 123 123 123
Keluaran
Kesimpulan
“file_1.txt”, dengan isi sama dengan “file.txt” “Readme_1.txt”, dengan isi sama dengan “Readme.txt” “pic_1.jpg”, dengan isi separuh
Diterima Diterima Diterima
V-8 Keluaran video offPic.3gp” “TakeoffPic2.3gp” “snagItNarration File.3gp” “snagItNarration Readme.3gp” “snagItNarration Pic.3gp” “snagItNarration Pic2.3gp” “MacVsPcFile.3 gp” “MacVsPcRead me.3gp” “MacVsPcPic.3 gp” “MacVsPcPic2. 3gp”
Masukan kunci
Keluaran dari “pic.jpg” “pic2_1.jpg”, dengan isi separuh dari “pic2.jpg” “file_2.txt”, dengan isi sama dengan “file.txt” “Readme_2.txt”, dengan isi sama dengan “Readme.txt” “pic_2.jpg”, dengan isi sama dengan “pic.jpg” “pic2_2.jpg”, dengan isi separuh dari “pic2.jpg” “file_3.txt”, dengan isi sama dengan “file.txt” “Readme_3.txt”, dengan isi sama dengan “Readme.txt” “pic_3.jpg”, dengan isi sama dengan “pic.jpg” “pic2_3.jpg”, dengan isi sama dengan “pic2.jpg”
123 123 123 123 123 123 123 123 123
Kesimpulan
Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima
Dari hasil pengujian, terbukti bahwa XGP sudah berhasil menjalankan proses penyisipan dan ekstraksi dengan benar. Semua pesan yang menjadi masukan telah berhasil disisipkan, dan kemudian dapat diekstraksi dengan baik. Pesan yang diekstraksi sama dengan pesan yang asli, dan kunci yang digunakan pada proses penyisipan dan ekstraksi juga sama. Namun waktu yang dibutuhkan pada beberapa tes cukup lama, dan sebanding dengan besarnya ukuran pesan. Hal ini dikarenakan pembacaan video dan pesan dilakukan secara bagian per bagian, dan tidak secara langsung membaca file secara utuh. 3. Kasus uji 3 Pengujian ini dilakukan dengan cara melakukan ekstraksi dari video hasil penyisipan pada Tabel V-2, namun dengan kunci yang berbeda, yaitu string „456‟. Hasil dari pengujian ini diperlihatkan pada Tabel V-4. Tabel V-4 Hasil Pengujian Kasus Uji 3
Keluaran video “TakeoffFile.3gp” “Take-
Masukan kunci 456 456
Keluaran
Kesimpulan
“file_4.txt”, dengan isi berbeda dari “file.txt” “Readme_4.txt”, dengan isi
Diterima Diterima
V-9 Keluaran video offReadme.3gp” “TakeoffPic.3gp” “TakeoffPic2.3gp” “snagItNarration File.3gp” “snagItNarration Readme.3gp” “snagItNarration Pic.3gp” “snagItNarration Pic2.3gp” “MacVsPcFile.3 gp” “MacVsPcRead me.3gp” “MacVsPcPic.3 gp” “MacVsPcPic2. 3gp”
Masukan kunci 456 456
456 456 456 456 456 456 456 456
Keluaran berbeda dari “Readme.txt” “pic_4.jpg”, dengan isi berbeda, dan berbeda ukuran dari “pic.jpg” “pic2_4.jpg”, dengan isi berbeda, dan berbeda ukuran dari “pic2.jpg” “file_5.txt”, dengan isi berbeda dari “file.txt” “Readme_5.txt”, dengan isi berbeda dari “Readme.txt” “pic_3.jpg”, dengan isi berbeda dari “pic.jpg” “pic2_3.jpg”, dengan isi berbeda dari “pic2.jpg” “file_6.txt”, dengan isi berbeda dari “file.txt” “Readme_6.txt”, dengan isi berbeda dari “Readme.txt” “pic_4.jpg”, dengan isi berbeda dari “pic.jpg” “pic2_4.jpg”, dengan isi berbeda dari “pic2.jpg”
Kesimpulan
Diterima Diterima
Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima
Dari hasil pengujian, terbukti bahwa XGP telah dapat melakukan aspek penggunaan kunci dengan baik. Proses ekstraksi dengan kunci yang salah dapat ditangani, yaitu dengan menghasilkan pesan yang berbeda dengan pesan yang asli. Namun karena header pesan pada video tidak diacak, yaitu tidak tergantung pada kunci, maka informasi yang terdapat pada header tetap dapat diambil walaupun kuncinya berbeda. Sehingga panjang pesan dapat diketahui, dan apabila pesan tersebut berbentuk file, maka file pesan akan terbentuk dengan isi yang berbeda.
4. Kasus uji 4 Pengujian ini dilakukan dengan cara membandingkan video hasil penyisipan pada Tabel V-2, dengan video masukan yang bersesuaian. Frame dari kedua video yang ingin dibandingkan tersebut diekstraksi terlebih dahulu, menjadi gambar berformat JPG. Kemudian dicari nilai SSIM dari masing-masing
V-10 gambar, lalu diambil nilai rata-ratanya, yaitu MSSIM. Hasil pengujian untuk kasus uji ini dapat dilihat pada Tabel V-5. Tabel V-5 Hasil Pengujian Kasus Uji 4
Masukan video “Take-off.3gp”
“snagItNarration.3gp”
“MacVsPc.3gp”
Masukan video perbandingan “Take-offFile.3gp” “Take-offReadme.3gp” “Take-offPic.3gp” “Take-offPic2.3gp” “snagItNarrationFile.3gp” “snagItNarrationReadme.3gp” “snagItNarrationPic.3gp” “snagItNarrationPic2.3gp” “MacVsPcFile.3gp” “MacVsPcReadme.3gp” “MacVsPcPic.3gp” “MacVsPcPic2.3gp”
Nilai MSSIM 0.99665 0.99585 0.97922 0.98025 0.99964 0.99997 0.99957 0.99133 0.99987 0.99990 0.99800 0.99627
Kesimpulan Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima
Pada cara subjektif, hampir semua video hasil penyisipan dianggap mirip dengan video yang asli, kecuali “Take-offPic.3gp” dan “Take-offPic2.3gp”, dimana warna di beberapa bagian mengalami perubahan yang cukup signifikan. Hal tersebut disebabkan oleh karena kedua video ini mendapatkan perubahan pada semua 3 LSB. Pada cara objektif, yaitu dari Tabel V-5, semua perbandingan memperoleh nilai SSIM di atas 0,7. Hal ini membuktikan bahwa proses penyisipan dengan metode DCT Modification ini tidak mengubah kualitas struktur video secara signifikan. Dan tingginya nilai ini dikarenakan resolusi video 3GP yang cukup kecil, dan SSIM akan lebih akurat dengan resolusi frame yang lebih tinggi, sehingga struktur frame lebih terlihat. Walaupun demikian, hal tersebut masih konsisten dengan persepsi manusia yang tidak dapat melihat perbedaan dari resolusi video atau frame yang kecil. Dari semua hasil pengujian yang telah dilakukan, perangkat lunak XGP dapat menjalankan semua fungsi dan spesifikasi dengan benar. Dan penurunan kualitas video yang dihasilkan juga tidak terlalu signifikan, yang bergantung kepada besarnya ukuran pesan.