Sabtu, 13 Juli 2013

Tugas Artikel Testing dan Implementasi Sistem


Introduction

Apa itu Software Testing? Ada dua pendapat yang menjelaskan pengertian dari Software Testing.
  1. Software testing is any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results. [Hetzel88].
  2. Software Testing is the process of executing a program or system with the intent of finding errors. [Myers79].
Testing lebih dari sebuah pemahaman tentang debugging. Tujuan dari Software Testing dapat berupa quality assuranceverification and validation, dan reliability estimation. Dua area besar dalam testing adalah correctness testing dan reliability testing. Hal-hal utama yang harus dipertimbangkan dalam menjalankantesting adalah budgettime, dan quality.
Software tidak seperti kebanyakan physical process yang lainnya, dimana input diterima dan ouput akan dihasilkan. Software memiliki kecendrungan untuk mengalami kesalahan disaat timbul kekompleksitasannya.  Tidak seperti kebanyakan physical process, kesalahan yang sering terjadi dalam pengembangansoftware terletak pada proses desain(design) daripada pada saat pengkodean.
Software bugs dapat muncul pada setiap pengembangan software module dengan ukuran yang moderate, bukan karena kekuranghati-hatian dan kurangnyaprogrammer responsibilities, melainkan karena kekompleksitasannya software tersebut dan keterbatasannya manusia untuk mengatur kekompleksitasan.
Sebuah metodologi yang menarik dalam software testing adalah sama halnya dengan penggunaan pestisida, yang lebih dikenal dengan nama Pesticide Paradox. Segala metode yang Anda gunakan untuk mencegah ataupun mencari bugs pada sebuah software dapat menimbulkan bugs halus kepada metode-metode lainnya yang tidak efektif. Sekali lagi walaupun telah dilakukan pengujian terhadap sebuah software, namun tidak dapat menjamin bahwa software tersebut akan 100% aman, hal ini karena adanya “Complexity Barrier” [Beizer90].
Software complexity(and therefore that of bugs) grows to the limits of our ability to manage that complexity.

Software Testing Purpose

Apa tujuan dari Software Testing? Apakah tujuan utama dari software testing adalah untuk menjamin bahwa software yang dibangun bebas dari error atau kesalahan. Jika tujuan utama Anda seperti yang saya katakan sebelumnya, Anda telah salah besar dalam melakukan testing. Seperti yang telah diuraikan sebelumnya bahwa dengan software testing Anda tidak dapat menjamin bahwa software Anda tersebut akan bebas dari bugs. Yang Anda dapat pastikan bahwaerror dan bugs yang ditemukan sebelumnya telah diperbaiki dan tidak muncul lagi untuk kedepannya.
Tujuan utama dari Software Testing adalah:

To improve quality

Seperti penggunaan komputer dan software yang digunakan pada aplikasi-aplikasi kritis, bugs yang terjadi dapat keparahan. Jika timbulnya bugs dapat menyebabkan kerugian besar baik secara materi maupun jiwa. Bugs pada sebuah sistem yang kritis telah menyebabkan kecelakaan pesawat terbang, misi ulang alik untuk manjadi kacau, penghentian perdagangan di pasar saham, dan lebih buruknya bug dapat membunuh. Bugs dapat menyebabkan bencana. [Bugs] Dalam dunia yang menerapkan komputerisasi, kualitas dan kehandalan software terkait dengan masalah hidup dan mati.
Quality berarti kesesuaian dengan persyaratan desain yang telah ditentukan. Salah satu hal yang harus terpenuhi dalam pencapaian kuliatas  jika persyaratan minimum kualitas, berarti melakukan seperti yang dipersyaratkan dalam keadaan tertentu, sudah terpenuhi. Debugging, pandangan sempit tentang pengujian perangkat lunak, dilakukan secara besar-besaran untuk menemukan cacat desain oleh programmer. Ketidaksempurnaan sifat manusia hampir mustahil untuk membuat program yang cukup kompleks benar untuk pertama kalinya. Menemukan kesalahan dan membuat mereka terselesaikan [Kaner93], adalah tujuan dari fase debugging pada pemrograman.

For verification and validation

Kita tidak dapat menguji kualitas secara langsung, tetapi kita dapat menguji faktor-faktor yang terkait untuk menjadikan kualitas tersebut terlihat. Kualitas memiliki tiga set faktor – functionalityengineering, and adaptability. Ketiga kumpulan faktor tersebut dapat dianggap sebagai dimensi dalam software area. Perhatikan tabel dibawah ini.
Functionality (exterior quality)Engineering (interior quality)Adaptability (future quality)
CorrectnessEfficiencyFlexibility
ReliabilityTestabilityReusability
UsabilityDocumentationMaintainability
IntegrityStructure
Pengujian dengan tujuan untuk memvalidasi kerja produk dinamakan tes yang bersih, atau tes positif. Kekurangannya adalah bahwa hal itu hanya dapat memvalidasi bahwa software itu bekerja untuk test cases tertentu. Sejumlah test case yang terbatas tidak dapat memvalidasi bahwa software itu bekerja untuk semua situasi dan kondisi. Sebaliknya, dengan satu pengujian saja gagal cukup untuk menunjukkan bahwa software tidak berfungsi. Tes kotor, atau tes negatif, mengacu pada tes bertujuan melumpuhkan software, atau menunjukkan bahwa software tersebut tidak bekerja.

For reliability estimation

Software reliability memiliki hubungan penting dengan banyak aspek, termasuk struktur, dan jumlah pengujian telah ditujukan. Berdasarkan profil operasional, pengujian dapat digunakan sebagai metode sampling statistik untuk memperoleh data kegagalan untuk tujuan estimasi keandalan.
Softwrae testing tetap menjadi sebuah seni, karena kita tidak dapat menjadikannya sebuah ilmu pengetahuan. Kita masih menggunakan teknik pengujian yang sama ditemukan 20-30 tahun yang lalu, beberapa di antaranya dibuat metode atau heuristik daripada metode teknik yang baik. Software pengujian dapat begitu mahal terutama di tempat-tempat yang nyawa manusia dipertaruhkan. Kita tidak pernah bisa yakin bahwa suatu bagian dari software benar. Kita tidak pernah bisa memastikan bahwa spesifikasi tersebut sudah benar. Tidak ada sistem yang dapat memverifikasi suatu program sudah benar. Sebab kita juga tidak pernah yakin bahwa sistem verifikasi tersebut benar-benar baik.

Key Concepts

Hal-hal yang konsep penting dalam melakukan pengujian perangkat lunak.

Testing Technique

1. Blackbox Testing

Blackbox Testing adalah sebuah metode pengujian dimana data pengujian diperoleh dari functional requirements yang spesifik tanpa memperhatikan struktur akhir program. [Perry90] Hal ini juga termasuk pengujian data driveninput/output driven [Myers79], atau requirements-based [Hetzel88]. Karena hanya fungsisoftware module yang diperhatikan, blackbox testing lebih mengacu pada functional testing – metode pengujian ini lebih menekankan pada pengeksekusian fungsi dan pemeriksaan kesesuaian dari data input dan output. [Howden87]. Pada peengujian dengan blackbox testing, seorang penguji tidak akan secara langsung berhubungan dengan control flowdata flow, dan code program. Seorang penguji memperhatikan kesesuaian antara output dari input yang diberikan. Dari mana kita memperoleh test cases? Segala test cases yang digunakan pada setiap pengujian diperoleh dari spesifikasi.
Sebuah rencana pengujian yang baik tidak akan hanya menggunakan blackbox testing, tetapi juga whitebox testing, dan kombinasi dari keduanya.

2. Whitebox Testing

Sangat berbeda jauh dengan yang namanya blackbox testing, sebuah software dipandang dari sebuah kotak putih atau kotak kaca yang berarti segala sesuatu yang terdapat didalam kotak tersebut sangat jelas kepada yang melihatnya. Rencana pengujian dibuat sesuai dengan detail dari implementasi software seperti bahasa pemrograman, logika, dan style. Test cases diperoleh dari struktur program. Whitebox testing juga seing disebut glassbox testing, logic-driven testing [Myers79] atau design-based testing [Hetzel88].
Pada pengujian dengan menggunakan whitebox testing, seorang penguji harus menyentuh control flow, data flow, dan code program untuk menguji software tersebut. Pengujian dengan whitebox testing, seorang penguji paling tidak harus mengeksekusi setiap baris kode program paling tidak satu kali.

Taxonomy

Pembagian tetsing dapat dikelompokkan kedalam beberapa bagian:
  1. Purpose
    • Correctness testing
    • Performance testing
    • Reliability testing dan
    • Security testing
  2. Life cycle Phase
    • Requirements phase testing
    • Design phase testing
    • Program phase testing
    • Evaluating test results
    • Installation phase testing
    • Acceptance testing dan
    • Maintenance testing
  3. Scope
    • Unit testing
    • Component testing
    • Integration testing dan
    • System testing

When to stop testing?

Pengujian secara potensial tak terbatas. Kita tidak dapat secara terus menerus mencari segala bugs yang belum ditemukan dan yang belum dibuang. Hal ini sangat tidak mungkin. Pada saat yang bersamaan kita harus mengantarkan software tersebut. Nah sekarang pertanyaannya kapan ???
Kapan kita harus berhenti melakukan pengujian? Ketika keandalan yang dimaksud telah memenuhi requirement yang dibutuhkan, atau keuntungan dari pengujian tersebut sudah tidak dapat lagi menyeimbangkan biaya pengujian. [Yang95]

Kesimpulan

  • Software testing merupakan sebuah seni. Karena metode pengujian yang digunakan sangat tidak berbeda dari 20 tahun sebelumnya.
  • Testing lebih daripada yang namanya debugging. Testing tidak hanya sebatas untuk mencari dan menemukan letak kesalahan dan memperbaikinya. Testing lebih terlibat pada verifikasi, validasi proses, dan pengukuran keandalan sebuah sistem.
  • Biaya untuk melakukan pengujian sangat mahal. Dengan menggunakan teknik automisasi dapat memangkas biaya dan waktu yang dikeluarkan untuk pengujian.
  • Pengujian yang lengkap sangat tidak mungkin, karena akar dari setiap permasalahan adalah kompleksitas. Oleh karena itu software testing juga harus dihentikan dan produk harus disampaikan kepada user.
  • Testing mungkin bukan metode yang paling efektif untuk meningkatkan kualitas, namun dengan melakukan pengujian sebelum peluncuran produk sangat memberikan kontribusi yang besar untuk peningkatan kualitas software. Metode alternatif yang dapat digunakan adalah inspection dan clean-room engineering mungkin dapat memberikan kontribusi yang lebih.
  • Penyumbang terbesar bugs dalam pengembangan software adalah Spesifikasi.

Tidak ada komentar:

Posting Komentar