Selasa, 06 Desember 2011

Testing dan Implementasi Sistem Informasi


Dokumentasi dapat dianggap sebagai materi yang tertulis atau sesuatu yang menyediakan informasi tentang suatu subyek. Dokumentasi dapat berisi tentang deskripsi-deskripsi, penjelasan-penjelasan, bagan alir, daftar-daftar, cetakan hasil komputer, contoh-contoh obyek dari sistem informasi
pada implementasi sistem informasi dokumentasi sangat perlu untuk:
  1. Mempelajari cara mengoperasikan sistem
2. Sebagai bahan pelatihan
3. Dasar pengembangan sistem lebih lanjut
4. Dasar bila akan memodifikasi atau memperbaiki sistem di kemudian hari
5. Materi acuan bagi Auditor
6. Back-up
7. Mempermudah komunikasi di antara sesama pegawai
8. Menghilangkan ketergantungan yang kritis
dokumentasi sistem sendiri memiliki beberapa macam:
  • Dokumentasi untuk Administrator
  • Dokumentasi user
  • Dokumentasi Top Level/middle Level
Dalam dokumentasi sistem terdapat :
  • Dokumentasi Internal
merupakan dokumentasi source code dari sistem informasi atau aplikasi
  • Dokumentasi Ekternal
merupkan rancangan sistem yang dibanguan berupa alirdata, prosedure, rancangan form atau interface, rancangan basisdata.
untuk lebih lengkapnya materi dapat diundu ke :dokumentasi sistem

Kamis, 20 Oktober 2011

Testing & Implementasi Sistem Informasi


Definisi Testing
  • Menurut Hetzel 1973: proses pemantapan kepercayaan akan kinerja program atau sistem sebagaimana yang diharapkan.
  • Menurut Myers 1979: proses eksekusi program atau sistem secara intens untuk menemukan error.
  • Menurut Hetzel 1983 (Revisi): tiap aktivitas yang digunakan untuk dapat melakukan evaluasi suatu atribut atau kemampuan dari program atau sistem dan menentukan apakah telah memenuhi kebutuhan atau hasil yang diharapkan.
  • Menurut Standar ANSI/IEEE 1059: proses menganalisa suatu entitas software untuk mendeteksi perbedaan antara kondisi yang ada dengan kondisi yang diinginkan ( defects / errors / bugs ) dan mengevaluasi fitur- fitur dari entitassoftware.
Definisi Testing Software
  • Testing software adalah proses mengoperasikan software dalam suatu kondisi yang dikendalikan, untuk verifikasi apakah telah berlaku sebagaimana telah ditetapkan, validasi apakah spesifikasi yang telah ditetapkan sudah memenuhi keinginan atau kebutuhan dari pengguna yg sebenarnya.
  • Verifikasi adalah pengecekan atau pengetesan entitas-entitas, termasuk software untuk pemenuhan dan konsistensi dengan melakukan evaluasi hasil terhadap kebutuhan yang telah ditetapkan. ( Are we building the system right?)
  • Validasi melihat kebenaran system, apakah proses yang telah ditulis dalam spesifikasi adalah apa yang sebenarnya diinginkan atau dibutuhkan oleh pengguna.( Are we building the right system?)
  • Deteksi error: Testing seharusnya berorientasi untuk membuat kesalahan secara intensif, untuk menentukan apakah suatu hal tersebut terjadi bilamana tidak seharusnya terjadi atau suatu hal tersebut tidak terjadi dimana seharusnya mereka ada.
Strategi Testing
  • Strategi testing software mengintegrasikan metode - metode disain test cases software ke dalam suatu rangkaian tahapan yang terencana dengan baik sehingga pengembangan software dapat berhasil.
  • Strategi menyediakan peta yang menjelaskan tahap - tahap yang harus dilakukan sebagai bagian dari testing, dan membutuhkan usaha, waktu, dan sumber daya bilamana tahap - tahap ini direncanakan dan dilaksanakan.
  • Strategi testing harus menjadi satu kesatuan dengan perencanaan tes, disain test case , ekesekusi tes, dan pengumpulan serta evaluasi datahasil testing.
  • Strategi testing software harus cukup fleksibel untuk dapat mengakomodasi kustomisasi pendekatan testing. Pada saat yang bersamaan, harus juga cukup konsisten dan tegas agar dapat melakukan perencanaan yang masuk akal dan dapat melakukan manajemen perkembangan kinerja proyek.
Pendekatan Strategi Testing
  • Sejumlah strategi testing software diadakan untuk menyediakan kerangka testing bagi pengembang software dengan karekteristik umum sebagai berikut:
  1. Testing dimulai dari tingkat komponen terkecil sampai pada integrasi antar komponen pada keseluruhan sistem komputer tercapai.
  2. Teknik testing berbeda - beda sesuai dengan waktu penggunaannya.
  3. Testing dilakukan oleh pengembang software dan (untuk proyek besar) dilakukan oleh suatu grup tes yang independen.
  4. Testing dan debugging adalah aktifitas yang berlainan, tapi debugging harus diakomodasi disetiap strategi testing.
Unit Testing
  • Unit testing berfokus pad usaha verifikasi pada unit terkecil dari disain software – komponen atau modul software.
  • Penggunaan diskripsi disain tingkat komponen sebagai tuntunan, jalur kendali yang penting dites untuk menemukan errors , terbatas pada modul tersebut.
  • Kompleksitas relatif terhadap tes dan errors yang dicakup dibatasi oleh batasan - batasan dari cakupan yang telah ditetapkan pada unit testing .
  • Unit testing berorientasi white box , dan tahapan dapat dilakukansecara paralel pada banyak komponen.
Implementasi dari Unit testing
Untuk memastiakan kebenaran dari algoritma atau kode yang dibuat diperlukan proses testing dan pada kesempatan ini akan dibahas lebih lanjut implementasi unit testing menggunakan JUnit. JUnit ditulis oleh Erich Gamma dan Kent Beck sebagai sebuah open source. JUnit adalah standard tidak langsung sebagai pustaka pengujian untuk bahasa Bahasa. Dari pustaka ini pula, muncul komunitas-komunitas pengembang yang menurunkan JUnit untuk bahasa pemrograman lain, seperti untuk .NET yang disebut sebagai NUnit (http://www.nunit.org), PHPUnit (http://www.phpunit.de) untuk bahasa PHP dan JSUnit (http://www.jsunit.net) untuk bahasa JavaScript. JUnit merupakan satu framework untuk melakukan testing aplikasi java dan dapat didownload dalam bentuk “jar” di link di bawah ini :
Contoh penerapan JUnit
Langkah pertama yang mesti dilakukan adalah dengan mendownload file JUnit pada link yang tertera diatas kemudian extract file JUnit dimanapun terserah anda contoh extract di desktop asalkan jangan extract di direktori Java_Home atau direktori instalasi Java. Langkah berikut set classpath untuk JUnit ini yang dapat anda lakukan pada klik kanan My Computer à advanced à Enviroment Variables kemudian masukan classpathnya disana. Selanjutnya tinggal membuat class untuk testing yang biasaanya memiliki format sebagai berikut :
import junit.framework.TestCase;
public class NamaClass_Test extends TestCase {
public NamaClass_Test(String name) {
super(name);
}
public void testSesuatu() {
// assert disini
}
public void testSesuatuLagi() {
// assert disana
}
public void testSesuatuLainnya() {
// assert dimana-mana
}
}
Buat sebuah class yang akan dipakan untuk unit testing, misalnya simpel1 :
public class simple1 {
private String pesan;
private int angka;
public int getAngka() {
return angka;
}
public void setAngka(int angka) {
this.angka = angka;
}
public void setPesan(String pesan) {
this.pesan = pesan;
}
public String getPesan() {
return pesan;
}
public String tentukanGenapGanjil(int angka){
this.angka = angka;
if(this.angka % 2 == 0){
setPesan("genap");
}else{
setPesan("ganjil");
}
return this.pesan;
}

Class ini terdiri dari dua variable pesan dan angka beserta method getter dan setternya ditambah satu method untuk menentukan genap dan ganjil.
Buat class untuk melakukan unit testing dalam hal ini diberi nama testSimpel1 :
import junit.framework.TestCase;
public class testSimple1 extends TestCase {
simple1 sim = new simple1();
public testSimple1(String name) {
super(name);
}
public void testGanjilGenap(){
int ganjil = 1;
assertEquals("test ganjil genap", "ganjil", sim.tentukanGenapGanjil(ganjil));
}
public void testGetAngka(){
sim.setAngka(5);
assertEquals("test get", 5, sim.getAngka());
}
public static void main(String[] args) {
junit.textui.TestRunner.run(testSimple1.class);
}
}
Untuk membuat class unit test, dibuat satu class yang meng inherit class TestCase dari framework JUnit, kemudian class tersebut harus melakukan Overriding dari constructor super classnya.
Pada method testGanjilGenap(), yang dites adalah method tentukanGanjilGenap dari class simple1. Diberikan sebuah integer ganjil 1, di test apakah method tentukanGanjilGenap() mengembalikan nilai yang semestinya (yaitu ganjil). Method yang dipakai adalah assertEquals(). Ada 3 parameter yang dimasukan antara lain :
  • Pesan testing
  • Nilai yang diharapkan
  • Nilai hasil eksekusi
Nilai yang diharapkan akan keluar adalah ganjil, hasil dari eksekusi method sim.tentukanGenapGanjil(ganjil) dimana variable ganjil diberi nilai 1.
Pada method testGetAngka() yang dites adalah getter dari variable angka pada class simple1. Diberikan nilai 5, dicek apakah getter mengeluarkan nilai yang sama dan langkah terakhir adalah membuat main method. Untuk melakukan testing, dipanggil method junit.textui.TestRunner.run(); dengan parameter file class dari testSimple1.
Jika output dari program seperti dibawah ini maka proses testing berhasil dilewati oleh class simple1 dengan sukses karena method yang digunakan pada test case sudah mengembalikan nilan sesuai dengan harapan.
Time: 0
OK (2 tests)
Daftar Pustaka
http://wilbertjava.wordpress.com/2008/03/27/menggunakan-junit

Testing dan Implementasi Sistem Informasi

A. Testing
1. Pengertian Testing
Testing adalah proses yang dibuat sedemikian rupauntuk mengidentifikasikan adanya ketidak sesuaian suatu hasil sebuah system informasi dengan apa yang diharapkan.
Berdasarkan pengertian diatas maka testing mempunyai beberapa tujuan antara lain :
a. Testing dilakukan untuk memastikan mutu dari suatu produk yaitu menguji apakah produk ( dalam hal ini system informasi) yang dihasilkan telah sesuai dengan mutu yang dipersyaratkan. Testing dilakukan untuk memastikan / menjaga muti suatu produk.
b. Testing juga bias berarti sebuah proses analisa dan etitas software. Pada testing ini bertujuan untuk mendeteksi adanya perbedaan antara kondisi software yang ada dengan kondisi yang diinginkan, untuk melihat kerusakan suatu produk dan melakukan evaluasi fitur-fitur dari member nama software.
2. Prinsip-prinsip Testing
Pelaksanaan suatu testing tergantung terhadap obyek yang akan dilakukan testing, sehingga pelaksanaan dan model testing sangat beragam.
Meskipun begitu terdapat beberapa hal yang perlu diketahui dalam pelaksanaan testing adalah sebagai berikut :
a. Pelaksanaan testing yang komplit tidak mungkin.
b. Testing merupakan pekerjaan yang kreatif dan sulit.
c. Alasan yang penting diadakan testing adalah untuk mencegah terjadinya eror.
d. Testing yang dilakukan biasanya berbasis pada resiko.
e. Testing harus direncanakan dan terjadwal.
f. Testing membutuhkan independensi (perlu adanya pihak ketiga yang terlibat).
B. Integrasi Testing ke Dalam Siklus Hidup Software
Secara umum, integrasi testing ke dalam siklus hidup software, dapat dituliskan ke dalam bentuk tahapan dari siklus hidup software, sebagai berikut :
1. Inisialisasi Proyek
a. Mengembangkan strategi tes secara garis besar.
b. Menetapkan pendekatan dan usaha tes secara keseluruhan.
2. Kebutuhan
a. Menetapkan kebutuhan testing.
b. Menetapkan penanggung jawab testing.
c. Mendisain prosedur tes dan tes berbasis kebutuhan, awal.
d. Melakukan tes dan validasi kebutuhan.
3. Disain antara
a. Menyiapkan rencana tes sistem dan spesifikasi disain, awal.
b. Menyelesaikan rencana acceptance test dan spesifikasi disain.
c. Menyelesaikan tes berdasarkan disain.
d. Melakukan tes dan validasi disain.
4. Pengembangan
a. Menyelesaikan rencana tes sistem.
b. Menyelesaikan prosedur tes dan tes berbasis kode, final.
c. Menyelesaikan disain modul atau unit tests.
d. Melakukan tes program.
e. Integrasi dan melakukan tes sub sistem.
f. Melakukan system test.
5. Implementasi
a. Melakukan acceptance test.
b. Tes perubahan dan perbaikan.
c. Evaluasi efektifitas testing.
6. Faktor penentu kasuksesan dari testing yang lainnya, adalah penerapan teknik testing secara tepat yang diadopsi dan digunakan pada sepanjang siklus hidup. Review merupakan alat bantu testing yang sangat bermanfaat untuk digunakan pada sepanjang siklus hidup.
Testing Dengan Review
Pada awalnya review adalah alat bantu pengendalian manajemen. Selama proyek berlangsung, manajemen memerlukan suatu penilaian dan pengukuran kinerja proses yang telah berlangsung. Jadi obyektifitas dari review adalah untuk mendapatkan informasi yang konsisten dan dapat dipercaya, biasanya berupa status dan atau kualitas kerja.
Terdapat banyak jenis dari review, yaitu : kebutuhan, spesifikasi, disain, coding, prosedural, dokumentasi, konversi, instalasi, implementasi, disain tes, prosedur tes dan rencana tes.
Review hadir dalam dua bentuk, yaitu (1) formal dan (2) tidak formal. Yang dipandang sebagai teknik testing adalah review dalam bentuk formal, dimana partisipan bertanggung jawab untuk melakukan kalkulasi secara akurat dan menghasilkan laporan dari apa yang telah mereka temukan bagi manajemen.
Rencana review secara minimum, harus terdiri dari :
a. Siapa saja yang diharapkan akan hadir.
b. Informasi yang dibutuhkan sebelum memulai review.
c. Kondisi awal yang harus dipenuhi sebelum review dilakukan.
d. Daftar kegiatan atau item atau indikasi lainnya yang bersangkutan dengan apa yang akan dibahas.
e. Kodisi akhir atau kriteria yang harus dipenuhi agar review dapat dinyatakan selesai.
f. Data dan dokumentasi disimpan.
Testing Kebutuhan
Testing suatu dokumen harus mempertimbangkan dua pertanyaan dasar, yaitu :
a) Apakah ada kebutuhan yang hilang?
• Apakah semua fungsi yang dibutuhkan telah dialamatkan dengan benar?
• Apakah kinerja yang dibutuhkan telah dispesifikasikan?
• Apakah kualitas software telah dispesifikasikan?
• Apakah software telah sepenuhnya didefinisikan?
b) Dapatkah suatu kebutuhan disederhanakan atau dihilangkan?
• Dapatkah kebutuhan dikombinasikan?
• Apakah ada kebutuhan yang sangat restriktif?
• Apakah ada kebutuhan yang redundansi atau kontradiksi?
Teknik-teknik yang berguna dalam testing kebutuhan, termasuk :
a) Matrik validasi kebutuhan.
b) Model atau prototipe.
c) Pengembangan secara bertahap.
d) Tabel keputusan dan grafik sebab dan akibat.
e) Penggrupan dan analisa kebutuhan.
Testing Disain Sistem
Sebagaimana pada testing kebutuhan, pada testing disain sistem juga mempunyai dua pertanyaan dasar, yaitu :
a) Apakah solusi merupakan pilihan yang benar?
• Dapatkah disain dicapai dengan lebih sederhana?
• Apakah merupakan pendekatan alternatif yang terbaik?
• Apakah merupakan cara tercepat untuk melakukan pekerjaan?
b) Apakah solusi memenuhi kebutuhan?
• Apakah semua kebutuhan telah dicakup dalam disain?
• Apakah merupakan disain kerja?
• Apasaja sumber dan resiko dari kegagalan?
Metode-metode yang dapat digunakan untuk menetapkan alternatif dan validasi disain, adalah :
c) Simulasi dan model.
d) Kompetisi disain.
e) Kebutuhan dan disain test cases berbasis disain.



Otomatisasi Testing
Otomatisasi testing adalah alat bantu yang digunakan untuk mempermudah proses dan dokumentasi tes, mengefisienkan eksekusi dari tes, dan mempermudah pengukuran pada tes. Sehingga diharapkan dapat memberikan peningkatan yang cukup besar dalam manajemen proses, meminimalkan keterlibatan manusia, dan replikasi pekerjaan.
Otomatisasi testing adalah area yang paling tinggi tingkat perkembangannya dalam industri testing. Mengapa otomatisasi testing dibutuhkan ?
1. Testing selalu dihadapkan pada masalah jadual yang ketat.
2. Testing sering diulang-ulang banyak kali.
3. Testing berkemungkinan untuk dijalankan selama 24 jam sehari, atau tidak pada jam kerja.
4. Testing dapat dilakukan dengan lebih cepat dan akurat, dimana ketidakkonsistenan manusia dapat diminimalkan.
5. Dokumentasi testing dapat dilakukan secara konsisten, sehingga dapat diaudit secara penuh dan berkala.
6. Script testing dapat menjadi aset yang dapat digunakan kembali untuk testing yang sama pada proyek testing yang lain.
7. Mempercepat dalam peninjauan kembali terhadap testing itu sendiri.
8. Dapat meningkatkan proses.
Otomatisasi testing hendaknya dimulai dari hal yang paling mudah terlebih dahulu, dan secara bertahap meningkatkan kompleksitas dari kasus yang diotomatisasi. Bagaimanapun, testing secara manual untuk beberapa kasus masih tetap diperlukan, dan pengembangan otomatisasi testing harus selalu berdasar pada pertimbangan-pertimbangan praktis.


Berdasarkan pada cara pengembangan otomatisasi tes, terdapat dua macam kelompok tes, yaitu :
a. Kesehatan Tes
• Jalankan sebelum testing secara keseluruhan dimulai, untuk menentukan apakah sistem layak untuk digunakan untuk testing secara keseluruhan.
• Jalankan secepatnya, kurang dari satu jam.
• Cek apakah ada kejutan yang tidak diinginkan terjadi.
b. Tes keseluruhan
• Selesaikan secara komplit rangkaian-rangkaian tes yang telah ditetapkan.
• Mungkin membutuhkan beberapa jam atau mungkin beberapa hari untuk menyelesaikannya.
Kelebihan dari otomatisasi testing, adalah sebagai berikut :
a. Mampu melakukan testing secara lebih menyeluruh, dan dapat meningkatkan kinerja regression testing.
b. Durasi waktu yang lebih pendek dalam pelaksanaan testing, sehingga dapat memperbanyak waktu pemasaran atau pun hal strategis lainnya.
c. Meningkatkan produktivitas dari pemakaian sumber daya, dimana tester sangat sulit didapatkan dan mahal. Disamping itu tingkat kepercayaan akan keberhasilan proyek testing pun dapat ditingkatkan.
d. Mengurangi kesalahan dan keteledoran tester, seperti tidak terdeteksinya error, kecerobohan dalam menekan tombol, dll.
e. Melakukan pencatatan secara detil tes log dan item-item yang diaudit, dimana semua hasil eksekusi tes dapat disimpan secara tepat dan teliti untuk proses debugging.
Sedangkan kekurangan dari otomatisasi tes, antara lain :
a. Membutuhkan waktu untuk inisialisasi tes.
b. Membutuhkan perawatan test cases, agar modifikasi tingkah laku sistem yang dilakukan dapat dijaga konsistensinya dengan yang lama, dan agar dapat menghindari keberadaan fitur yang tidak stabil.
c. Membutuhkan waktu beberapa minggu pembelajaran agar didapatkan tingkat kemampuan yang diharapkan.
d. Tetap tidak dapat sepenuhnya menghilangkan testing manual. Umumnya 50 - 75% test cases tidak dapat diotomatisasi (tergantung pada lingkungannya).
e. Membutuhkan biaya investasi yang dapat mencapai US$ 30000 untuk lisensi pengguna tunggal.
f. Terdapatnya batasan teknis, baik terhadap lingkungan sistem operasi, tipe aplikasi, waktu respon, dll.
g. Beberapa alat bantu otomatisasi masih berorientasi pada programmer, sehingga tidak cocok untuk pengguna akhir yang awam pemrograman.
h. Kesulitan dalam memfokuskan tes untuk diotomatisasi, dimana kasus-kasus yang beresiko tinggi dapat dicakup secara keseluruhan.
i. Kurangnya stabilitas dan dukungan, dimana kebanyakan vendor penyedia alat bantu otomatisasi tes tidak dapat dengan cepat merespon terhadap bug yang terjadi pada alat bantu tesebut, serta kurangnya ketersediaan pengguna yang berpengalaman dipasaran kerja
Organisasi harus menghindari hambatan-hambatan yang dapat menyebabkan kegagalan dari implementasi otomatisasi testing, dengan memastikan pemenuhan dari hal-hal sebagai berikut :
a. Identifikasi kebutuhan untuk melakukan otomatisasi testing, seperti (1) analisa biaya dari usaha untuk berpindah ke otomatisasi, (2) hasil analisa dari pengukuran yang mengindikasikan kebutuhan untuk meningkatkan kinerja testing dengan melakukan otomatisasi testing, dan (3) keluhan dari tester karena pelaksanaan tes ulang secara manual.
b. Dukungan organisasional, seperti (1) kecukupan sumber daya dan anggaran untuk memesan alat bantu, mengadakan pelatihan, dan melakukan evaluasi, (2) dukungan dan pemahaman manajemen secara mendasar.
c. Proses testing yang telah stabil (terdefinsi dan termanajemeni dengan baik), karena otomatisasi tes (1) tidak membantu dalam penentuan apa yang akan dites, dan tes mana yang akan diimplementasikan, tetap membutuhkan disain tes, (2) tidak dapat menertibkan kekacauan proses, (3) membutuhkan proses-proses pendukung lainnya, seperti manajemen konfigurasi dari data tes. 

Referensi
http://www.google.co.id/search?hl=id&q=penerapan+testing+dan+implementasi&btnG=Telusuri+dengan+Google&meta=&aq=f&oq=
http://pksm.mercubuana.ac.id/modul/18019-1-168113516927.doc...