Mengenal Software Quality Assurance

Fitri Zakiyah
QA Malang
Published in
4 min readSep 27, 2018
Photo by Vladislav Klapin on Unsplash

Banyak orang yang mendengar kata QA akan beranggapan kalau QA adalah Question and Answer. Kalau question and answer itu singkatannya Q&A ya guys, bukan QA. QA merupakan singkatan dari Quality Assurance, yang artinya jaminan kualitas atau jaminan mutu. Nah yang akan kami bahas disini adalah Quality Assurance dari sebuah software. Software Quality Assurance sendiri merupakan proses terstruktur untuk memastikan apakah sebuah software telah dikembangkan sesuai dengan kebutuhan pengguna yang telah ditentukan sebelumnya. Dalam proses pelaksanaan QA, testing merupakan salah satu dari proses yang dilakukan oleh seorang QA, sehingga terbentuk banyaknya kontradiksi apakah seorang QA dengan tester itu sama?

QA = Tester ?

Software Quality assurance sendiri dapat dilaksanakan oleh seorang QA tester ataupun QA Engineer. Tapi bukan berarti keduanya sama, meskipun ada proses sama yang dilakukan oleh keduanya. Seorang QA tester tugas utamanya adalah menguji software, membuat alur pengujian, dan membuat laporan hasil pengujiannya. Sedangkan QA Engineer melebihi dari tugas seorang tester, tugasnya mencakup semua scope development, mulai dari analisa kebutuhan aplikasi sampai dengan release aplikasi.

“QA Engineer is more than Tester”

Seorang QA engineer akan melakukan beberapa hal yang berkaitan dengan proses teknis maupun non-teknis. Proses non-teknis itu sendiri mencakup proses pembuatan dokumentasi seperti pembuatan user story, test scenario, test report, UAT, dan documentasi testing lainnya. Dan sebenarnya lebih dari itu, proses non-teknis itu bisa tergolong pada proses dimana seorang QA Engineer berinteraksi dengan tim developer terkait saran dari aplikasi yang dibangun menyangkut UI/UX aplikasinya maupun flow dari aplikasi. Hal-hal yang mencakup pada non-teknis yang telah disebutkan merupakan bagian dari pendukung proses teknis, yaitu manual test dan automated test.

Manual Test vs Automated Test

Manual testing merupakan pengujian aplikasi yang mana keseluruhan eksekusinya dilakukan secaara manual oleh manusia tanpa adanya bantuan tools maupun script. Sebaliknya pada automated test, eksekusi keseluruhannya dibantu oleh tools, script dan software. Hal tersebut adalah perbedaan mendasar dari keduanya. Tetapi, tidak dapat dipungkiri kalau kedua-duanya sama-sama dibutuhkan dalam pengujian aplikasi. Meskipun manual testing terkesan cara klasik untuk pengujian aplikasi, akan tetapi hal tersebut tidak dapat diartikan bahwa automated test lebih baik dari manual test, ataupun sebaliknya. Mungkin ada beberapa pertenyaan yang muncul dibenak banyak orang yang baru mengenal dunia QA. “Kalau sudah ada automated test, kenapa manual test masih perlu dilakukan?” atau mungkin sebaliknya.

Well, sebenarnya kedua dari jenis testing itu (automated atau manual) sama-sama memiliki kelebihan yang jika digabungkan akan saling melengkapi. Salah satu kelebihan dari manual test adalah user experience-nya, mengingat bahwa aplikasi yang kita buat pada akhirnya akan digunakan oleh user, yaitu manusia. Jadi sebelum aplikasi tersebut release ke pasaran, digunakan oleh jutaan orang, pastinya kita membutuhkan uji coba terlebih dahulu yang dilakukan oleh manusia juga, user friendly nggak nih aplikasinya?. Nah, sementara itu salah satu kelebihan dari automated test adalah untuk regression (untuk coding yang berubah secara teratur), load testing, eksekusi yang berulang-ulang dan performace testing. Jadi, kedua-duanya masih sama-sama dibutuhkan untuk testing aplikasi, karena dengan begitu aplikasi sudah dapat dikatakan lolos uji dari berbagai sisi.

Dalam proses QA, kita harus memiliki kemampuan-kemampuan khusus seperti:

  • Mindset pengujian; untuk melakukan testing kita harus berfikir out of the box, memikirkan negatif dan positif testingnya sebuah aplikasi
  • Analisa dan pengujian fungsional; struktural dan fungsional harus dilakukan untuk meyakinkan kecukpan pengujian dan memastikan bahwa semua kebutuhan telah terpenuhi
  • Perbaikan Proses; bertindak atas dasar hasil evaluasi
  • Defect managemen; meminimalisir adanya defect atau cacat dalam aplikasi
  • Pengujian Keamanan; perlu melakukan pengujian keamanan biar nggak kebobolan kan
  • Pengujian Performa; hal ini juga bagian dari proses kemampuan QA karena perusahaan perlu antisipasi jika banyak user yang dalam satu waktu menggunakan aplikasi dan tidak menyebabkan server down.
  • Otomasi; membuat pengujian otomatis
  • User Acceptence Testing (UAT); bentuk dokumen kesepakatan antara client dengan perusahaan atas kebenaran dari fitur aplikasi.

Lalu seberapa penting peranan QA dalam suatu perusahaan?

Dengan adanya QA, suatu perusahaan dapat memberikan kepercayaan kepada client maupun customer dengan meminimalisir adanya bug pada aplikasi. Coba bayangkan kalau sebuah aplikasi yang digunakan oleh client/customer ternyata masih ada bugnya? pasti beberapa atau mungkin semuanya akan enggan menggunakan aplikasi itulagi. Belum lagi reputasi perusahaan akan rusak secara signifikan. Dengan begitu, seorang QA Engineer berperan untuk memastikan apakah aplikasi siap untuk go production, bukan hanya aplikasi yang sekedar jadi. Selain itu QA juga bertanggung jawab akan dokumen yang dibutuhkan untuk pengembangan aplikasi jangka panjang.

Tugas tugas QA

Pada awal pembangunan sebuah sofwate, seorang QA memiliki tugas untuk mengidentifikasi bussiness requirements atau kebutuhan bisnis. kemudian menentukan spesifikasi produk, memahami kebutuhan user melalui fungsional testing, melakukan testing scenario kemudian memberikan feedback perihal hasil test yang sudah dilakukan, dan jangan lupa dokumentasi.

Bagaimana cara menjadi QA Engineer yang baik?

Sama halnya jika diibaratkan seorang penulis, penulis akan bisa menulis karena ia rajin membaca, memahami pola-pola tulisan yang digemari para pembaca. Begitupun dengan QA Engineer, kita butuh untuk sering mencoba dan memahami aplikasi atau software yang sudah banyak digunakan dipasaran. Dengan begitu kita akan dengan mudah memberikan standart kelayakan sebuah aplikasi. Selain itu, meningkatkan kemampuan komunikasi baik secara lisan ataupun tulisan juga diperlukan. Mampu menganalisis masalah dan bisa memberikan problem solving atas masalah tersebut.

--

--