Pengujian Software Instalasi

Setiap software aplikasi yang telah berhasil dibuat oleh suatu tim pengembang software, perlu dibuatkan program untuk instalasinya (setup disk).

Program instalasi sangat diperlukan untuk memudahkan software aplikasi yang dibuat menjadi lebih mudah untuk dipasang di komputer pengguna. Tentu saja pemasangan harus oleh pengguna itu sendiri, setidaknya bukan oleh tim pengembang itu sendiri yang harus memasangnya.

Salah satu pengujian yang harus dilakukan kepada software adalah pengujian kepada program instalasi yang dibuat untuk software tersebut. Pengujian ini dimaksudkan untuk memastikan apakah aplikasi yang telah dibuat dapat dengan mudah dipasang di komputer pengguna atau tidak.

Read the rest of this entry »

Advertisements

Software Untuk Otomasi Program dan Otomasi Pengujian

Ternyata pemilihan keyword pada saat ‘searching’ di Google benar-benar sangat memperngaruhi hasil. Sampai dengan tahun 2006 lalu, penulis tidak berhasil mendapatkan suatu link yang membawa kepada proses otomasi di lingkungan Windows. Penulis pada saat itu membutuhkan software untuk melakukan otomasi pengujian software yang freeware.

Penulis baru mendapatkan ‘mainan’ baru untuk bisa melakukan otomasi pengujian dengan menggunakan software yang tepat guna, yaitu AutoIt. Proses mendapatkannya pun tidak sengaja, dan penulis sendiri tidak ingat kapan mendapatkan link ini. Read the rest of this entry »

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.

Pekerjaan persiapan juga membutuhkan software yang dapat membantu proses persiapan testing ini. Yang paling sederhana adalah dengan menggunakan Excel, jika memungkin menggunakan aplikasi yang dirancang khusus. Produk yang open source adalah TestLink.

Profesi Software Tester

Profesi software tester (penguji software ) merupakan kelompok profesi yang dapat dikatakan masih baru di dalam dunia software; walaupun sebenarnya dalam dunia nyata pengembangan software, pekerjaannya ada dan sudah dilakukan, tetapi masih belum dipisahkan secara khusus. Umumnya melekat kepada pemrogram untuk melakukan pengujian software.

Software tester dalam pengertian umum adalah orang yang melakukan proses pengujian software. Software yang diuji, bisa software yang sedang dikembangkan, bisa juga software yang sudah jadi, yang dijual di toko (pasar).

Profesi ini dulu masih dipandang sebelah mata, sering diabaikan, bahkan tidak pernah dilakukan oleh pengembang software.

Tetapi dengan semakin meningkatnya kompleksitas sistem yang dikembangkan, dan tuntutan akan mutu dan layanan, maka profesi ini menjadi sangat penting dan harus ada. Software tester dapat dipandang sebagai pengguna software; yang akan melakukan pengujian software secara menyeluruh, dari proses instalasi sampai dengan penggunaannya, dengan semua menu/fasilitas software dicoba semua.

Sangatlah ironi, saat ini, jika suatu perusahaan pengembang software belum memiliki orang atau tim khusus untuk menjadi software tester. Perusahaan pengembang software tidak boleh mengandalkan pemrogramnya untuk melakukan pengujian software yang dikembangkan oleh pemrogram itu sendiri. Mengapa? Karena hasil pengujian oleh pemrogram itu sendiri, bisa jadi tidak akan objektif. Sudut pandang pengujian pemrogram dalam menguji software akan berbeda dengan sudut pandang penguji sebagai pengguna.

Software tester, jika memungkinkan, per orangan atau tim yang berposisi sebagai pihak ketiga. Mengapa? Pihak ketiga diharapkan lebih netral, tidak memiliki konflik of interest, sehingga bisa lebih objektif.

Siapa saja yang bisa software tester?

Tidak ada ketentuan baku, tentang siapa yang bisa menjadi software tester, karena berhubungan dengan tahap pengembangan dari software yang sedang dikembangkan. Jika software masih dalam tahap pengembangan, maka tester haruslah orang yang memahami proses bisnis yang akan dibantu proses kerjanya dan orang yang memiliki penguasaan terhadap teknologinya. Jika sudah selesai dan akan dioperasionalkan, maka tester bisa penggunanya.

Pelatihan formal tentang proses pengujian sebaiknya harus dibekalkan kepada setiap software tester. Mengapa? Tentu saja agar tester memiliki pengetahuan dasar tentang bagaimana melakukan proses pengujian software yang benar.

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

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.

Perekaman Proses Pengujian Software

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.

Sekilas Tentang Penguji Software?

Penguji software (software tester) kini merupakan profesi khusus di dalam suatu organisasi pengembangan software. Dulu posisi ini dianggap tidak memiliki kebanggaan, tetapi kini profesi ini sudah memiliki tempat tersendiri, dan dapat dikatakan sangat penting.

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.

Suatu software sebelum dilepas ke pasar, software harus melewati proses pengujian. Pengujian software dilakukan oleh programmer, sebagai penguji pertama kali. Setelah programmer menguji bahwa software yang dibuatnya telah melewati pengujian oleh programmer itu sendiri, softwre harus diuji oleh penguji software. Penguji software akan mencoba menggunakan software yang dibuat oleh programmer dengan berbagai macam cara, dari sekedar mencoba aplikasi apakah bisa menyelesaikan masalah sesuai dengan tujuan dari pembuatan software itu sendiri, sampai dengan menguji apakah software tersebut tahan terhadap penggunaan yang asal-asalan.

Setiap penguji software yang berpengalaman, akan memiliki cara pengujian yang efisien dan efektif. Langkah demi langkah pengujian, dan bahan-bahan untuk melakukan pengujian selalu disiapkan dengan rapi. Sebelum suatu software dibuat, maka software harus memiliki daftar kasus yang akan dapat diselesaikan oleh software tersebut, jika sudah selesai. Daftar kasus ini disebut sebagai kasus uji (test case). Kasus uji disiapkan oleh pengguna software dan atau perancang software.

Untuk menjadi penguji software yang baik, maka hal pertama yang harus dimiliki adalah sifat jahil, ingin menguji bahwa software yang akan diuji ini akan dengan mudah dibuat untuk tidak berfungsi atau akan kacau fungsinya. Sifat jahil ini, cenderung akan merusak dalam artian positif; karena penguji harus bisa memastikan bahwa software yang dibuat tersebut tahan banting, dengan diperlakukan secara sembarang oleh penguji.

Penguji software sebaiknya memiliki pengalaman memrogram, atau setidaknya tahu cara memrogram, atau suka membaca kelemahan-kelemahan dari suatu program. Banyak pola program atau kebiasaan pemrogram yang tidak benar diterapkan, umumnya oleh pemrogram pemula atau pemrogram yang malas tidak mau meningkatkan kemampuannya.

Setiap software house seharusnya memiliki tim penguji sendiri. Mengapa? Karena pemrogram tidak akan sempat melakukan pengujian secara komprehensif. Pemrogram cenderung menganggap bahwa program yang telah dibuatnya telah benar, bisa menyelesaikan masalah. Pemrogram cenderung fokus pada penyelesaian masalah yang harus diselesaikan oleh program. Jarang pemrogram yang berpikir juga untuk memvalidasi masukan atau pun proses yang ada di dalam program tersebut. Di sinilah penguji software diperlukan.

Menguji software merupakan tantangan tersendiri, dan membutuhkan keterampilan dan pengetahuan yang memadai, untuk menjamin bahwa hasil pengujiannya bisa dipertanggungjawabkan.

Kebutuhan Server (Komputer) Pengembang Aplikasi

Sebagai pengembang aplikasi, idealnya memiliki server atau pun komputer untuk pengembangan aplikasi lebih dari satu. Mengapa? Karena pengembang aplikasi harus memiliki sistem keselamatan dan sistem pengujian yang baik dan benar.

Ditinjau dari sistem keselamatan, maka memiliki lebih dari satu komputer menjadi keharusan, karena setiap hasil kerja yang telah dicapai dan dianggap sebagai kilometer (milestone) kemajuan, harus disimpan ke dalam komputer khusus. Dianjurkan untuk tidak hanya dibackup pada komputer kerja.

Ditinjau dari sistem pengujian, maka pengembang harus memiliki komputer yang khusus untuk melakukan pengujian. Mengapa? Karena komputer pengujian harus sama dengan komputer produksi, komputer yang digunakan oleh pengguna untuk memasang dan menjalankan aplikasi. Komputer kerja atau komputer pengembangan yang kita miliki belum tentu sama kondisinya dengan komputer produksi. Aplikasi yang telah diuji di komputer pengembangan, belum tentu dapat dijalankan di komputer produksi, karena bisa jadi tidak bisa dijalankan, karena setting lingkungannya berbeda.

Berdasarkan kebutuhan yang dijelaskan di atas, maka setiap pengembang setidaknya memiliki mesin atau komputer untuk pengembangan terdiri atas:

  • komputer pengembangan
  • komputer backup
  • komputer pengujian
  • komputer produksi

Komputer pengembangan

Komputer pengembangan adalah komputer yang biasa digunakan oleh pemrogram, komputer ini bisa komputer desktop biasa, bisa juga komputer server. Komputer pengembangan bisa merupakan server, apabila aplikasi yang dikembangkan merupakan aplikasi yang berbasis server.

Server pengembangan bisa lebih dari satu, disesuaikan dengan kebutuhan, setidaknya akan memiliki server pengembangan sebagai berikut:

  • server database
  • server web
  • server aplikasi

Komputer Backup  

Komputer backup adalah komputer yang digunakan untuk menyimpan file program atau data, untuk berjaga-jaga jangan sampai file program atau data hilang, pada saat pengembangan atau produksi.

File program atau data yang disimpan adalah file program dan data pada tahap pengembangan dan yang telah selesai, dalam masa produksi.

Untuk kemudahan manajemen, komputer backup dapat menggunakan aplikasi yang disebut dengan sistem kontrol version (Version Control System), untuk lebih mengefisienkan penggunaan space dalam komputer backup, selain itu juga untuk memudahkan pengelolaan dan pengambilan kembali file program atau data. Karena pada saat backup kita dapat menyelipkan suatu tag sebagai kata kunci untuk mengidentifikasi file program atau data yang akan disimpan komputer backup.

Komputer Pengujian

Komputer pengujian adalah komputer yang digunakan untuk melakukan pengujian aplikasi yang telah dikembangkan.

Komputer pengujian memiliki macam yang sama seperti pada komputer produksi/operasional. Kesamaan ini dimaksudkan untuk menjamin bahwa apa yang diuji akan sama hasilnya dengan pada komputer produksi.

Komputer Produksi

Komputer produksi adalah komputer yang digunakan untuk menjalankan aplikasi secara operasional oleh pengguna.

Komputer produksi bisa terdiri atas lebih dari satu komputer, disesuaikan dengan keadaan dari pengguna aplikasi, yang akan terdiri atas:

  • server database
  • server web
  • server aplikasi
  • komputer pengguna

Ketersediaan komputer yang banyak, sesuai dengan peruntukannya, dari pengembangan sampai dengan produksi, tentu saja akan sulit dipenuhi oleh banyak pengembang aplikasi. Apalagi jika pengembang aplikasi perorangan.

Penyiasatan kebutuhan komputer ini dapat dilakukan dengan bermodal sebuah komputer yang cukup besar spesifikasinya, seperti prosesor, memori, dan harddisk; akan dapat sangat membantu.  Pengembang dapat memanfaatkan software virtualisasi untuk membuat banyak image sistem operasi dan lingkungannya yang siap dijalankan sebagai sebuah komputer sendiri. (Lihat tulisan tentang PC Virtualization).