Category Archives: Testing dan Implementasi Sistem

State Transition Testing

State transition testing menggunakan model sistem, yang terdiri dari :

  • Status yang terdapat di dalam program.
  • Transisi antar status-status tersebut.
  • Kejadian yang merupakan sebab dari transisi-transisi tersebut.
  • Aksi-aksi yang akan dihasilkan.

Model umumnya dipresentasikan dalam bentuk state transition diagram.

Test case desain untuk memerikasa validitas transisi antar kasus. Test cases tambahan juga akan didesain untuk testing terhadap transisi-transisi yang tidak termasuk dan tidak dispesifikasikan.

Contoh ilustrasi :

Misal terdapat suatu state transition diagram yang menangani masukan permintaan untuk mode tampilan terhadap waktu tampilan dari suatu device, sebagai berikut :

State Transition di atas terdiri dari :

  • Status, seperti displaying time (S1)
  • Transisi, seperti antara S1 dan S3
  • Kejadian yang menyebabkan transisi, seperti “reset” selama status S1 akan menyebabkan transisi ke S3.
  • Aksi yang merupakan hasil dari transisi, seperti selama transisi dari S1 ke S3 sebagai hasil dari kejadian “reset”, aksi “display time” akan terjadi.

Test cases untuk transisi yang valid.

Test cases didesain untuk memeriksa transisi-transisi yang valid.
Untuk setiap test case, terdapat spesifikasi sebagai berikut :

  • Status mulai.
  • Masukan.
  • Keluaran yang diharapkan.
  • Status akhir yang diharapkan.

Berdasarkan contoh diatas, terdapat 6 test cases :

 

 

 

 

Kumpulan test case diatas di atas menghasilkan cakupan switch 0-switch

Tingkatan lain cakupan perubahan (switch) yang merupakan hasil dari penggabungan sekuensial yang lebih panjang dari transisi :

  • Cakupan 1-switch didapatkan dengan melihat hasil penampilan sekuensial dari dua transisi yang valid untuk tiap tes.
  • Cakupan N-switch didapatkan dengan maelhat hasil penampilan sekuensial dari N+1 transisi-transisi yang valid untuk tiap tes.

 

(Sumber : Testing dan Implementasi Sistem, Romeo, ST, 2003. Stikom Surabaya)

 

Desain Test Case

Definisi Test Case

Test case  merupakan  suatu tes yang  dilakukan berdasarkan pada  suatu inisialisasi, masukan, kondisi ataupun hasil yang telah ditentukan sebelumnya.

Adapun kegunaan dari test case ini, adalah sebagai berikut :

  • Untuk melakukan testing kesesuaian suatu komponen terhadap spesifikasi - Black Box Testing
  • Untuk melakukan testing, kesesuaian suatu komponen terhadap desain - White Box Testing

White Box Testing

Kadang disebut juga glass box testing atau clear box testing, adalah suatu metode desain test case yang menggunakan struktur kendali dari desain prosedural.

Metode desain test case dapat menjamin :

  • Semua jalur (path) yang independen / terpisah dapat dites setidaknya sekali tes.
  • Semua logika keputusan dapat dites dengan jalur yang salah dan atau jalur yang benar.
  • Semua loop dapat dites terhadap batasannya dan ikatan operasionalnya.
  • Semua struktur internal dapat dites untuk memastikan validitasnya.

Mengapa melakukan white box bilamana black box testing berfungsi untuk testing pemenuhan terhadap kebutuhan / spesifikasi ?

  • Kesalahan logika dan asumsi yang tidak benar kebanyakan dilakukan ketika coding untuk “kasus tertentu” . Dibutuhkan kepastian bahwa eksekusi jalur ini telah dites.
  • Asumsi bahwa adanya kemungkinan terhadap eksekusi jalur yang tidak benar. Dengan white box testing dapat ditemukan kesalah ini.
  • Kesalahan penulisan acak. Seperti berada pada jalur logika yang membingungkan pada jalur normal.

Cakupan pernyataan, cabang, dan jalur.

Cakupan pernyataan, cabang dan jalur adalah suatu teknik white box testing yang menggunakan alur logika dari program untuk membuat test cases. Yang dimaksud dengan alur logika adalah cara dimana suatu bagian dari program tertentu dieksekusi saat menjalankan program.

Alur logika suatu program dapat dipresentasikan dengan flow graph, yang akan dibahas lebih lanjut pada sub bab berikutnya (basis path testing). Sebagai contoh dapat dilihat pada gambar di bawah ini.

Suatu Flow Graph terbentuk dari :

  • Nodes (titik), mewakili pernyataan (atau sub program) yang akan ditinjau saat eksekusi  program.
  • Edges (anak panah), mewakili jalur logika program untuk menghubungkan satu pernyataan (atau sub program) dengan yang lainnya.
  • Branch nodes (titik cabang), titik titik yang mempunyai lebih dari satu anak panah keluaran.
  • Branch edges (anak panah cabang), anak panah yang keluar dari suatu cabang.
  • Paths (jalur), jalur yang mungkin untuk bergerak dari satu titik ke titik lainnya sejalan dengan keberadaan arah anak panah.

Eksekusi suatu test case menyebabkan program untuk mengeksekusi pernyataan-pernyataan tertentu, yang berkaitan dengan jalur tertentu, sebagaimana tergambar pada flow graph.

Basis Path Testing

Basis path hadir dalam 2 bentuk :

  • Zero Path : Jalur penghubung yang tidak penting atau jalur pintas yang ada pada satu sistem.
  • One Path : Jalur penghubung yang penting atau berupa proses pada suatu sistem.

 

(Sumber : Testing dan Implementasi Sistem, Romeo, ST, 2003. Stikom Surabaya)

 

Prinsip prinsip testing dan Implementasi Sistem

Tujuan Melakukan Testing.
Secara umum dari proses testing adalah melakukan verifikasi, validasi, dan mendeteksi terjadinya error pada aplikasi tersebut. Dari ketiga hal tersebut diharapkan dapat menemukan masalah – masalah atau kesalahan dan dari hasil penemuan tersebut dapat dilakukan suatu pembenahan.
Verifikasi, validasi, dan deteksi adalah bagian dari proses testing yang tidak dapat dipandang sebelah mata. Memiliki pengertian seperti berikut :
  • Verifikasi, bagaimana suatu sistem tersebut benar atau tidak. Yang pertama dilihat adalah bagaimana struktur, hingga susunan yang ada. Kemudian jika semua telah baik maka harus kembali dikaji dan dicocokan dengan rancangan awal yang telah dibuat.
  • Validasi, bagaimana sebuah sistem yang telah dibuat telah sesuai dengan tujuan yang diharapkan.
  • Deteksi, mendeteksi error atau kesalahan pada sistem, atau dengan kata lain yaitu proses pengembangan dari satu program ke program lainnya yang lebih rumit.

Testing memiliki tujuan – tujuan lainnya, mengapa testing perlu dilakukan, yaitu ;

  • Menyediakan informasi – informasi pokok maupun penunjang untuk kualitas dari produk software tersebut.
  • Meningkatkan kepercayaan akan sistem itu sendiri, bahwa sistem tersebut dapat digunakan sesuai dengan resiko yang digunakan.
  • Menyediakan informasi – informasi yang penting, dengan adanya informasi tersebut dapat membantu mengurangi terjadinya error yang sebelumnya pernah terjadi.
  • Selain informasi untuk mengurangi terjadinya error, juga informasi yang membantu mendeteksi error secara lebih dini, hingga mampu ditanggulangi lebih dini pula.
  • Mencari error dan kelemahan dari sistem tersebut, kadang juga dapat mendeteksi keterbatasan kinerja dari sistem tersebut.
  • Mencari tahu informasi, sejauh mana kemampuan sistem tersebut.
PRINSIP – PRINSIP TESTING
  1. Tidak dapat terpenuhi (komplit).
    Karena banyaknya kombinasi test yang amat besar dan luas.

    • Domain Masukan
    • Kompleksitas
    • Jalur program
  2. Testing merupakan pekerjaan yang memiliki tingkat kesulitan tinggi dan dibutuhkan kreatifitas.
    • Agar mampu melakukan testing dengan baik dibutuhkan pengenalan dan pemahaman terhadap sistem itu sendiri.
    • Sistem yang ditesting tidak mudah dan sederhana, jadi dibutuhkan kreatifitas, pengetahuan bisnis, pengetahuan testing, dan metodologi testing agar mampu melakukan testing dengan baik.
  3. Mencegah terjadinya kesalahan.
    • Dalam proses testing, tidak hanya dilakukan proses pengembangan semata.
    • Hasil – hasil testing yang telah dihasilkan diasosiasikan pada tiap fase pengembangannya.
  4. Penanganan resiko.
    • Sumber daya yang dibutuhkan untuk melakukan proses testing dapat diukur dari skala prioritas, kompleksitas, dan kesulitan testing yang ada.
    • Biaya keterlambatan pengiriman produk.
    • Kemungkinan munculnya atau terdapatnya cacat.
    • Biaya yang disebabkan oleh cacat.
  5. Perencanaan yang baik.
    • Untuk menjaga alur dari proses testing agar nantinya tidak menyimpang dari apa tujuan awal yang telah ditetapkan.
    • Untuk menjaga kesesuaian penggunaan sumber daya yang ada dan jadwal proyek yang telah ditetapkan.
    • Untuk membuat test case yang baik, sehingga dengan menetapkan apa hasil yang akan diharapkan tester yang nantinya akan melakukan test tersebut.
  6. Membutuhkan Independensi.
    • Jika membutuhkan pengukuran yang berbeda atau tidak biasa dibutuhkan penunjang yang berbeda pula yaitu tester yang tidak biasa.
    • Tester independen juga dikatakan sebagai pengamat yang tidak biasa dan mengukur kualitas software secara akurat.
    • Testing harus dilakukan oleh pihak ke – 3.

    (Sumber : Testing dan Implementasi Sistem, Romeo, ST, 2003. Stikom Surabaya)


Definisi Testing

Beberapa definisi Testing :

  • Menurut Hetzel 1973
    Testing adalah proses pemantapan kepercayaan akan kinerja program atau sistem sebagaimana yang diharapkan.
  • Menurut Myers 1979
    Testing adalah proses eksekusi program atau sistem secara intens untuk menemukan error.
  • Menurut Hetzel 1983 (Revisi)
    Testing adalah 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
    Testing adalah proses menganalisa suatu entitas software untuk mendeteksi perbedaan antara kondisi yang ada dengan kondisi yang diinginkan (defects / error / bugs) dan mengevaluasi fitur-fitur dari entitas software.

Beberapa pandangan praktisi tentang testing, adalah sebagai berikut :

  • Melakukan cek pada program terhadap spesifikasi.
  • Menemukan bug pada program.
  • Menentukan penerimaan dari pengguna.
  • Memastikan suatu sistem siap digunakan.
  • Meningkatkan kepercayaan terhadap kinerja program.
  • Memperlihatkan bahwa program bekerja dengan benar.
  • Membuktikan bahwa error tidak terjadi.
  • Mengetahui akan keterbatasan sistem.
  • Mempelajari apa yang tidak dapat dilakukan oleh sistem.
  • Melakukan evaluasi kemampuan sistem.
  • Verifikasi dokumen.
  • Memastikan bahwa pekerjaan telah terselesaikan.

Berikut ini adalah pengertian Testing yang dihubungkan dengan proses verifikasi dan validasi software :
Testing software adalah proses mengoperasikan software dalam suatu kondisi yang dikendalikan, untuk (1) verifikasi apakah telah berlaku sebagaimana telah ditetapkan (menurut spesifikasi), (2) mendeteksi error , dan (3) validasi apakah spesifikasi yang telah ditetapkan sudah memenuhi keinginan atau kebutuhan dari pengguna yang 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 sistem, apakah proses yang 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 terjadi dimana seharusnya mereka ada.

Dari beberapa definisi di atas, dapat kita lihat akan adanya banyak perbedaan pandangan dari praktisi terhadap definisi testing. Namun secara garis besar didapatkan bahwa testing harus dilihat sebagai suatu aktifitas yang menyeluruh dan terus-menerus sepanjang proses pengembangan. Testing merupakan aktifitas pengumpulan informasi yang dibutuhkan untuk melakukan evaluasi efektifitas kerja.

Jadi tiap efektifitas yang digunakan dengan obyektifitas untuk menolong kita dalam mengevaluasi atau mengukur suatu atribut software dapat disebut sebagai suatu aktifitas testing. Termasuk di dalamnya review, walk-through, inspeksi dan penilaian serta analisa yang ada selama proses pengembangan. Dimana tujuan akhirnya adalah untuk mendapatkan informasi yang dapat diulang secara konsisten (realible) tentang hal yang mungkin sekitar software dengan cara termudah dan paling efektif, antara lain :

  • Apakah software telah siap digunakan ?
  • Apa saja resikonya ?
  • Apa saja kemampuannya ?
  • Apa saja keterbatasannya ?
  • Apa saja masalahnya ?
  • Apakah telah berlaku seperti yang diharapkan ?

(Sumber : Testing dan Implementasi Sistem, Romeo, ST, 2003. Stikom Surabaya)

Follow

Get every new post delivered to your Inbox.