Software Testing


Software testing adalah proses menganalisis kesalahan - kesalahan yang mungkin terjadi dalam pengembangan perangkat lunak, untuk mendeteksi perbedaan yang terjadi antara software dengan kebutuhannya apakah terjadi bug atau tidak juga untuk mengevaluasi fitur dari software tersebut. Hal ini seharusnya dilakukan selama proses pengembangan software

Software testing merupakan bagian dari verifikasi dan validasi.
1. Verifikasi
 - Mengevaluasi sistem untuk memastikan apakah produk yang dikembangkan sudah memenuhi kondisi seperti yang telah ditetapkan pada fase awal.
2. Validasi
 - Mengevaluasi sistem pada akhir proses pengembangan untuk memastikan apakah produk yang
   dikembangkan sudah memenuhi spesifikasi kebutuhan.
 - Memastikan apakah fitur dalam software sudah memuaskan kebutuhan pelanggan

Ada dua metode dasar dalam software testing
1. Black box testing
   Disebut juga dengan fungsional testing. Testing ini hanya sebatas pengujian terhadap fitur - fitur dalam
   software. Biasa digunakan untuk validasi
2. White box testing
   Disebut juga dengan struktural testing. Testing ini dilakukan dengan melihat langsung kedalam modul
   untuk meneliti kodingan dari software dan menganalisis apakah ada kesalahan atau tidak. Biasa
   digunakan untuk verifikasi

Ada enam tipe dari software testing :
1. Unit Testing
 - Testing terhadap hardware atau software dari unit - unit yang berhubungan
 - White box testing
 - Spesifikasi : desain dan struktur koding
 - contoh : tester akan menulis beberapa kode testing yang akan memanggil methode dengan parameter
   tertentu dan memastikan hasilnya seperti yang diharapkan

2. Integrasi testing
 - Pengujian dimana komponen software, hardware atau keduanya sudah menyatu dan sudah diuji to
   mengevaluasi interaksi dari 2 hal tersebut
 - Memverifikasi bahwa unit sudah menyatu ketika dihubungkan dengan basis koding yang lebih besar
 - Black dan white box testing
 - desain level rendah - tinggi

3. Fungsional & sistem testing
 - Fungsional testing memastikan spesifikasi fungsional dalam kebutuhan terpenuhi
 - Sistem testing melibatkan penempatan program baru kedalam lingkungan lingkungan yang berbeda - beda
   untuk memastikan dapat bekerja pada lingkungan pelanggan dengan berbagai versi dan tipe sostem
   opereasi
 - Black box testing
 - Spesifikasi : desain level tinggi, spesifikasi kebutuhan

4. Acceptance testing
 - Testing Formal yang dilakukan untuk memastikan apakah sistem memenuhi kriteria apa tidak dan agar
    pelanggan tahu apakah software dapat diterima oleh sistem
 - Kriteria dari sistem harus memuaskan agar diterima oleh pelanggan
 - Black box testing
 - Spesifikasi kebutuhan

5. Regression testing
 - Tes ulang sistem untuk verifikasi jika modifikasi yang dilakukan tidak menyebabkan effect yang tidak
    diinginkan dan sistem masih sesuai dengan spesifikasi kebutuhan
 - Dilakukan disemua siklus testing setelah terjadi perubahan yang signifikan (memperbaiki bug)
 - Black dan white box
 - Setiap perubahan dari dokumentasi, desain level tinggi

6. Beta Testing
 - Testing melibatkan potensial user dan beta tester
 - User mengisntal software dan menggunakannya, dan selanjutnya memberikan laporan dari setiap error
   yang ditemukan selama penggunaan kepada pengembang
 - Black box testing







Development and Quality Plan


Pengembangan software yang berkualitas itu sangat baik dan merupakan masalah penting bagi industri software.
Tantangan dalam mengembangkan software yang berkualitas
a) Akurasi data / informasi
 - Sistem informasi rumah sakit
 - sistem informasi untuk tujuan militer
b) Security
 - Sistem perbankan
 - Sistem informasi Pemerintahan
c) Kecepatan akses, bergantung pada :
 - Desain database
 - daerah pengguna (kapasitas bandwidth)

Rencana Pengembangan dan Perencanaan kualitas yang baik seharusnya :
- Menjadi dasar bagi proposal yang sudah diperiksa dan sudah terupdate
- Sudah lebih lengkap dibandingkan dengan proposal yang baru disetujui (jadwal, sumber daya, estimasi,  
  dan pengembangan evaluasi resiko)
- Sudah mencakup subject tambahan dari proposal yang disetujui

Rencana Pengembangan dan Perencanaan kualitas yang baik dibutuhkan untuk :
- Penjadwalan perkembangan aktivitas (waktu penyelesaian, pendanaan, sumber daya)
- Penyelesaian resiko
- kontrol proyek

Elemen - elemen dari rencana pengembangan antara lain :
1. Produk daru proyek
2. Interface proyek
3. Metode dan alat untuk mengembangkan proyek
4. Standar pengembangan software dan prosedurnya
5. Pemetaan dari proses pengembangan proyek
6. milestone proyek (dokumen, koding, laporan)
7. Penyusunan staff proyek (pembentukan tim, kepala tim dll)
8. Fasilitas pengembangan (software, hardware, dan kebutuhan lainnya)
9. Pengembangan resiko
10.Metode kontrol
11.Estimasi pengeluaran

Tugas pengembang apabila diabaikan dapat meningkatkan kemungkinan kegagalan proyek. Contoh :
1. Kesenjangan teknologi
2. Kekurangan staff

Elemen dari perencanaan kualitas, antara lain :
1. Kualitas tujuan
2. Meninjau rencana kegiatan
 - ruang lingkup kegiatan
 - tipe kegiatan
 - jadwal (prioritas)
 - rincian prosedur yang ingin diterapkan
 - pihak yang bertangjawab
3. Perencanaan software testing
 - Unit atau sistem yang akan di tes
 - Jenis testing yang akan digunakan
 - Jadwal testing
 - prosedur
 - pihak yang bertanggung jawab
4. Rencana penerimaan tes dari software yang dikembangkan
5. Susunan Manajemen

Components of SQA System


Sistem SQA terdiri dari 6 komponen antara lain :
1. Pre-Project Components
Tujuannya untuk meningkatkan langkah persiapan sebelum memulai project. Hal - hal yang perlu dilakukan deperti mereview kontrak, rencana pengembangan proyek dan perencanaan kualitas proyek. Kontrak review terdiri dari beberapa aktivitas :
a) Mengklarifikasi kebutuhan pelanggan
b) Mereview jadwal proyek dan mengestimasi resource
c) Evaluasi dari tenaga kerja profesional
d) Evaluasi resiko

Masalah yang sering terjadi pada rencana pengembangan proyek :
a) Jadwal
b) Resource yang dibutuhkan (manusia, software dan hardware)
c) Evaluasi resiko
d) Masalah organisasional
d) Metode proyek, alat pengembangannya

Masalah yang terjadi pada perencanaan kualitas proyek :
a) kualitas dari tujuan proyek (dapat diukur)
b) Kriteria untuk memulai dan mengakhiri setiap stage dari proyek
c) Daftar perencanaan review dan test termasuk jadwal untuk verifikasi dan validasi aktivitas proyek

2. Project Life Cycle Activities Assessment
Terdiri dari dua stage :
- Pengembangan siklus hidup
Tujuannya untuk menganalisa desain dan program error. Komponennya dibagi menjadi :
a) Review desain
b) Expert opinion
d) Software testing
e) Pemenuhan kualitas dari sub kontraktor dan pelanggan

- Pengerjaan dan Pemeliharaan. Tujuan untuk meningkatkan fungsi pemeliharaan

3. Infrastructure Error preventation and improvement
Tujuan utamanya adalah :
- Mencegah kesalahan software
- Mengurangi tingkat kesalahan software
- Meningkatkan Produktifitas

Termasuk:
- Prosedur dan instruksi kerja
- Template dan ceklist
- Pelatihan staff, pelatihan ulang dan sertifikasi
- Pencegahan dan pembenaran tindakan
- Pengaturan management
- Kontrol dalam pendokumentasian

4. Software Quality Management
Management komponen SQA, termasuk dalam :
- Pengontrolan progres proyek (pemeliharaan, kontrak)
  Berfokus pada: penggunaan resource, jadwal, manajemen resiko, dan biaya.
- Software quality metrics
  Mengukur banyaknya aspek dari kualitas software
- Software quality cost

5. Standardization, certification & SQA System Assessment
Tujuannya untuk :
- Pemanfaatan pengetahuan profesional
- Meningkatkan kordinasi dengan organisasi lain yang berhubungan dengan kualitas sistem
- Evaluasi dan pengukuran dari pencapaian kualitas sistem organisasi

6. Organizing for SQA - The Human Components
Tujuan utamanya adalah :
- Inisiasi dan mendukund implementasi dari komponen SQA
- Mendeteksi penyimpangan dari procedure dan metode SQA
- Menyarankan perbaikan

Organisasi SQA dasar meliputi :
- Manager
- Staff testing
- Para unit SQA dan praktisi yang tertarik pada software quality