Tuesday, June 19, 2007

Permasalahan Pada Software Testing


Keberhasilan suatu pengembangan software sangat ditentukan oleh hasil dari pengujian. Jika proses pengujian dapat dilakukan dengan baik, maka suatu software yang telah melewati pengujian akan memiliki kualitas yang dapat dipertanggungjawabkan.

Pekerjaan programmer adalah membuat program berdasarkan spesifikasi proses yang ditetapkan oleh perancang aplikasi. Hasil dari pekerjaan ini tentu adalah program yang dapat dijalankan, baik secara mandiri atau sebagai modul yang digunakan oleh modul atau program lain. Program yang dihasilkan, seharusnya terbebas dari kesalahan sintaks, tetapi juga harus bebas dari kesalahan logika. Untuk mengetahui bahwa program yang dibuat sudah terbebas dari kesalahan, maka harus dilakukan pengujian terhadap program tersebut.

Permasalahan
Permasalahan yang sering timbul dalam suatu proses pengembangan terutama dalam hal pengujian, contoh kasusnya adalah :


  • Programmer tidak melakukan pengujian dengan baik dan benar. Terkadang programmer hanya memperbaiki program, kemudian melakukan kompilasi. Jika kompilasi sudah tanpa kesalahan, programmer menganggap bahwa program telah benar.

  • Spesifikasi program dari perancang aplikasi tidak selalu disertai dengan kasus uji, sehingga sering kali pengujian dilakukan oleh programmer tidak seperti yang diharapkan. Jadi ala kadarnya.
Pengujian (testing)
Salah satu tahapan pengembangan software yang harus dilalui adalah pengujian. Pengujian program harus dilakukan pertama kali oleh pemrogram itu sendiri, setelah itu baru diserahkan dan dilakukan pengujian oleh penguji (tester) program. Umumnya, pengujian yang dilakukan oleh pengembang dilakukan pada tahap akhir dari proses pengembangan, setelah semua modul aplikasi dikembangkan.

User Acceptance Test (UAT) atau Uji Penerimaan Pengguna adalah suatu proses pengujian oleh pengguna yang dimaksudkan untuk menghasilkan dokumen yang dijadikan bukti bahwa software yang telah dikembangkan telah dapat diterima oleh pengguna, apabila hasil pengujian (testing) sudah bisa dianggap memenuhi kebutuhan dari pengguna. Hasil dari UAT adalah dokumen yang menunjukkan bukti pengujian, berdasarkan bukti pengujian inilah dapat diambil kesimpulan, apakah software yang diuji telah dapat diterima atau tidak.
Bahan untuk pengujian harus disiapkan oleh perancang aplikasi atau pengguna. Bahan untuk pengujian suatu modul program akan terdiri atas banyak data dan prosedur. Setiap data dan prosedur disebut sebagai kasus uji (test case).
Satu modul akan memiliki banyak kasus uji. Mengapa? Karena di dalam suatu program atau modul, pada umumnya, di dalamnya akan terdapat lebih dari satu prosedur atau fungsi. Setiap prosedur dan fungsi akan memiliki kegunaan sendiri, maka sudah seharusnya setiap fungsi atau prosedur harus diuji. Pengujian pada level prosedur atau fungsi disebut sebagai pengujian pada level unit.

Aspek pengujian meliputi:
pemeriksaan error, masih ada atau tidak
pemeriksaan apakah software telah sesuai dengan requirement atau belum
Untuk dapat melakukan pengujian dengan benar dan dapat dipertanggungjawabkan, maka harus disusun skenario untuk pengujian terlebih dahulu. Skenario pengujian adalah dokumen yang berisi persiapan dan langkah-langkah yang harus dilakukan untuk menguji software secara terinci. Langkah-langkah ini menunjukkan aspek-aspek software yang harus diuji.

Persiapan Pengujian Software
Pengujian software (software testing) membutuhkan persiapan, sebelum pengujian dilakukan. Mengapa? Karena proses testing harus dilakukan secara sistematis, tidak bisa secara sembarang, karena software yang dihasilkan harus bebas dari error, untuk mengurangi resiko kerugian yang akan diderita oleh penggunanya. Produk software harus menguntungkan penggunanya pada saat digunakan.

Berikut persiapan yang dapat dilakukan untuk dapat melakukan proses testing:

  • membuat checklist
    list yang akan ditest
    list requirement
    list rancangan
    list spesifikasi
    list manual, jika sudah ada - biasanya diperlukan untuk pengujian oleh user
  • pembuatan test case
    merupakan elemen dasar yang harus ditesting
    merupakan list yang independent
  • pembuatan grup test case
    kumpulan dari beberapa test case
    merupakan list yang akan memiliki status hasil test
  • pembuatan modul test
    pembuatan skenario testing
    terdiri atas beberapa grup test case
    diasosiasikan dengan fungsionalitas modul
    mengacu kepada dokumen requirement dan desain/spec program
  • pembuatan package testing
  • pembuatan produk test

Dengan dimilikinya checklist, kita akan dapat mengetahui progress dari kegiatan testing itu sendiri. Mana yang sudah selesai dilakukan test, mana yang belum. Mana yang sudah dilakukan test pun, bisa diketahui mana yang benar modulnya sudah selesai, dan mana yang belum selesai. Jadi tidak sekedar mengetahui mana yang sudah dan mana yang belum.

Proses Pengujian
Proses pengujian haruslah sistematis, dan jika mungkin dibantu dengan menggunakan software, yang bisa membantu dalam proses pengujian. Proses pengujian tidak harus dilakukan secara manual, tetapi juga harus bisa dilakukan dengan diotomatisasi.

Proses pengujian software dapat dibedakan menjadi:
pengujian manual (manual testing)
pengujian diotomatisasi (automated testing)
gabungan manual dan otomatis manual dan otomatis

Pengujian manual merupakan pengujian yang umum dilakukan oleh banyak tester. Proses pengujian manual membutuhkan suatu prosedur baku, ketekunan, dan ketelitian dari orang yang berperan sebagai penguji (tester). Mengapa? Karena proses pengujian merupakan proses yang berulang, dan bisa jadi sangat menjemukan.

Pengujian yang diotomatisasi merupakan proses pengujian yang menggunakan alat bantu, dalam hal ini software untuk pengujian (testing software). Proses pengujian dirancang agar dapat dilakukan oleh software. Kita bisa membuat program dengan software untuk pengujian, agar proses pengujian dapat dilakukan secara otomatis. Software pengujian sangat diperlukan untuk membantu proses pengujian yang sifatnya berulang dan banyak sekali.

Gabungan antara manual dan otomatis, merupakan proses pengujian yang ideal, karena tetap saja bahwa proses pengujian membutuhkan keputusan manusia sebagai penguji. Banyak pertimbangan dalam proses pengujian tidak bisa dimasukkan ke dalam software untuk pengujian yang diotomatisasi.

Suatu proses pengujian software (software testing process) memerlukan software yang bisa membantu proses pengujian.

Proses pengujian yang umum dilakukan adalah dengan menjalankan software aplikasi yang telah selesai dibuat oleh pemrogram. Kemudian aplikasi dicoba dari awal sampai dengan akhir dengan menggunakan langkah (skenario) dan data yang telah disiapkan.

Secara mudah dan sederhana, suatu aplikasi akan dianggap telah lulus pengujian, apabila setelah dicoba, aplikasi dapat merekam dan memroses data yang dimasukkan, kemudian menghasilan luaran sesuai dengan yang diharapkan, tanpa ada kesalahan sedikitpun.

Pengujian software tidak dilakukan oleh pemrogram saja, tetapi juga harus melibatkan pihak ketiga, pihak yang independent, yang akan memberikan justifikasi bahwa software aplikasi yang dibuat telah lulus dari pengujian.

Permasalahan yang sering timbul apabila hasil dari proses pengujian yang masih bermasalah, dalam artian bahwa software aplikasi belum lulus uji, adalah bagaimana menunjukkan di mana letak kesalahan yang menyebabkan software belum lulus uji.

Pada proses pengujian yang masih konvensional, manual, tanpa ada bantuan software pendukung untuk pengujian, penguji melaporkan hasil pengujiannya dengan menggunakan laporan secara lisan. Akibatnya adalah bahwa seringkali laporan kesalahan tersebut tidak dapat tersampaikan dengan baik, atau bahkan sering kali terlewatkan atau terlupakan sebagai bagian pekerjaan programmer yang harus memperbaikinya.

Pada tingkatan berikutnya, tester telah melakukan pengujian dengan memberikan laporan secara tertulis deskriptif. Pemrogram dapat menggunakan laporan ini untuk bekerja memperbaiki program, sehingga pemrogram bisa memiliki daftar modul yang harus diperbaiki. Pemrogram bisa memeriksa mana saja yang sudah dan mana yang belum diperbaiki. Masalh masih timbul, karena secara deskriptif, kesalahan yang ada tidak dapat dibayangkan di mana letaknya.

Pada tingkatan berikutnya, penguji harus menggunakan software yang dapat merekam gambar dari kesalahan yang terjadi. Penguji dapat melakukan capture (menangkap dan menyimpan) screen yang menunjukkan program yang diuji pada saat ‘error’. Dengan adanya gambar yang menunjukkan kesalahan, pemrogram dapat langsung mengetahui di mana letak kesalahannya.

Proses capture screen dapat menggunakan fasilitas dari sistem operasi, jika pengguna menggunakan Windows, maka pengguna dapat dengan mudah melakukan penekanan tombol keyboard PrtSc (PrintScreen).

Akan tetapi seringkali terjadi, timbulnya kesalahan sewaktu-waktu. Pada kasus seperti ini, maka penguji harus dapat melakukan pengujian dengan melakukan proses pengujian secara lengkap terekam. Setiap langkah dari skenario diikuti dan direkam. Penguji dapat melaporkan kesalahan yang terjadi secara lebih lengkap. Pemrogram dapat mempelajari kejadian kesalahan dengan lebih teliti.

Jika kita lihat permasalahan di atas, maka kita membutuhkan suatu software yang bisa merekam proses pengujian dari awal sampai dengan akhir. Software untuk pengujian harus dapat membantu dari proses pembuatan skenario, pelaksanaan skenario, dan proses pelaporan hasil pengujian.

Untuk membantu mengelola skenario sampai dengan merekam proses dan hasil pengujian, maka kita dapat menggunakan software:


Testlink (http://testlink.org/) Software berbasis web yang digunakan untuk membuat membuat suatu daftar kasus uji yang akan didaftarkan pada setiap skenario dari komponen/modul dari suatu produk. Daftar kasus uji untuk setiap skenario untuk pengujian. Dari data inilah tester akan melakukan pengujian, dan menuliskan setiap pengujian yang dilakukan ke dalam daftar.

Bugzilla (http://www.bugzilla.org/) (Mantis - http://www.mantisbt.org) Software ini harus dihubungkan dengan Testlink, digunakan untuk melakukan perekaman data modul yang belum lulus uji, yang harus diperiksa dan diperbaiki oleh pemrogram. Pemrogram harus bekerja memperbaiki dan melaporkan hasil uji ini. Tester akan melihat data hasil uji dan perbaikan dari programmer, jika masih belum benar, tester akan menuliskan bahwa program masih tetap harus diperbaiki.
screen capture atau yang lebih baik adalah video capture - avi recorder

(http://www.bobyte.com/AviScreen/index.asp) Software ini sangat dibutuhkan untuk menyimpan bukti proses pengujian dilakukan. Apabila terjadi kesalahan, maka bagaimana terjadinya kesalahan untuk rekonstruksi akan dapat dilihat oleh pemrogram. Penggunaan video capture akan sangat bermanfaat, karena pemrogram dapat dengan mudah menjalankan video ini untuk melakukan rekonstruksi bagaimana kesalahan bisa terjadi, di mana dan kapan terjadi errornya.

Konsekuensi dari proses pengujian ini adalah kita harus memiliki space harddisk yang cukup memadai, untuk dapat merekam semua proses yang dilakukan selama proses pengujian. Jika pengujian telah selesai, maka rekaman hasil pengujian dapat dihapus, tetapi sebaiknya, sebelumnya dihapus terlebih dahulu.

Semoga Uraian ini dapat bermanfaat bagi para mengembang software

Monday, June 18, 2007

Cyber University,
Teknologi Informasi, dan
Perguruan Tinggi di Indonesia


Pendahuluan
Perkembangan teknologi informasi, dan Internet khususnya, telah menciptakan beberapa “produk” baru. Paling tidak, ada istilah-istilah baru yang mulai muncul seperti electronic commerce atau e-commerce, eBook, e-learning dan sejumlah kata dengan awalan e-. Selain kata-kata yang berawalan e-, muncul juga istilah yang menggunakan kata cyber, seperti cyberlaw dan cyber university. Tulisan ini akan bercerita sedikit mengenai cyber university. Kata cyber sendiri muncul dari kata cybernetics1, yang mana dia menjelaskan sebuah cara untuk mengendalikan (robot) dari jarak jauh. Jadi kata cyber memberikan konotasi “pengendalian” dan “jarak jauh”. Konsep cyber university terkait dengan hal lain seperti distance learning, cyber campus, virtual university, e-education, e-classes dan bentuk kelas jarak jauh lainnya yang memberikan gelar (degree) kepada pesertanya. Cyber university menggunakan komputer dan jaringan komputer (Internet, LAN, WAN) untuk melaksanakan kegiatan atau fungsinya. Dalam sebuah cyber university ada:

koleksi materi dalam format digital (silabus, buku teks, materi kuliah, pekerjaan rumah, latihan, ujian, bacaan referensi lainnya, eBooks)
bulletin / discussion board untuk diskusi secara asinkron (dimana orang tidak harus ada atau hadir pada saat yang sama)
chat room untuk melakukan diskusi secara real time (mode sinkron dimana orang yang hadirlah yang dapat berdiskusi)
cyber / virtual class


Cyber university di luar negeri
Di luar negeri, konsep kuliah jarak jauh sudah lama diterapkan dengan adanya program korespondensi. Mahasiswa dapat mengikuti program ini melalui surat konvensional. Penggunaan teknologi informasi dan Internet merupakan kelanjutan logis dari kuliah jarak jauh konvensional.
Cyber university berbeda dengan program korespondensi. Pada program cyber university, interaksi dan aktivitas bersama (collaboration) lebih banyak dilakukan dibandingkan dengan program korespondensi konvensional yang cenderung self pace. Untuk itu perlu ada perubahan (adjustment) pendekatan karena dia tidak langsung merupakan lanjutan yang linier dari program kulai jarak jauh korespondensi.


Cyber university di Indonesia
Di Indonesia sudah ada Universitas Terbuka (UT) yang menyelenggarakan program jarak jauh. Namun saya belum mengetahui kesuksesan (dan permasalahan) dari program UT ini. Jika pelaksanaan kuliah jarak jauh UT ini masih mengalami masalah, maka dapat diprediksi bahwa cyber university pun akan mengalami masalah. Sebelum kita “berlari” dengan cyber university, kita harus belajar “merangkak” dengan kuliah jarak jauh ini.
Ada beberapa permasalahan pendidikan di Indonesia yang berbeda dengan negara lain. Salah satu masalah yang besar adalah “kegilaan” kita terhadap gelar sehingga cara apapun ditempuh untuk mendapatkan gelar. Termasuk dalam cara tersebut adalah jual beli gelar. Ditakutkan bahwa cyber university ini hanya akan menjadi tempat jual beli gelar saja.
Banyak orang yang masih skeptis dengan cyber university di Indonesia. Kualitas pendidikan konvensional dengan tatap muka saja masih rendah, apalagi jika pendidikan dilakukan dari jarak jauh tanpa tatap muka. Mahasiswa pada universitas konvensional masih menghadapi kesulitan untuk menyerap ilmu. Apakah ini dikarenakan dosen pada universitas yang bersangkutan tidak pandai menjelaskan? Jika memang demikian, mungkin cyber university dapat membantu dengan memberikan pilihan atua memberikan suplemen dosen. Ataukah mahasiswa yang malas untuk berusaha dan belum dewasa dalam mengatur cara belajarnya (waktu belajar)? Jika ini masalahnya, maka cyber university tidak memecahkan masalah dan bahkan akan memperburuk situasi. Inti utama dari semuanya ini adalah adanya kekhawatiran bahwa cyber university ini tidak membawa manfaat malah menambah masalah. Kendala-kendala implementasi cyber university di Indonesia yang lebih rinci akan dibahas pada bagian yang terpisah.

Analogi Dunia Pendidikan dengan Dunia Musik
Untuk mencoba lebih mengerti tentang permasalahan yang akan terjadi dengan cyber university atau “pendidikan digital”, saya ingin mencoba menganalogikan dunia pendidikan dengan dunia musik. Analogi ini saya ambil karena ada beberapa persamaan, seperti misalnya materi musik dan materi pendidikan dapat dibuat dalam format digital dengan cara di-digital-kan (digitalized), atau persamaan dalam live show musik dan kuliah tatap muka. Banyak hal yang dapat dipelajari dari analogi ini.

Dunia Pendidikan Digital
Dunia pendidikan (digital) akan mengalami perjalan yang mirip dengan dunia musik. Secara umum dunia ini dimulai dengan live teaching dengan ermasalahan yang sama dengan live show seperti biaya yang mahal, jangkauan
pendidikan yang terbatas, terbatasnya jam kuliah, sulit mendapatkan materi (guru) yang berkualitas. Mau tidak mau, akan muncul “industri rekaman pendidikan”.

Peran Teknologi Informasi dalam Cyber University
Teknologi informasi beserta dengan teknologi komputer dan telekomunikasi merupakan pendukung terciptanya cyber university.

Komputer
Kemampuan komputasi (computing power) dari komputer meningkat dua (2) kali lipat setiap delapan belas (18) bulan sesuai dengan hukum Moore. Prosesor Intel Pentium IV sudah memiliki kemampuan yang lebih dari cukup untuk keperluan cyber university. Harganya pun sudah dapat dikatakan tidak terlalu mahal. Kemampuan ini akan terus meningkat dengan adanya miniaturisasi komponen dengan adanya nanotechnology. Dengan kata lain, teknologi sudah siap dan menanti untuk aplikasi.

Perangkat Pengakses Informasi
Perangkat pengakses informasi sudah tidak dibatasi lagi oleh komputer desktop. Laptop mulai hilang digantikan dengan notebook yang tipis dan ringan. Muncul juga perangkat Personal Digital Assistant (PDA) atau palm top yang dapat digenggam yang dapat mengakses informasi seperti layaknya sebuah komputer biasa. Belum lagi perangkat cellphone atau handphone yang juga mulai populer (dan sangat murah). Perangkat pengakses informasi sudah tersedia dan siap digunakan.

Penyimpanan Data
Teknologi penyimpanan data (storage) juga meningkat sehingga memungkinkan penyimpanan data dalam jumlah yang besar ke dalam sebuah perangkat dalam ukuran kecil. Harddisk saat ini berukuran MegaBytes (MB). Bahkan storage dalam ukuran TerraBytes (TB) juga sudah lazim digunakan pada data center. Storage besar ini memungkinkan kita menyimpan materi digital dari “rekaman kuliah”. Tidak ada lagi alasan kekurangan tempat penyimpanan.

Jaringan (Komputer)
Jaringan komputer atau networking mulai ada dimana-mana (ubiquitous). Perguruan tinggi mulai dilengkapi dengan Local Area Network (LAN) dan terhubung ke Internet. Akses Internet mulai banyak didapati di rumahrumah, kantor, dan warnet. Harga akses ke Internet pun mulai terjangkau.

eBooks dan perpustakaan digital
Materi tulisan dalam bentuk digital mulai muncul dalam bentuk eBooks. Pembaca eBook dalam bentuk hardware dan software mulai banyak tersedia. Buku-buku sudah dapat dibaca dalam bentuk elektronik. Bahkan sudah ada perpustakaan digital yang menyediakan buku untuk dipinjam dengan pembaca eBook melalaui jaringan komputer. Topik ini menjadi pembahasan sendiri

Kendala Penerapan Cyber University di Indonesia
Ada beberapa kendala dalam penerapan atau implementasi cyber university di Indonesia.
Kurangnya ketersediaan materi pengajaran dalam Bahasa Indonesia. Inisiatif beberapa cyber university di Indonesia lebih banyak menggunakan materi dari luar negeri. Bahkan ada cyber university yang sebenarnya hanya outlet bagi perguruan tinggi di luar negeri. Masih perlu inisiatif-inisiatif untuk membuat materi pengajaran dalam bentuk digital.
Kurangnya kemampuan berbahasa Inggris. Karena materi dalam bahasa Indonesia belum banyak, terpaksa kita akan banyak menggunakan materi dalam bahasa Inggris (seperti halnya penggunaan buku teks berbahasa Inggris yang saat ini kita lakukan). Untuk itu pemahaman bahasa Inggris merupakan salah satu kebutuhan. Mahasiswa diharapkan dapat mengerti bahasa Inggris.
Akses Internet belum merata dan masih relatif mahal di beberapa tempat. Meskipun trend yang adalah adalah akses Internet mulai menyebar dengan harga yang mulai murah, namun pada kenyataannya masih banyak tempat di Indonesia yang belum memiliki saluran telepon. Bahkan beberapa tempat di Indonesia masih belum miliki listrik.
Guru, dosen, atau staf pengajar belum siap. Bila pengajar belum siap, maka proses penyampaian materi kuliah akan terhambat. Masalah ini diharapkan dapat berangsur-angsur terselesaikan. Namun masalah ini tidak dapat hilang begitu saja tanpa ada usaha untuk menghilangkannya. Untuk itu perlu ada upaya untuk meningkatkan kemampuan guru, dosen, atau staf pengajar.
Proses belajar cara baru ini membutuhkan waktu untuk belajar. Ada learning process yang harus dilalui.
Perijinan. Siapa saja yang berhak menyelenggarakan cyber university? Hal ini terkait dengan standar mutu. Pemerintah akan menerapkan standar untuk menjaga mutu dari lulusan cyber university ini sehingga diperkirakan akan banyak “hambatan” di sisi perijinan.

Ancaman atau Kesempatan
Cyber university dapat menjadi ancaman (threat) atau kesempatan (opportunity) bagi perguruan tinggi di Indonesia. Jika tidak siap, maka cyber university ini dapat menjadi ancaman. Perguruan tinggi dari tempat lain (dan bahkan dari luar negeri) dapat datang ke tempat anda dan mengambil mahasiswa setempat. Hal ini merupakan ancaman berat bagi perguruan tinggi setempat. Namun untuk terjun langsung mengimplementasikan cyber university tidak mudah. Untuk itu fenomena cyber university ini perlu dicermati.
Paling tidak, cyber university dapat dimulai dengan sharring resources dari beberapa universitas. Materi pengajaran dapat dikembangkan bersamasama untuk mengurangi beban biaya. Kualitas dari perguruan tinggi masingmasing dapat ditingkatkan bersama-sama dengan mengambil pelajaran terbaik.

Penutup
Suka atau tidak suka, fenomena cyber university ini sudah muncul. Ada dampak positif dan negatif dari fenomena ini. Hal ini harus kita cermati bersama-sama. Jangan sampai cyber university lebih banyak menghasilkan masalah dibandingkan dengan manfaat. Misalnya, jangan sampai cyber university ini dijadikan tempat jual beli gelar. Mudah-mudahan tulisan singkat ini dapat memberikan wawasan terhadap fenomena cyber university.