WAQA: Bagaimana Saya Membuat QA System untuk WhatsApp Bot

M Gilang Januar
Bahasa.ai
Published in
2 min readMar 15, 2019

Bahasa.ai telah merilis chatbot Tokopedia di WhatsApp untuk pembelian pulsa. Memastikan flow dan balasan dari chatbot tersebut agar sesuai dengan yang seharusnya bukanlah hal yang mudah. Dalam waktu kurang dari 2 minggu ini saya telah membuat sebuah distribusi internal untuk melakukan automated end-to-end test pada WhatsApp bot menggunakan Selenium.

Salah satu tantangan yang kami temui dalam project ini adalah menghindari terjadinya false positive yang berupa kesalahan bot dalam memaknai dan membalas chat yang diberikan oleh user. Sebelumnya kami selalu melakukan manual testing dengan test case yang sudah kami list sebelumnya. Namun, sering kali terdapat beberapa case yang terlewat atau tidak lolos uji setelah melakukan pembaharuan pada NLU engine yang kami miliki. Selain itu juga kami memerlukan waktu yang banyak hanya untuk melakukan test yang sama berulang-ulang setiap kali.

Sekitar beberapa hari yang lalu saya mencoba memulai sebuah product untuk menyelesaikan problem ini. Kebutuhan kami saat itu adalah sebuah mesin otomatis yang melakukan testing end-to-end dari platform WhatsApp. Dan lahirlah WAQA.

WAQA merupakan package internal menggunakan Python sebagai bahasa pemrograman utamanya dan Selenium untuk melakukan proses otomatis pada perambannya. Peramban? Yup, platform yang digunakan oleh package ini adalah WhatsApp Web.

Berikut adalah salah satu contoh program yang menggunakan WAQA.

from waqa import run_test

run_test('Say hello') \
.on_agent('Tokopedia') \
.on_chat('Halooo') \
.should_reply(text='mau beli pulsa sekarang?') \
.evaluate() \
.close()

Program tersebut akan menjalankan Chrome, melakukan chat pada bot Tokopedia, dan melakukan evaluasi pada balasan yang diberikannya. Terlihat mudah bukan? Dan ini adalah output dari program tersebut.

--------------------------------------------------------
Running Test: Say hello

[i] Please wait until page loaded
[i] Waiting your verification...
[i] Verified!

> Halooo
> Halo Toppers!
> mau beli pulsa sekarang?


✓ CORRECTNESS: (1/1) 100.0%
--------------------------------------------------------

Setelah QA system ini selesai dibuat ternyata masih kurang memenuhi ekspektasi kami. WAQA perlu penyesuaian kembali agar dapat digunakan oleh non-engineer pada tim. Kemudian tweet dari @iamdevloper muncul.

Berdasarkan tweet tersebut, saya berinisiatif untuk membuat wrapper pada WAQA agar bisa menerima berkas YAML dan dapat dijalankan melalui command line. Ini adalah bentuk akhir dari salah satu skenario test yang digunakan sebagai input pada WAQA.

agent: 'Tokopedia'
scenarios:
-
name: 'Say hello'
actions:
- on_chat: 'Halooo'
- should_reply: 'mau beli pulsa sekarang?'

Berkas YAML tersebut kemudian menjadi argument pada WAQA yang dibuat menjadi command line interface program.

$ waqa --run tokopedia-scenario.yaml

WAQA sudah memasuki tahap akhir dalam proses pengembangannya. Kini hanya perlu melengkapi skenarionya saja. Sayangnya, WAQA masih berupa tool untuk kebutuhan internal yang belum bisa saya bagikan di sini.

--

--