Friday, January 21, 2011

Software Testing and Quality Assurance : Menganalisa data-data sebelum merancang Test Case (Article #3)

firman.efendi@gmail.com

Agar setiap Test Case berjalan efektif dan berbiaya rendah, alangkah baiknya rancangan Test Case dibuat berdasarkan hasil analisa terhadap sumber-sumber data berikut ini:
  • Requirements and functional specifications, adalah dokumen yang berisikan daftar spesifikasi untuk aplikasi yang sedang kita kembangkan. Dokumen ini disusun pada tahap awal, biasanya sebelum proyek berjalan atau masih dalam tahap proposal dan kemudian harus ditanda-tangani oleh klien sesaat sebelum proyek resmi berjalan. Dengan memahami spek secara akurat, software tester akan dapat merancang Test Case yang lebih efektif.
  • Source code akan menjelaskan lebih mendalam actual behaviour sebuah aplikasi/software, yaitu bagaimana sih proses yang sesungguhnya terjadi untuk melakukan perhitungan 2 pangkat 2. Mulai dari deklarasi variabel, fungsi apa saja yang terlibat, jika error terjadi maka algoritma apa yang akan berjalan selanjutnya. Dengan memahami source code secara mendalam, software tester akan dapat merancang Test Case yang lebih efektif.
  • Input and output domains menjadi faktor yang diperhatikan saat ini. Dulu kebutuhan orang dalam memaanfaatkan sebuah aplikasi/software tidaklah serumit saat ini. Sehingga apa saja yang diinput oleh user tidak perlu di validasi kembali. Coba anda buka program kalkulator yang ada di windows. Lalu input 1 dibagi 0. Apa yang terjadi ??? Akan ada pesan "cannot divide by zero". Nah pertanyaan selanjutnya, apakah sistem akan membagi 1 dengan 0 terlebih dulu lalu kemudian pesan itu tampil, atau sebaliknya yaitu menampilkan pesan dulu dan tidak melanjutkan proses pembagian 1 dengan 0 ??? Saya memilih jawaban yang terakhir. Karena program kalkulator di windows akan melakukan validasi input dulu baru memproses perhitungan. Beda dengan kalkulator tukang cabe yang perhitungan tersebut akan tetap dijalankan prosesnya. Alhasil error.
  • Operational profile mengacu pada sifat dan karakteristik pengoperasian sebuah sistem/aplikasi/software. Ada user yang lebih memilih mengurus setting-an dulu, baru kemudian menggunakan fitur-fitur yang lain. Atau ada juga yang sebaliknya. Pemahaman terhadap operational profile akan menghasilkan samples of system usage yang akan menjadi panduan bagi software tester dalam memilih Test Case yang tepat.
  • Fault model adalah permodelan dalam menemukan sebuah error/fault/bugs. Permodelan ini terbentuk setelah kita mengamati beberapa fault yang terjadi pada sebuah sistem/aplikasi/software. Ada pepatah "Jadikan kesalahan masa lalu sebagai pengalaman yang berharga untuk masa depan". Pepatah ini sejalan dengan teori Fault Model. Ada 3 jenis fault-based testing yaitu error guessing, fault seeding dan mutation analysis.
Demikian yang bisa saya share kepada rekan-rekan. Tiada gading yang tak retak. Ditunggu koreksi dari anda.

Blog ini adalah milik komunitas, maka bagi siapa saja yang berniat menyumbangkan ilmunya dengan senang hati kami terima. Silahkan kirim artikel dan biodata anda dalam bentuk PDF ke firman.efendi@gmail.com.

To be Continued

    Monday, January 17, 2011

    Zend Framework : Mari membuat aplikasi web sederhana (Article #2)

    firman.efendi@gmail.com

    Untuk lebih mempermudah kita dalam memahami cara kerja Zend Framework saya ingin mengajak anda untuk mencoba membuat sebuah aplikasi web sederhana. Pola atau Pattern dalam membuat sebuah aplikasi berbeda-beda antara tiap-tiap developer. Pola atau Pattern dari aplikasi web yang saya jadikan contoh di sini belum tentu efektif bagi developer lain. Namun paling tidak, aplikasi sederhana ini bisa memberikan kemudahan bagi kita untuk mengenal Zend Framework lebih mendalam lagi.

    Baiklah, kita akan memulainya dari menjabarkan struktur folder dan file. Pada contoh ini aplikasi web diletakan pada folder root. Agar lebih fokus, tiap sub folder tidak akan dijabarkan selengkap-lengkapnya, seperlunya saja sesuai dengan tema dan judul pembahasan.

    Sekarang mari kita cermati susunan folder dan sub folder dibawah ini ! Struktur ini akan membantu kita dalam memahami source code pada file index.php

    --- htdocs
          --- application
                --- core
                --- design
                --- etc
                      --- config.ini
                --- locale
          --- cache
          --- images
          --- library
                --- Zend
                      --- Application.php
          --- js
          --- css

          --- index.php

    Folder application memiliki 4 (empat) sub folder yaitu core, design, etc, dan locale. Sub folder core menampung file-file Model dan Controller dari tiap-tiap modul. Sub folder design menampung file-file html dari tiap-tiap modul. Sub folder etc menampung file-file konfigurasi global. Sub folder locale menampung file-file localization. Data cache akan ditempatkan pada folder cache. File gambar pada folder images. File javascript pada folder js. File css pada folder css. Zend Framework dan library pendukung akan ditempatkan pada folder library.

    Selanjutnya, kita akan membuat file index.php dengan source code berikut ini :

    <?php

    define('DS', DIRECTORY_SEPARATOR);
    define('BASE_PATH', realpath(dirname(__FILE__)));
    define('APPLICATION_PATH', BASE_PATH . DS . 'application');
    define('CONFIG_PATH', APPLICATION_PATH . DS . 'etc');
    define('APPLICATION_ENV', 'production');

    require_once 'library/Zend/Application.php';

    $application = new Zend_Application(
                        APPLICATION_ENV,
                        CONFIG_PATH . DS . 'config.ini'
                   );

    $application->bootstrap()
                ->run();

    ?>

    Pertama-tama kita harus mendefinisikan beberapa variable dan path. Agar fleksibel dalam menetapkan sebuah path, sebaiknya kita menggunakan konstanta DIRECTORY_SEPARATOR sebagai format pemisah direktori. Setelah itu kita definisikan sebagai DS agar lebih singkat. Kemudian mendefinisikan BASE_PATH, APPLICATION_PATH, CONFIG_PATH dan APPLICATION_ENV. Untuk aplikasi contoh ini, APPLICATION_ENV langsung saya set menjadi "production". Bisa anda set menjadi "development" manakala aplikasi ini masih dalam tahap Pengembangan. Bisa juga di-set menjadi "testing" manakala aplikasi ini masih dalam tahap Pengujian. APPLICATION_ENV akan saya coba diskusikan lebih detail dengan teman-teman pada pembahasan Zend_Application.

    Logika untuk mendapatkan value dari definisi BASE_PATH, APPLICATION_PATH, dan CONFIG_PATH saya yakin teman-teman sudah pada mengerti konsepnya. Jika disimulasikan dari komputer saya, maka :

    DS = ‘\’
    BASE_PATH = ‘C:\Program Files\Apache Software Foundation\Apache2.2\htdocs’
    APPLICATION_PATH = ‘C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\application’
    CONFIG_PATH = ‘C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\application\etc’

    Kita memerlukan file 'library/Zend/Application.php' agar bisa menggunakan class Zend_Application. Pertama-tama file tersebut harus di-load oleh sistem, maka pada index.php kita harus secara eksplisit menyertakannya dengan sintaks require_once. Zend_Application adalah central class dari setiap aplikasi web yang dibangun dengan Zend Framework.

    Selanjutnya yang harus kita lakukan adalah membuat sebuah Class Object yang diberi label $application. Class Object $application merupakan Class Object Zend_Application yang telah di-create dengan sintaks new.

    $application = new Zend_Application(
                       APPLICATION_ENV,
                       CONFIG_PATH . DS . 'config.ini'
                   );

    Untuk inisialisasi, Zend_Application memerlukan parameter APPLICATION_ENV dan path dari file konfigurasi global. Apa saja yang dikerjakan oleh Class Object Zend_Application pada saat inisialisasi ? Akan saya coba share di pembahasan Zend_Application.

    Kemudian Class Object $application melakukan bootstrap dan setelah itu aplikasi dijalankan (run). Apa saja yang terjadi pada saat Bootstrap dan pada saat aplikasi dijalankan? Akan saya coba share di pembahasan berikutnya. Pokoknya step by step.

    Tiada gading yang tak retak, Tiada manusia yang tak punya khilaf.

    To be continued

    Friday, January 7, 2011

    Software Testing and Quality Assurance : Apa itu Test Case ? (Article #2)

    firman.efendi@gmail.com

    Masih melanjutkan pembahasan tempo hari mengenai Software Testing , hari ini kita akan membahas mengenai Test Case. Artikel ini adalah lanjutan dari artikel sebelumnya yang berjudul Pendahuluan (Article #1).

    Pengujian Piranti Lunak diselenggarakan dalam rangka mendeteksi cacat-cacat yang mungkin ada/timbul dalam sebuah software design. Lalu bagaimanakah cara kita melihat adanya cacat dalam sebuah piranti lunak ? Caranya yaitu dengan membandingkan antara perilaku sesungguhnya (actual behavior) terhadap spesifikasi yang dibutuhkan (specific requirements) sebuah piranti lunak. Anggap kita sedang mengembangkan sebuah program kalkulator sederhana yang bisa menghitung nilai kuadrat (pangkat 2). Sesuai dengan spesifikasi, nilai 2 kuadrat (2 pangkat 2) akan menghasilkan nilai 4. Nah, berapakah hasil yang akan kita dapat ketika kita menginput angka 2 pada kalkulator ? Jika hasilnya 4, maka piranti lunak yang telah kita rancang telah bekerja secara normal sesuai dengan spesifikasi yang kita butuhkan. Akan tetapi, jika hasilnya selain 4, maka dipastikan piranti lunak anda mengandung bugs atau kesalahan algoritma.

    Contoh diatas adalah ilustrasi sederhana dari Test Case. Secara sederhana Test Case dapat didefinisikan sebagai pasangan <input dan output>. Test Case untuk aplikasi Kalkulator diatas adalah :

    <2 4>
    <3 9>
    <4 16>

    Jika kita input 2 hasilnya 4, input 3 hasilnya 9, dan terakhir input 4 hasilnya 16, maka kesimpulan yang dapat diambil dari aktivitas Software Testing yang baru saja kita kerjakan adalah program Kalkulator tersebut telah berfungsi sesuai dengan spesifikasi atau dengan kata lain "bebas bugs".

    Apa yang baru saja kita bahas adalah bentuk sederhana dari sebuah pengujian terhadap piranti lunak. Perlahan-lahan akan kita bahas secara detail baik teknis dan non teknis.

    To be continued.

    Thursday, January 6, 2011

    Zend Framework : Pendahuluan (Article #1)

    firman.efendi@gmail.com

    Zend Framework adalah sebuah framework open source yang digunakan untuk pengembangan aplikasi berbasis web. Zend Framework menggunakan PHP versi 5. Bagi anda yang terbiasa menggunakan metode Object Oriented Programming, maka Zend Framework bisa menjadi salah satu alternatif. Disamping itu Zend Framework juga menerapkan MVC (Model/View/Controller).

    Tiap komponen Zend Framework dibuat agar satu dengan yang lainnya tidak saling bergantung atau paling tidak memiliki ketergantungan yang minimum satu dengan yang lainnya. Anda bisa menggunakan sebuah komponen tanpa harus memanggil komponen yang lain. Meskipun antar komponen dapat digunakan terpisah dan berdiri sendiri, tetapi ketika mereka digabungkan tiap komponen tersebut akan mampu membentuk sebuah aplikasi berbasis web yang solid.

    Apakah anda tipikal programer PHP yang selalu menggunakan pola coding from scratch dan antipati dengan Framework? Sebaiknya anda pertimbangkan kembali untuk menggunakan Framework. Kenapa? Menurut pengalaman orang dan pengalaman saya sendiri didapati bahwa coding from scratch akan banyak menghabiskan waktu anda. Jika anda berkecimpung dalam software development, maka jangan heran seandainya keuangan anda tersendat-sendat. Loh kok bisa begitu ? iya dong, untuk mengajukan tagihan ke klien anda harus bisa memperlihatkan progress (deliverables) yang telah anda capai. Seharusnya progress yang direncanakan akan tercapai dalam sebulan, eh ternyata molor selama 3 bulan gara-gara anda masih berkutat dengan kode-kode program. Masih harus bikin library ini, library itu, function ini, function itu, yang sesungguhnya telah tersedia di sebuah Framework.

    Apa saja fitur yang bisa kita manfaatkan dari Zend Framework ? Nah nanti akan kita bahas satu per satu. Apapun kebutuhan aplikasi anda, maka anda akan dengan mudah menemukannya pada Zend Framework.

    To be continued

    Wednesday, January 5, 2011

    Software Testing and Quality Assurance : Pendahuluan (Article #1)

    firman.efendi@gmail.com

    Apa yang menjadi pertimbangan utama anda sebelum membeli sebuah produk ? Saya yakin bahwa sebagian besar dari pembaca artikel ini akan menjawab kualitas. Anda akan merasa puas manakala produk yang telah anda beli memiliki kualitas sesuai dengan yang anda harapkan. Apalagi jika anda membelinya dengan harga yang terjangkau. Setelah itu saya yakin anda akan dengan senang hati merekomendasikan produk tersebut kepada rekan-rekan anda.

    Fakta bahwa kualitas mempengaruhi keputusan pembeli sudah tentu itu disadari oleh produsen. Mereka akan berlomba-lomba meningkatkan kualitas produk untuk memperoleh market share yang lebih banyak dari pesaing. Kondisi seperti ini juga pasti berlaku di industri IT. Siapa sih yang mau memakai software yang dipenuhi bugs di sana sini ?

    Test Process Improvement dan Test Maturity Model

    Software Testing memainkan peranan penting dalam Industri IT. Keberadaanya dalam proses pengembangan piranti lunak tidak boleh diabaikan. Berapa banyak biaya yang akan dikeluarkan oleh pengembang untuk memperbaiki error, fault, dan bugs yang ditemukan pengguna. Memperbaiki bugs/error/fault yang ditemukan di fase akhir yaitu distribusi produk akan menghabiskan biaya 50x lipat bahkan lebih dibandingkan dengan perbaikan pada fase unit. Untuk meningkatkan proses/mekanisme pengujian piranti lunak agar mencapai taraf optimum, maka para peneliti dan akademisi telah mengembangkan beberapa permodelan yaitu Test Process Improvement dan Test Maturity Improvement. Kedua permodelan tersebut merupakan framework bagi para software tester dalam mengoptimumkan proses pengujian terhadap piranti lunak.

    Nah, itu dulu yang dapat saya sharing kepada rekan-rekan.  

    To be continued.