Oleh:
Kelompok 8
2021
Kata Pengantar
Puji syukur atas kehadirat Allah SWT yang telah memberikan rahmat dan
hidayah-Nya sehingga kami dapat menyelesaikan makalah yang berjudul “Software
Quality Assurance” ini tepat pada waktunya. Adapun tujuan dari penulisan makalah ini
adalah memenuhi tugas dari Andrey Kartika Widhy Hapantenda,S.Kom.,M.Kom pada
mata kuliah Jaminan Kualitas Perangkat Lunak. Kami berharap semoga makalah ini
dapat menambah pengetahuan dan bermanfaat bagi pembaca.
Kami sampaikan terima kasih kepada dosen mata kuliah Bahasa Indonesia yang
telah memberikan bimbingan serta arahan selama proses perkuliahan. Tak lupa kami
sampaikan terima kasih kepada semua pihak yang telah memberikan bantuan berupa
waktu dan pengetahuannya sehingga dapat menyelesaikan makalah ini. Kami
menyadari bahwa masih banyak kekurangan dan jauh dari kata sempurna baik segi
penyususan, bahasa, maupun penulisannya. Oleh karena itu, kami sangat
mengharapkan kritik dan saran yang membangun dari semua pembaca demi terciptanya
makalah yang lebih baik untuk masa mendatang.
i
Daftar Isi
Kata Pengantar......................................................................................................... i
BAB I ....................................................................................................................... 1
PENDAHULUAN .................................................................................................... 1
1.1Latar Belakang ................................................................................................. 1
1.2. Tujuan ............................................................................................................ 1
1.3Manfaat ............................................................................................................ 2
BAB II ...................................................................................................................... 3
PEMBAHASAN ...................................................................................................... 3
Aktivitas Software Quality Assurance .................................................................... 4
Metode - Metode SQA dan Penjelasan ................................................................... 8
Software Quality Assurance Tools (SQA Tools) ................................................... 12
PENUTUP.............................................................................................................. 26
Kesimpulan ......................................................................................................... 26
ii
BABI
PENDAHULUAN
1.2 Tujuan
Tujuan dari makalah ini adalah sebagai berikut :
1. Menjelaskan mengenai seperti apa itu Software Quality Assurance.
2. Menjelaskan metode – metode yang digunakan oleh Software Quality
Assurance.
3. Menjelaskan tools yang digunakan selama mereka melaksanakan
kewajibannya.
1
1.3 Manfaat
Manfaat dari makalah ini adalah sebagai berikut :
1. Memberitahukan bagaimana dan seperti apa itu Software Quality Assurance.
2. Dapat memberitahukan kepada pembaca metode apa yang digunakan oleh
Software Quality Assurance.
3. Memberitahukan tools yang dibutuhkan sesuai dengan perangkat lunak yang
sedang diuji oleh Software Quality Assurance.
2
BAB II
PEMBAHASAN
Software Quality adalah kesesuaian yang diharapkan pada semua software yang
dibangun dalam hal fungsi software yang diutarakan dan untuk kerja software, standar
pembangunan software yang terdokumentasi dan karakteristik yang ditunjukkan oleh
software. Definisi ini menekankan pada 3 hal yaitu :
1. Kebutuhan software adalah fondasi untuk pembangunan software, jika
software tidak sesuai dengan kebutuhan yang ditentukan maka kualitaspun
kurang.
3. Sering kali ada kualitas yang secara langsung diutarakan seperti kemudahan
penggunaan dan pemeliharaan yang baik. Kualitas software dipertanyakan
jika tidak memenuhi kebutuhan ini.
3
masukan atas aplikasi yang diuji, serta berkomunikasi dengan pihak-pihak yang
berkepentingan seperti, UI/UX, Back-End, Front-End, atau Product Manager (PM).
Testing (Pengujian)
Software Testing adalah fungsi kontrol kualitas yang memiliki satu tujuan utama, yaitu
untuk menemukan kesalahan. Tugas SQA adalah memastikan bahwa pengujian
direncanakan dengan baik dan dilakukan secara efisien sehingga memiliki
kemungkinan tertinggi untuk mencapai tujuan utamanya. Pengujian software biasanya
mengkombinasikan strategi beberapa tahapan/langkah dengan sejumlah desain metode
uji kasus yang membantu memastikan pendeteksian kesalahan yang efektif.
4
Change Management (Perubahan Manajemen)
Perubahan adalah aspek yang sering menganggu dari setiap proyek perangkat lunak.
Jika tidak dikelola dengan baik, perubahan dapat menyebabkan kebingungan dan
mengarah pada kualitas perangkat lunak yang buruk. Proses pengawasan perubahan
memberikan kontribusi secara langsung terhadap kualitas software dengan permintaan
perubahan yang diformalkan. Pengawasan perubahan diaplikasikan selama
pengembangan software dan setelahnya, atau selama tahapan pemeliharaan software.
Education (Edukasi)
Setiap software organization ingin meningkatkan software engineering practices.
Kontributor utama dalam peningkatan adalah pendidikan software engineers, manajer
dan stakeholder lainnya.
5
Safety(Keamanan)
SQA bertanggung jawab untuk menilai dampak kegagalan perangkat lunak untuk
memulai langkah-langkah yang diperlukan untuk mengurangi resiko.
Measurement (Pengukuran)
Merupakan aktivitas yang melengkapi setiap bidang pengembangan. Tujuan utama dari
SQA adalah untuk menelusuri kualitas software dan memperkirakan pengaruh dari
perubahan secara metodologi maupun prosedur pada peningkatan kualitas software.
Menurut McCall terdapat 3 aspek penting dari suatu produk software, yaitu :
karakteristik operasional, kemampuan perubahan ketika software sudah berjalan, dan
kemampuan beradaptasi terhadap lingkungan baru. Selain itu McCall menyediakan
beberapa deskripsi yaitu :
1. Correctness (Kebenaran), tingkat pemenuhan program terhadap kebutuhan
yang dispesifikasikan dan memenuhi tujuan/misi pengguna.
2. Reliability (Keandalan), tingkat kemampuan program yang diharapkan dapat
menampilkan fungsi yang dimaksud dengan presisi yang ditetapkan.
3. Efficiency (Efisiensi), jumlah sumberdaya yang diproses dan kode yang
diperlukan oleh program untuk melaksanakan fungsinya.
4. Integrity (Integritas), tingkat kemampuan pengawasan akses terhadap data
atau software oleh orang-orang tertentu.
5. Usability, usaha yang diperlukan untuk mempelajari, mengoperasikan,
menyiapkan masukan dan mengartikan keluaran program.
6. Maintainability, usaha yang diperlukan untuk menetapkan dan memperbaiki
kesalahan dalam program.
6
7. Flexibility, usaha yang diperlukan untuk memodifikasi program operasional.
8. Testability, usaha yang diperlukan untuk menguji program untuk memastikan
bahwa program melaksanakan fungsi yang telah ditetapkan.
9. Portability, usaha yang diperlukan untuk memindahkan program dari
hardware/lingkungan sistem software tertentu ke lainnya.
10. Reusability, tingkat kemampuan program/bagian dari program yang dapat
dipakai ulang dalam aplikasi lainnya, berkaitan dengan paket dan lingkup dari
fungsi yang dilakukan oleh program.
11. Interoperability, usaha yang diperlukan untuk menggabungkan satu sistem
dengan sistem lainnya.
Terdapat beberapa ukuran (metric) yang didefinisikan dan penilaiannya diukur secara
objektif. Pengukuran biasanya dalam bentuk checklist dengan menggunakan skala
0-10. McCall menetapkan beberapa pengukuran yang dapat digunakan, diantaranya :
1. Auditability, kemudahan yaitu penyesuaian terhadap standar yang dapat
diperiksa.
2. Accuracy, ketepatan perhitungan dan kontrol.
3. Communication commonality, tingkatan dimana interface standar, protokol
dan bandwidth digunakan.
4. Completeness, tingkatan dimana implementasi lengkap dari fungsi yang
dibutuhkan telah tercapai.
5. Conciseness, kepadatan program dalam jumlah baris kode.
6. Consistency, penggunaan rancangan dan teknik dokumentasi dalam satu
bentuk diseluruh proyek pengembangan software.
7. Data commonality, penggunaan struktur dan tipe data standar diseluruh
program.
8. Error tolerance, kerusakan yang muncul ketika program menemukan
kesalahan/kegagalan.
9. Execution efficiency, performa run-time suatu program.
10. Expandability, tingkatan dimana rancangan arsitektural, data atau prosedur
7
dapat dikembangkan.
11. Generality, lingkup aplikasi potensial dari suatu komponen program.
12. Hardware independece, tingkatan dimana software dipisahkan dari hardware
yang mengoperasikannya.
13. Instrumentation, tingkatan dimana pengawasan program memiliki operasi
tersendiri dan mengidentifikasikesalahan yang terjadi.
14. Modularity, kemandirian fungsional dari suatu komponen program.
15. Operability, kemudahan pengoperasian program.
16. Security, ketersediaan mekanisme yang mengontrol atau menproteksi program
dan data.
17. Self-documentation, tingkatan dimana kode sumber menyediakan dokumentasi
yang berarti.
18. Simplicity, tingkatan dimana program dapat dimengerti tanpa kesulitan.
19. Software system independence, tingkatan dimana program mandiri terhadap
feature bahasa pemrograman nonstandar, karakteristik sistem operasi, dan
batasan-batasan lingkungan lainnya.
20. Traceability, kemampuan penelusuran ulang representasi rancangan atau
komponen program yang sesungguhnya dengan kebutuhan awal
(requirements).
21. Training, tingkatan dimana software membantu dalam user yang baru dalam
penerapan sistem.
1. Performance Testing
Performance test adalah integration dan usability test yang menentukan apakah system
or subsystem dapat memenuhi kriteria kinerja berbasis waktu seperti response time atau
throughput. Response time menentukan batas waktu maksimum yang diijinkan dari
respon software untuk query dan update. Throughput menentukan jumlah minimum
query dan transaksi yang harus diproses per menit atau per jam.
8
2. System Testing
System test adalah integration test dari behavior seluruh sistem atau independent
subsystem. System testing biasanya dilakukan pertama kali oleh pengembang atau
personil pengujian untuk memastikan bahwa keseluruhan sistem tidak berfungsi dan
bahwa sistem telah memenuhi persyaratan pengguna (user requirement). System
testing biasanya dilakukan di akhir setiap iterasi untuk mengidentifikasi isu -- isu
penting, seperti masalah performance yang perlu ditangani di iterasi berikutnya.
Biasanya test ini harus dilakukan sesering mungkin.
3. Unit Testing
Unit testing adalah proses metode pengujian individual, class, atau komponen sebelum
mereka terintegrasi dengan perangkat lunak lainnya. Tujuan dari unit testing adalah
untuk mengidentifikasi dan memperbaiki kesalahan sebanyak mungkin sebelum modul
-- modul digabungkan menjadi unit perangkat lunak yang lebih besar, seperti program,
class dan subsistem. Kesalahan menjadi lebih sulit dan mahal untuk ditemukan dan
diperbaiki ketika banyak unit telah digabungkan.
Unit testing memerlukan implementasi dari driver dan/atau stub. Stub adalah class atau
method dummy yang dapat dipanggil namun biasanya tidak melakukan apapun kecuali
mengembalikan tipe yang diperlukan. Modul driver adalah program yang menjalankan
method atau fungsi dari class yang akan ditest.Berikut adalah langkah yang harus
dilakukan :
4. Integration Testing
Integration test adalah mengevaluasi behavior dari kelompok method atau class.
Tujuan dari integration test adalah untuk mengidentifikasi kesalahan yang tidak dapat
9
dideteksi oleh unit testing. Kesalahan tersebut mungkin disebabkan oleh beberapa
masalah, diantaranya :
Unexpected state interactions, misalnya state dari dua atau lebih objek yang
berinteraksi menyebabkan kesalahan yang kompleks seperti ketika method
class Order menjalankan satu kesalahan dari semua kemungkinan state objek
Customer.
Beberapa masalah di atas merupakan kesalahan paling umum yang sering ditemui
dalam integration testing, tetapi sebenarnya masih banyak masalah lainnya yang dapat
menjadi penyebab kesalahan (error).
5. Usability Testing
Usability test adalah test untuk menentukan apakah method, class, subsistem, atau
sistem telah memenuhi persyaratan pengguna. Oleh karena banyaknya tipe persyaratan
sistem baik yang fungsional maupun non-fungsional, maka banyak tipe dari usability
test yang harus dilakukan di waktu yang berbeda. Umumnya usability test
mengevaluasi persyaratan fungsional dan kualitas dari user interface.
User berinteraksi dengan sistem untuk menentukan apakah fungsi telah seperti yang
diharapkan dan apakah user interface membuat sistem dapat mudah digunakan.
Pengujian ini sering dilakukan untuk mendapatkan feedback yang cepat dalam
meningkatkan interface dan mengkoreksi kesalahan dalam komponen perangkat
lunak.
10
6. Smoke Testing
Smoke testing adalah system test yang biasanya dilakukan setiap hari atau beberapa
kali per minggu. Build and smoke test sangat penting karena menyediakan feedback
yang cepat dalam masalah yang signifikan.
7. Stress Testing
Stress Testing adalah pengujian yang biasanya dilakukan dalam membuat sebuah
website, dimana stress testing dilakukan untuk mengetahui sekuat apa server website
kita menampung visitor dalam website tersebut, dengan cara melakukan hit dummy ke
website menggunakan tools.
Acceptance Testing biasanya dilakukan setelah rangkaian testing seperti Unit Testing,
Integration Testing, dan System Testing selesai dan menggunakan metode Black Box
Testing, dengan mengunakan dokumen test case untuk di presentasikan di akhir ke user
/ client.
11
Software Quality Assurance Tools (SQA Tools)
1. Security Testing Tools
i. NetSparker, adalah alat pengujian keamanan yang secara otomatis
memindai situs web, aplikasi web, dan layanan web untuk mencari
kerentanan. Salah satu pemindai yang secara otomatis mengidentifikasi
dan memverifikasi kerentanan dengan bukti konsep. Fitur yang tersedia
adalah :
1. Solusi keamanan web gratis yang terjangkau dan terawat.
2. Pemindai kerentanan web online yang dapat dikonfigurasi.
3. Dapat dengan mudah mengintegrasikan pemindaian keamanan
web di SDLC.
4. Mendukung kolaborasi tingkat perusahaan.
ii. OWASP (Open Web Application Security Project), adalah alat yang
membantu organisasi mengembangkan, membeli, dan memelihara web
dan perangkat lunak yang dapat diandalkan dan dipercaya. Fitur yang
tersedia adalah :
1. Verifikasi untuk keamanan sering dan sejak dini.
2. Validasi semua jenis input.
3. Menerapkan kontrol identitas dan otentikasi.
4. Terapkan semua kontrol akses yang sesuai.
iii. Acunetix Vulnerability, adalah alat penguji keamanan terkemuka. Ia
dapat menemukan berbagai jenis kerentanan keamanan daripada
pemindai lain dan menampilkan jumlah positif palsu paling sedikit.
Fitur yang tersedia adalah :
1. Pengujian skrip lintas situs paling canggih dan injeksi SQL yang
mendalam.
2. Pemindaian komprehensif aplikasi halaman tunggal dan situs
web berbasis JavaScript
3. Deteksi kerentanan XSS berbasis DOM
12
2. API Testing Tools
i. SoapUI, adalah salah satu alat pengujian terbaik yang merupakan alat
open source linntas platform untuk pengujian fungsional SOAP dan
REST, ditulis menggunakan bahasa Java. Terutama digunakan untuk
melakukan pengujian fungsional dan beban pada API. Fitur yang
tersedia adalah :
1. GUI perangkat lunak mudah ditangani dan menggunakan fitur
pengujian.
2. Kerentanan membantu mengamankan situs web dari peretasan
dan virus.
3. Analisis rinci dapat dilakukan dengan menggunakan fitur
pelaporannya.
4. Fitur SQL Injection menyediakan beberapa kueri dan metode
SQL standar untuk mengidentifikasi area lemah aplikasi.
ii. The FogBugz, alat pelacak yang dapat digunakan untuk melacak status
kerusakan dan perubahan dalam proyek perangkat lunak yang sedang
berlangsung, seperti pengembangan dan penerapan aplikasi. Secara
khusus dapat membantuk organisasi untuk melacak bug untuk banyak
proyek. Fitur yang tersedia adalah :
1. Memberikan fleksibilitas untuk mencari informasi dalam waktu
singkat.
2. Memberikan dukungan untuk manajemen proyek Agile.
3. Pemberitahuan dan email untuk membuat anggota tim
diperbarui tentang perubahan pada proyek dan kasus.
iii. Bugzilla, salah satu sistem pelacak kecacatan sistem terbaik. Alat ini
memungkinkan individu atau kelompok pengembang untuk melacak
bug yang luar biasa di sistem mereka. Bugzilla adalah perangkat lunak
open source terbaik yang digunakan di pasar oleh organisasi skala kecil
maupun skala besar. Fitur yang tersedia adalah :
1. Struktur basis data yang dioptimalkan untuk meningkatkan
kinerja dan skalabilitas.
2. Alat kueri tingkat lanjut yang mengingat pencarian yang
disesuaikan dari pengguna.
3. Profil pengguna dapat diedit dan preferesi email yang
komprehensif.
16
4. Mekanisme ekstensi untuk instalasi yang dapat dikustomisasi.
iv. BugNet, adalah alat penemu bug yang open source dan lintas platform
yang ditulis menggunakan platform ASP.NET, dan membutuhkan
database MySQL sebagai alat backend. Tujuan utama alat pelacak
kerusakan ini adalah untuk membuat basis kode sederhana dan mudah
digunakan. Fitur yang tersedia adalah :
1. Aplikasi berbasis web yang open source di bawah lisensi GPL.
2. Alat BugNET membuatnya mudah untuk mengajukan,
mengelola, dan melaportkan bug.
3. Alat ini mendukung banyak basis data.
4. Menawarkan navigasi yang mudah dan administrasi yang
mudah.
v. RedMine, adalah alat pelacak kerusakan penting lainnya. Versi dasar
alat ini adalah sumber terbuka dan bekerja pada mesin apapun yang
mendukung Ruby. Membutuhkan lebih banyak waktu untuk proses
penginstalan, akan tetapi setelah dipasang akan berjalan dengan lancat.
Fitur yang tersedia adalah :
1. Membagikan masalah melalui email.
2. Menawarkan dukungan untuk beberapa database.
3. Sistem pelacakan masalah yang fleksibel.
25
BABIII
PENUTUP
Kesimpulan
Software Quality Assurance adalah salah satu bidang yang sangat dibutuhkan
untuk memberikan penilaian kelayakan sebuah sistem. Selain dilihat berdasarkan
penilaian individual, terdapat juga penilaian kelompok yang menjamin kelayakan
sistem tersebut. Setiap penilaian yang dilakukan menggunakan tools dan metode
tersendiri sesuai dengan kebutuhan dan jenis sistem yang akan dinilai. Terdapat dua
macam pembagian tugas pada SQA, diantaranya adalah QA Tester dan QA Engineer.
Tugas utama QA Tester adalah melaksanakan pengujian terhadap perangkat atau
emulator, membuat alur pengujian, serta membuat laporan hasil pengujian. Sementara
QA Engineer bertugas untuk membuat program pengujian otomatis, membuat laporan
pengujian, memberikan masukan atas aplikasi yang diuji, serta berkomunikasi dengan
pihak-pihak yang berkepentingan seperti, UI/UX, Back-End, Front-End, atau Product
Manager (PM).
Ada berbagai macam metode yang dapat digunakan oleh SQA diantaranya,
Performance Testing yaitu metode yang menentukan apakah sistem dapat memenuhi
kriteria berbasis waktu seperti response time atau throughtput. Selanjutnya adalah
metode Unit Testing yang dimana proses pengujian individual, class, atau komponen
sebelum mereka terintegrasi dengan perangkat lunak lainnya. Selain itu untuk
mengidentifikasi dan memperbaiki kesalahan sebanyak mungkin sebelum modul
digabungkan
26
Daftar Pustaka
27