1.2 Pengantar Quality Assurance
Ketika kamu menggunakan aplikasi seperti mobile banking, platform e-commerce, atau layanan transportasi daring, tentu kamu mengharapkan seluruh proses berjalan dengan lancar. Mulai dari masuk ke akun hingga menyelesaikan transaksi, semuanya diharapkan dapat berfungsi tanpa hambatan. Namun, bagaimana jika tiba-tiba saldo kamu menghilang, aplikasi berhenti berfungsi saat proses checkout, atau fitur-fitur tertentu tidak berjalan sebagaimana mestinya?
Masalah seperti ini bukan hanya mengganggu, tetapi juga dapat berdampak besar terhadap kepercayaan pengguna serta keberlangsungan bisnis secara keseluruhan. Dalam konteks inilah, peran Quality Assurance atau QA menjadi sangat penting dalam pengembangan perangkat lunak.
Topik ini penting untuk dipelajari karena QA tidak hanya berperan dalam menemukan kesalahan teknis atau bug. Lebih dari itu, QA bertanggung jawab untuk memastikan bahwa setiap produk digital telah memenuhi standar kualitas sejak tahap awal perencanaan hingga proses akhir pengembangan. Dengan memahami konsep dasar QA, kamu akan mendapatkan wawasan tentang bagaimana QA berkontribusi secara strategis dalam menciptakan produk yang andal, aman, fungsional, dan memberikan pengalaman terbaik bagi pengguna.
Untuk memulai eksplorasi kamu tentang QA, berikut beberapa pertanyaan reflektif yang dapat membantu membangun pemahaman awal:
Apa yang kamu harapkan dari sebuah aplikasi mobile atau situs web ketika pertama kali menggunakannya?
Menurut kamu, apakah mungkin sebuah perangkat lunak langsung sempurna sejak versi awal dirilis?
Kapan waktu yang paling tepat untuk mulai menerapkan QA dalam suatu proyek pengembangan?
Apa saja konsekuensi yang mungkin timbul jika proses QA diabaikan dalam pengembangan produk digital?
Melalui pertanyaan-pertanyaan ini, kamu diajak untuk melihat QA bukan sebagai proses tambahan, melainkan sebagai elemen inti dalam menciptakan produk yang berkualitas dan siap digunakan secara optimal oleh pengguna.
Subtopik 1.2.1 QA, QC, dan Testing: Perbedaan Konsep serta Peran QA dalam Startup dan QC pada E-commerce dan Fintech
Dalam dunia pengembangan produk digital, khususnya pada industri e-commerce dan fintech, terdapat tiga istilah yang sering muncul dan sering kali dianggap serupa, yaitu Quality Assurance (QA), Quality Control (QC), dan Testing. Ketiganya memang berkaitan dengan kualitas, tetapi memiliki fokus, peran, serta pendekatan yang berbeda.
⬛ Quality Assurance (QA)
Quality Assurance adalah pendekatan yang bersifat proaktif dan berfokus pada pencegahan cacat produk melalui penguatan proses pengembangan. QA tidak hanya menilai hasil akhir, tetapi mengawal seluruh proses pengembangan agar berjalan sesuai dengan standar yang ditetapkan serta menghasilkan keluaran berkualitas.
Aktivitas dalam QA dapat mencakup:
● Penyusunan standar dan dokumentasi proses
● Code review dan tinjauan dokumentasi
● Pelatihan tim terkait praktik terbaik (best practices)
● Penerapan pendekatan seperti Agile QA dan DevOps QA
● Pemantauan serta audit terhadap setiap tahapan proses pengembangan aplikasi dan sistem
Contoh pada industri digital, seperti startup, e-commerce, dan fintech:
QA terlibat sejak tahap awal proyek, misalnya dengan memahami kebutuhan pengguna, ikut serta dalam sprint planning, membantu menyusun test plan, serta melakukan tinjauan terhadap user story. QA juga dapat menyiapkan automated test case untuk memastikan bahwa setiap perubahan kode tidak merusak fungsionalitas yang telah ada sebelumnya (regression).
Pada e-commerce, QA membantu menjamin bahwa alur checkout, pembayaran, dan konfirmasi transaksi berjalan sesuai ekspektasi pengguna.
Sementara di fintech, QA memastikan akurasi alur transaksi, validasi data pengguna, serta keamanan aplikasi sejak fase perancangan hingga rilis.
⬛ Quality Control (QC)
Quality Control adalah pendekatan yang bersifat reaktif, dengan fokus pada deteksi dan koreksi kesalahan atau ketidaksesuaian setelah proses pengembangan atau deployment selesai. Dalam konteks e-commerce dan fintech, QC bertanggung jawab untuk memastikan bahwa fitur, layanan, atau sistem yang telah dikembangkan berjalan sesuai spesifikasi dan tidak menimbulkan error atau pengalaman negatif bagi pengguna.
Aktivitas dalam QC umumnya meliputi:
● Pemeriksaan fungsional akhir pada sistem atau aplikasi, baik secara manual maupun otomatis (misalnya pada halaman pembayaran, checkout, atau proses verifikasi pengguna).
● Pengujian terhadap build yang siap dirilis menggunakan pendekatan sampling atau exploratory testing.
● Pendokumentasian hasil pengujian, termasuk temuan bug dan error logs.
● Validasi ulang perbaikan (bug fix) serta pengklasifikasian tingkat keparahan isu yang ditemukan (critical, major, minor).
Contoh pada industri e-commerce dan fintech:
Tim QC akan melakukan final testing terhadap flow transaksi, validasi diskon, status pengiriman, atau sistem notifikasi. Dalam fintech, QC memastikan bahwa proses KYC (Know Your Customer), autentikasi, dan pencatatan transaksi telah berjalan akurat. Jika ditemukan bug seperti kegagalan verifikasi OTP, kesalahan perhitungan saldo, atau error saat checkout, maka build tersebut ditolak dan dikembalikan untuk perbaikan sebelum dirilis ke pengguna.
Testing
Testing atau pengujian merupakan bagian dari QA yang secara khusus berfokus pada evaluasi sistem atau aplikasi untuk memastikan bahwa perangkat lunak berjalan sesuai dengan harapan dan bebas dari bug.
Jenis-jenis testing meliputi:
Functional testing: Memastikan setiap fitur berfungsi sesuai dengan kebutuhan yang ditentukan. Kategori functional testing dapat mencakup:
● Unit testing: Menguji bagian terkecil dari aplikasi, seperti fungsi atau modul, secara terpisah
● Integration testing: Menguji interaksi antara modul yang telah digabungkan
● System testing: Mengevaluasi seluruh sistem perangkat lunak secara keseluruhan
● User Acceptance Testing (UAT): Verifikasi dari pengguna akhir apakah perangkat lunak telah memenuhi kebutuhan bisnis
● Regression testing: Memastikan fitur yang sudah ada tetap berjalan setelah perubahan baru dilakukan
Non-functional testing: Menguji aspek di luar fungsi utama aplikasi. Kategori non-functional testing dapat mencakup:
● Performance testing: Menguji kecepatan, kapasitas, dan stabilitas sistem
● Security testing: Menilai potensi celah keamanan
● Usability testing: Mengkaji kemudahan penggunaan dari perspektif pengguna
● Compatibility testing: Memastikan aplikasi dapat berjalan optimal di berbagai perangkat, sistem operasi, dan browser
Gambar 1.2.1 Black Box Testing, White Box Testing, Gray Box Testing
Pendekatan dalam testing memiliki tiga metode:
● Black Box Testing: Pengujian Black Box adalah metode pengujian di mana penguji tidak memiliki pengetahuan tentang struktur, desain, atau implementasi internal dari item yang diuji. Pendekatan ini mengandalkan pengujian fungsional untuk memastikan kualitas perangkat lunak. Fokus utama dari pengujian ini adalah pada output yang dihasilkan berdasarkan input yang diberikan serta kondisi eksekusi tertentu.
● White Box Testing: Pengujian White Box, yang juga disebut sebagai pengujian transparan atau terbuka, merupakan metode pengujian yang fokus pada pemeriksaan struktur internal atau logika kerja suatu aplikasi, bukan hanya pada fungsionalitasnya. Dalam metode ini, penguji harus memahami struktur kode serta memiliki kemampuan pemrograman untuk membuat kasus uji unit. Teknik ini umumnya digunakan dalam pengujian unit selama proses pengembangan perangkat lunak.
● Grey Box Testing: Pengujian Gray Box merupakan kombinasi dari metode White Box dan Black Box, yang menggabungkan elemen-elemen dari keduanya. Pendekatan ini memerlukan pemahaman parsial terhadap cara kerja internal aplikasi dan berfokus pada penggunaan antarmuka serta deskripsi tingkat tinggi mengenai perilaku sistem. Contoh penggunaan terbaik metode ini meliputi pengujian keamanan dan logika domain bisnis, pengujian integrasi sistem, serta pengujian pada aplikasi web.
Berdasarkan cara testing, dapat dilakukan dengan dua cara:
● Manual testing: Dijalankan langsung oleh penguji dengan menggunakan antarmuka pengguna
● Automation testing: Dilakukan menggunakan alat bantu otomatis seperti Selenium, Cypress, atau JUnit
Dalam praktiknya, berbagai jenis pengujian tersebut dijalankan dengan bantuan beragam tools yang dirancang untuk mendukung setiap tahap pengujian, mulai dari pencatatan bug, penulisan test case, hingga pengujian otomatis dan analisis performa. Berikut adalah tools yang umum digunakan dalam proses QA dan pengujian di industri perangkat lunak:
1. Project Management Tools
● Jira – Digunakan untuk pelacakan bug dan manajemen tugas (issue tracking) dalam proyek pengembangan perangkat lunak.
● Trello – Digunakan untuk visualisasi tugas dan workflow berbasis papan Kanban. Cocok untuk project tracking sederhana hingga menengah baik oleh QA maupun developer.
● Asana – Digunakan untuk mengatur daftar tugas, penetapan deadline, penugasan anggota tim, dan pemantauan progres proyek lintas tim.
2. Manajemen Testing & Dokumentasi
● TestRail – Alat khusus untuk dokumentasi test case, test plan, dan pencatatan hasil pengujian.
● Zephyr / Xray – Plugin Jira untuk mengelola pengujian secara langsung dalam ekosistem Jira.
● Notion / Excel / Google Sheets – Alternatif ringan untuk dokumentasi test case dan checklist pengujian manual.
3. Web & Mobile Testing (Automation)
Digunakan untuk menguji antarmuka dan fungsionalitas aplikasi berbasis web.
● Selenium – Framework open-source untuk otomasi pengujian UI berbasis web.
● Appium - Framework open-source untuk otomasi pengujian UI berbasis mobile.
● Cypress – Tool modern dan cepat untuk end-to-end testing aplikasi web berbasis JavaScript.
● Playwright – Alat otomasi browser dari Microsoft yang mendukung berbagai browser dan platform.
● Katalon Studio – Platform testing all-in-one untuk pengujian web, mobile, dan API.
4. API Testing
Fokus pada pengujian API (Application Programming Interface), baik manual maupun otomatis.
● Postman, Newman – Digunakan untuk pengujian manual dan otomatis API.
● PyTest – Selain unit testing Python, dapat digunakan untuk menguji API.
● Rest Assured – (opsional tambahan jika perlu) Library Java untuk testing REST API.
5. Performance Testing
● JMeter – Tool open-source dari Apache untuk pengujian performa dan beban sistem.
● k6 – Tool performance testing berbasis JavaScript, sangat ringan dan modern.
● Gatling – Framework berbasis Scala untuk mensimulasikan trafik pengguna ke aplikasi.
● Locust – Alat pengujian performa berbasis Python yang mudah diprogram.
6. Compatibility & Cross-Platform Testing
● BrowserStack – Platform untuk menguji aplikasi web di berbagai sistem operasi dan browser tanpa perangkat fisik.
● Sauce Labs – Tool cloud-based untuk pengujian lintas browser dan perangkat.
● LambdaTest – Alternatif BrowserStack untuk cross-browser testing, juga berbasis cloud.
7. CI/CD Testing
● Jenkins – Alat automasi open-source untuk build, test, dan deployment (Continuous Integration & Deployment).
● GitHub Actions – Fitur CI/CD yang langsung terintegrasi dalam GitHub repository.
● Gitlab Pipeline – GitLab Pipeline adalah fitur otomatisasi di GitLab yang menjalankan serangkaian proses build, test, dan deploy kode setiap ada perubahan pada repository.
Dengan memahami perbedaan antara QA, QC, dan Testing, kamu akan memperoleh gambaran yang lebih utuh tentang bagaimana kualitas suatu produk dijaga melalui berbagai pendekatan, mulai dari tahap perencanaan hingga pemeriksaan akhir sebelum produk sampai ke tangan pengguna.
⬛ Quality Assurance (QA): Pencegahan Defects dan Bugs melalui Pengelolaan Proses
Quality Assurance atau QA merupakan pendekatan sistematis yang bertujuan untuk mencegah terjadinya cacat produk dengan memastikan bahwa seluruh tahapan pengembangan, baik pada produk perangkat lunak maupun produk fisik, berjalan secara efisien, konsisten, dan sesuai dengan standar mutu yang telah ditetapkan. QA tidak hanya berfokus pada pengujian di tahap akhir, melainkan menitikberatkan pada perancangan dan pengelolaan proses yang berkualitas sejak awal pengembangan.
Beberapa aspek yang tercakup dalam QA meliputi perencanaan kualitas, penyusunan prosedur kerja, pengembangan dokumentasi standar, serta pelatihan anggota tim agar memahami dan menerapkan praktik terbaik. Dalam konteks industri digital, khususnya pada perusahaan rintisan atau startup, QA mulai terlibat sejak tahap awal product discovery. QA berperan aktif dalam membantu tim memahami kebutuhan pengguna atau user requirement, menetapkan acceptance criteria, serta menyusun test plan dan test case.
QA juga berkontribusi dalam praktik Agile dengan berpartisipasi dalam sesi sprint grooming, sprint planning, dan retrospective. Selain itu, pendekatan QA modern sering kali menerapkan konsep shift-left testing, yaitu strategi pengujian yang dilakukan sedini mungkin bahkan sebelum proses penulisan kode dimulai untuk memastikan kualitas dibangun sejak awal.
⬛ Quality Control (QC): Deteksi Defects dan Bugs pada Layanan dan Fitur Digital
Quality Control atau QC adalah pendekatan reaktif dalam manajemen mutu yang berfokus pada pemeriksaan hasil akhir untuk mendeteksi adanya kesalahan atau ketidaksesuaian sebelum fitur atau layanan digital digunakan oleh pengguna. QC memastikan bahwa sistem, aplikasi, atau fitur yang telah selesai dikembangkan memenuhi standar kualitas, performa, dan fungsionalitas yang telah ditentukan sebelumnya.
Pendekatan ini sangat penting dalam industri e-commerce dan fintech, di mana ketepatan sistem dan kepuasan pengguna merupakan kunci keberhasilan. Tim QC biasanya melakukan validasi terhadap build akhir, baik secara manual maupun menggunakan automation tools, dengan pendekatan berbasis skenario pengguna.
Contohnya:
● Dalam e-commerce, tim QC akan menguji proses checkout, penerapan promo/voucher, perhitungan ongkir, dan konfirmasi pesanan untuk memastikan semuanya berjalan sesuai ekspektasi.
● Dalam fintech, pengujian dilakukan pada proses pembayaran, KYC (Know Your Customer), pencatatan transaksi, hingga validasi notifikasi dan tampilan saldo.
Jika ditemukan ketidaksesuaian seperti error saat checkout, double charging, atau reward point tidak terakumulasi, maka fitur tersebut ditolak untuk rilis. Semua temuan akan dicatat dalam laporan pengujian dan disampaikan ke tim developer sebagai dasar untuk perbaikan. Dengan proses ini, QC berperan penting dalam menjaga kualitas pengalaman pengguna dan mencegah risiko reputasi serta finansial bagi perusahaan.
Gambar 1.2.2 Perbandingan antara QA dan QC
⬛ Penjelasan Lanjutan: Studi Kasus Penerapan QA dan QC dalam Dunia Nyata
Untuk memahami lebih jauh bagaimana konsep Quality Assurance (QA) dan Quality Control (QC) diterapkan di dunia kerja, berikut disajikan dua studi kasus dari sektor layanan digital, khususnya di industri e-commerce dan fintech. Contoh-contoh ini memberikan gambaran konkret tentang perbedaan titik keterlibatan dan fokus antara QA dan QC dalam siklus pengembangan sistem, fitur, dan layanan digital, mulai dari perencanaan hingga sebelum rilis ke pengguna.
Studi Kasus 1: Penerapan QA dalam Pengembangan Fitur Pembayaran Digital
Sebuah perusahaan teknologi sedang merancang fitur pembayaran instan melalui kode respons cepat standar nasional (QR code). Fitur ini memerlukan integrasi antara berbagai komponen sistem, seperti antarmuka pengguna (frontend), logika bisnis di sisi server (backend), sistem pembayaran (payment gateway), serta basis data transaksi.
Dalam proses pengembangan, tim QA terlibat sejak awal dalam Software Development Life Cycle (SDLC), terutama dalam pendekatan Agile. Beberapa aktivitas utama QA dalam kasus ini meliputi:
● Menelaah user story dan menyusun acceptance criteria sebagai dasar pengujian
● Merancang test scenario untuk berbagai kemungkinan kesalahan, seperti QR code yang tidak terbaca atau transaksi berhasil tetapi tidak tercatat
● Melakukan pengujian Application Programming Interface (API) secara otomatis menggunakan perangkat lunak pengujian
● Memastikan bahwa setiap transaksi tercatat dengan akurat di tampilan pengguna dan sistem administrator
Hasil dari pendekatan QA yang menyeluruh dan preventif adalah minimnya insiden sistemik ketika fitur tersebut diluncurkan. Tidak ditemukan kasus seperti “saldo terpotong namun pesanan tidak tercatat,” yang menunjukkan bahwa QA memiliki peran penting dalam menjaga keandalan sistem digital dan kepercayaan pengguna.
Studi Kasus 2: Penerapan QC dalam Layanan E-commerce dan Fintech
Sebuah perusahaan e-commerce berbasis fintech sedang mempersiapkan peluncuran fitur baru untuk sistem pembayaran digital dan integrasi loyalty point ke dalam aplikasi. Sebelum fitur ini dirilis secara publik ke seluruh pengguna, dilakukan proses Quality Control (QC) untuk memastikan bahwa fungsionalitas dan pengalaman pengguna sesuai dengan spesifikasi yang telah ditetapkan.
Tim QC bekerja pada tahap post-development (pascapengembangan) dengan melakukan hal-hal berikut:
● Melakukan pengujian terhadap sejumlah skenario transaksi secara acak, seperti pembayaran menggunakan e-wallet, kartu kredit, dan point reward.
● Menguji berbagai aspek fungsional seperti validasi form, kecepatan respon sistem, notifikasi yang diterima pengguna, serta akurasi perhitungan saldo dan point.
● Memverifikasi kesesuaian antar kanal—misalnya, tampilan dan fungsi harus sama antara versi mobile app dan web platform.
● Mencatat hasil temuan bug, crash, atau ketidaksesuaian dan memberikan rekomendasi apakah fitur siap dirilis atau perlu dilakukan perbaikan.
Dalam pelaksanaannya, ditemukan bahwa pada beberapa akun pengguna, point reward tidak otomatis terakumulasi setelah transaksi berhasil. Berdasarkan temuan tersebut, fitur tersebut ditahan sementara untuk perbaikan, dan seluruh kelompok skenario serupa ditinjau ulang sebelum rilis dilakukan. Proses QC ini mencegah pengguna menerima layanan yang tidak optimal, sekaligus menjaga kepercayaan pengguna dan reputasi platform.
Melalui dua contoh ini, kamu dapat melihat bahwa QA dan QC memiliki pendekatan yang berbeda namun saling melengkapi. QA berfokus pada pencegahan cacat sejak awal pengembangan, sementara QC menekankan pemeriksaan hasil akhir agar memenuhi standar. Pemahaman yang baik tentang keduanya sangat penting dalam menciptakan produk yang berkualitas dan andal di berbagai sektor industri.
Refleksi Testing adalah bagian dari QA, namun QA bukan hanya tentang testing. True or False?
Penjelasan: Pernyataan ini benar. Quality Assurance (QA) mencakup seluruh pendekatan sistematis untuk menjamin kualitas produk, mulai dari tahap perencanaan, perancangan proses, pengelolaan dokumentasi, hingga peningkatan berkelanjutan dalam pengembangan produk. QA bersifat preventif, artinya QA bertujuan mencegah terjadinya cacat produk dengan memastikan setiap proses dalam siklus pengembangan berjalan sesuai standar. Sementara itu, Testing merupakan bagian dari QA yang bersifat detektif. Testing berfokus pada pengujian sistem atau aplikasi untuk menemukan bug atau kesalahan setelah suatu bagian dari produk dikembangkan. Aktivitas testing dilakukan melalui berbagai metode, baik manual maupun otomatis, untuk memastikan bahwa sistem bekerja sebagaimana mestinya. Dengan kata lain, QA adalah payung besar yang mencakup strategi dan pendekatan kualitas secara keseluruhan, sedangkan testing adalah salah satu aktivitas penting di dalamnya. Memahami perbedaan ini penting agar kamu tidak menyamakan QA hanya dengan kegiatan menguji aplikasi, padahal cakupannya jauh lebih luas dan strategis. |