Software Quality Assurance adalah proses sistematis untuk memeriksa apakah sebuah software telah dikembangkan sesuai dengan kebutuhan yang telah ditentukan sebelumnya. Proses ini, bisa dilaksanakan oleh seorang QA Tester atau oleh seorang QA Engineer.

QA Tester memiliki tugas utama melaksanakan pengujian terhadap perangkat atau emulator, membuat alur pengujian, serta membuat laporan hasil pengujian. Sementara QA Engineer biasanya bertugas untuk membuat porgram pengujian otomatis, membuat laporan pengujian, memberikan masukan atas aplikasi yang diuji, serta berkomunikasi dengan pihak-pihak yang berkepentingan, seperti pengembang UI/UX, back end atau product manager (PM).

Untuk proses QA, dibutuhkan kemampuan-kemampuan:

· Mindset Pengujian

· Analisa & Pengujian Fungsional

· Perbaikan Proses

· Defect Management

· Pengujian Keamanan

· Pengujian Performa

· Otomasi

· User Acceptance Testing (UAT)

Sementara untuk menjalankan proses software QA, diperlukan antara lain:

· Laptop (Linux OS/ Mac)

· Device utk pengujian

· Pengetahuan pemrograman

· Terbiasa dengan Git

· Terbiasa dengan Agile (Scrum)

Pengujian terhadap software sendiri terbagi menjadi dua jenis:

1. Pengujian Manual

Pengujian ini biasanya dilakukan untuk mengecek aliran aplikasi, memeriksa cacat (desain atau pemrograman), pengujian di sistem operasi berbeda, serta uji migrasi dari versi aplikasi terdahulu

2. Pengujian Otomatis

Pengujian ini terdiri dari pengujian regresi, pengujian otomatis yang dilakukan pada malam hari, pelaporan otomatis (melalui email atau tool kolaborasi seperti slack), automated build, dan automated publish.

Untuk pengujian otomatis, bisa dilakukan di berbagai sistem: Continuous Integration (CI) Jenkins, Travis CI, Circle CI, dan lain-lain. Apabila terjadi kesalahan dalam pengujian biasanya karena ada permasalahan di sisi backend, di sisi Continuous Integration (adanya pembaruan library, misalnya) atau perbaikan pada aplikasi.

Adapun kriteria-kriteria dari sebuah desain framework pengujian otomatis adalah:

· Mudah digunakan

· Bisa/ mudah dalam pemeliharaan

· Scalable

· Dukungan browser atau peranti

· Adanya metrik dan pelaporan

· Dukungan terhadap pengujian yang dikehendaki

· Dapat dijalankan secara lokal mauputn remote (dari jarak jauh)

· Eksekusi paralel

· Mendukung fitur-fitur yang akan diuji

· Mendukung environment yang berbeda

· Dukungan Tool

· Batasan bahasa/ tool

Dan yang tak kalah penting dari hal-hal di atas adalah, QA tester maupun QA engineer harus selalu berpikiran terbuka. Dengan sikap terbuka untuk mempelajari hal-hal yang baru, diharapkan QA dapat memberikan kontribusi positif untuk menghasilkan produk software yang baik.

Sumber : https://medium.com/@makersinstitute/mengenal-lebih-jauh-tentang-software-quality-assurance-844361cd50db