Apa itu Quality Assurance?
Contents
Secara umum, QA (Quality Assurance) adalah suatu proses yang digunakan untuk menjaga standar suatu produk. Dalam ranah teknologi informasi, dikenal istilah Software Quality Assurance. SQA (Software Quality Assurance) adalah suatu proses yang digunakan untuk menjaga standar suatu aplikasi, dengan software sebagai orientasi produknya.
Apa Job Description seorang Quality Assurance?
Seorang Quality Assurance bertanggung jawab untuk menjaga kualitas suatu aplikasi. Caranya dengan meminimalisir defect yang terjadi pada aplikasi. Defect merupakan celah atau kecacatan pada suatu aplikasi yang biasanya sering kita sebut dengan error atau bug. Selain itu, seorang Quality Assurance juga harus memastikan bahwa aplikasi dapat digunakan oleh end–user (target user) dengan baik.
Mengapa Kita Butuh Quality Assurance?
Pembuatan Suatu Aplikasi Menggunakan Cost yang Tinggi
Cost yang dimaksud bisa dari waktu, biaya, dan sumber daya manusia. Jika tidak ada seorang Quality Assurance, ada kemungkinan kesalahan aplikasi baru ditemukan di akhir, bukan di awal ketika aplikasi baru berjalan. Dampaknya, instansi akan memerlukan biaya atau sumber daya manusia tambahan dan waktu yang diperlukan menjadi semakin lama. Oleh karena itu, adanya seorang Quality Assurance akan mencegah terjadinya hal seperti itu.
Menangani Bug atau Defect
Bug atau defect merupakan sesuatu yang pasti akan terjadi dalam pengembangan dan pembuatan aplikasi. Namun, ditemukan atau tidaknya bug maupun defect tersebut membutuhkan peran seorang Quality Assurance.
Meminimalisir Kekacauan
Dengan adanya Quality Assurance, kita dapat meminimalisir kekacauan yang ditimbulkan oleh bug atau defect yang akan terjadi. Hal ini sangat berbanding terbalik jika tidak adanya Quality Assurance. Misalnya, suatu aplikasi yang sudah jadi dan akhirnya digunakan oleh audiens, tetapi ketika user memakai aplikasi tersebut malah merasakan error. Hal tersebut akan menimbulkan kekacauan karena protes dari user. Tak hanya itu, kejadian tersebut juga menimbulkan kebingungan di pihak pembuat aplikasi karena bug baru ditemukan di akhir sehingga membuat mereka harus segera mengatasinya. Kekacauan tersebut bisa diminimalisir dengan adanya Quality Assurance.
Menghemat Cost
Kita dapat menghemat cost dengan cara membuat alur kerja pembuatan aplikasi secara efektif,. Di sinilah dibutuhkannya peran seorang Quality Assurance agar bisa mencapai target yang sesuai dan dalam rentang waktu yang efektif.
Standar Suatu Aplikasi
Correctness
Correctness merupakan kesesuaian output dari suatu aplikasi. Kesesuaian output tersebut bisa berupa akurasi atau kelengkapan data. Contohnya, saat kita ingin membuat aplikasi untuk dokumentasi atau pengumpulan dokumen. Correctness-nya yaitu apakah aplikasi tersebut sudah bisa mengumpulkan dokumen dengan baik, apakah orang bisa men-submit dokumennya tanpa ada error, dan apakah data dari dokumen tersebut sudah tersimpan dengan baik.
Reliability
Reliability adalah seberapa bisa diandalkannya suatu sistem dilihat dari frekuensi kegagalannya. Sebuah aplikasi pasti mempunyai downtime dan chance untuk gagal yang artinya fungsi aplikasi tidak berhasil karena ada suatu bug atau error. Reliability yang dimaksud adalah seberapa seringnya atau frekuensi hal tersebut bisa terjadi. Semakin kecil maka akan semakin baik.
Efficiency
Setiap aplikasi pasti mempunyai transfer data, sehingga akan melakukan komunikasi data. Efficiency-nya mengukur efektivitas tersebut. Misalnya ketika kita ingin mengolah data. Apakah datanya bisa diolah dengan baik, bisa ditransfer dengan baik, dan apakah indikator baiknya itu adalah waktu. Jadi, saat kita mengolah dan mentransfer data, semakin cepat waktunya, itu menandakan semakin efisien.
Integrity
Integrity merupakan persyaratan suatu sistem untuk bisa membatasi otoritas-otoritasnya. Misalnya, ketika Widya Analytic mempunyai database. Seharusnya tidak semua orang bisa mengganti isinya. Hanya pihak-pihak berwenang yang mempunyai otoritas untuk mengganti isi-isinya. Pihak berwenang harus bisa didefinisikan di sini. Artinya, harus ada kejelasan mengenai siapa yang bisa mengganti data (ex: nama, daftar pegawai) tersebut.
Usability
Usability berkaitan dengan end-user atau target user akhir. Jadi, semakin mudah digunakan, menandakan bahwa usability aplikasi tersebut sudah baik. Begitu juga sebaliknya. Jika end-user kebingungan menggunakan aplikasi tersebut, berarti usability aplikasi tersebut masih kurang sehingga harus kita analisis kembali mengenai apa yang bisa diperbaiki.
Maintainability
Maintainability sangat berkaitan dengan hal teknis. Maksudnya adalah seberapa mudah aplikasi atau software tersebut bisa di-maintain dengan baik, dari sisi code, database, maupun relasi.
Flexibility
Flexibility adalah aspek di mana ketika kita ingin mengembangkan suatu aplikasi, apakah aplikasi tersebut bisa atau tidak jika dikembangkan dengan aplikasi yang sudah ada. Terkadang, ada beberapa aplikasi yang sudah didesain sedemikian rupa, tetapi tidak bisa dikembangkan. Misalnya, ada keterbatasan database atau keterbatasan fungsi. Flexibility sangat penting untuk suatu aplikasi karena zaman terus berkembang sehingga demand juga akan selalu berubah.
Testability
Testability berguna agar aplikasi dapat dites dan dimonitor dengan baik. Biasanya sebuah aplikasi mempunyai log file. Indikatornya, apakah log file tersebut bisa kita akses atau bahkan developer bisa menunjukkan log-nya supaya testing-nya dipermudah sehingga bisa menjadi lebih cepat.
Portability
Portability yang dimaksud adalah seberapa portable aplikasi kita. Misalnya, ketika membuat aplikasi di desktop menggunakan komputer, kita memakai windows 10 versi 1.5. Nah, apakah aplikasi yang kita buat tersebut bisa digunakan di windows 10 versi 1.1, di Mac, atau di Android. Itu menjadi pertimbangan yang penting untuk suatu aplikasi.
Reusability
Setiap aplikasi mempunyai modul atau fungsi yang berbeda sesuai dengan maksud dan tujuannya. Namun, modul tersebut bisa atau tidak dipakai untuk aplikasi yang baru atau harus membuat aplikasi yang lain. Ini berguna untuk mempersingkat waktu ketika membuat aplikasi lain karena sudah ada aplikasi yang pernah kita buat.
Interoperability
Interoperability adalah seberapa fleksibel aplikasi kita bekerja dengan aplikasi lainnya. Contohnya, aplikasi Shopee. Interoperability-nya adalah apakah Shopee dapat bekerja dengan baik jika dengan Tokopedia. Seharusnya mereka bisa bekerja dengan baik, terlebih karena mereka mempunyai bidang yang sama yaitu e-commerce.
Alur Pembuatan Aplikasi dengan Menerapkan Quality Assurance
Software Planning
Pada tahap software planning, Quality Assurance mendefinisikan aplikasinya untuk apa, serta seperti apa fungsi dan alurnya. Misalnya, untuk aplikasi-aplikasi yang spesifik, biasanya mempunyai flow tersendiri. Flow tersebutlah yang didesain di software planning. Quality Assurance bertanggung jawab untuk menjaga agar scope yang dibuat pada tahap software planning tidak terlalu luas.
Development
Pada tahap ini, Quality Assurance menjaga agar pengembangan sesuai dengan planning. Ketika bisa menjaga sesuai dengan planning, Quality Assurance juga bisa memeriksa error yang mungkin terjadi pada tahap development ini. Hasilnya, ketika aplikasi selesai, aplikasi akan lebih aman karena bug-nya sudah diminimalisir.
Software Integration Test
Setiap aplikasi mempunyai function–function sendiri yang terintegrasi dan menjadikan suatu alur besar. Software integration test berguna untuk mengetahui apakah fungsi-fungsi tersebut berjalan dengan baik saat terintegrasi dan ada atau tidaknya anomali yang muncul. Ini dilakukan oleh seorang Quality Assurance. Jika ada error, tim development akan memperbaikinya. Setelah selesai, akan dikembalikan lagi ke Quality Assurance untuk dilakukan software integration test lagi.
User Acceptance Test
Pada tahap ini, tes dilakukan oleh user. Sementara tugas Quality Assurance adalah membantu dan membimbing user untuk menggunakan aplikasi tersebut. Selain itu, seorang Quality Assurance juga akan bertanya untuk menggali fungsional aplikasi menurut user. Semua input yang didapatkan dari user akan diperiksa lagi untuk memastikan apakah memang butuh perubahan atau tidak. Jika membutuhkan perubahan, akan dikembalikan ke tim development lagi.
Production
Di tahap production, Quality Assurance menjaga supaya apa yang sudah dibuat dari tahap software planning hingga user acceptance test bisa digunakan oleh user dengan baik.
Metode Testing
Secara umum, metode testing ada 2, antara lain:
Manual
- Pelaku testing adalah manusia.
- Dapat mengevaluasi bagian aplikasi yang membutuhkan pemahaman manusia. Contoh UI/UX dan alur suatu proses.
Automation
- Pelaku testing adalah mesin.
- Sering digunakan untuk tes regresi (tes perulangan).
- Cepat dan praktis.