Javascript Testing Fundamental

Yudi Krisnandi
Kodeakademia
Published in
3 min readOct 22, 2021

--

Coba perhatikan lowongan perkerjaan untuk role softeware developer di situs — situs seperti linkend, kamu akan menemukan bahwa testing adalah salah satu requirement yang sering muncul.

Lalu apa itu testing ?

Di tulisan ini aku akan share tentang fundamental konsep testing dalam software development.

Disini aku akan share menggunakan environment javascript, jadi pastikan kamu sudah menginstall node dan package manager di komputer kamu.

Btw, walaupun disini menggunakan Javascript tapi materi ini bisa juga di terapkan di environment bahasa pemprograman yang lain.

Kamu juga bisa melihat penjelasan videonya di sini.

Apa Itu Testing ?

Testing adalah sebuah proses untuk memverifikasi apakah program atau software yang kita buat bekerja sesuai dengan yang kita harapkan.

Secara teknikal, kita akan menulis kode untuk mengetes kode.

Maksudnya gimana tu ?

Coba perhatikan program sederhana berikut!

function add(a, b){
return a + b
}
module.exports = add;

Pertanyaannya, bagaimana kita mengetest program tersebut ?

Biasanya kita akan test secara manual seperti ini, kita panggil functionnya dan taro hasilnya di dalam konsole statement.

function add(a, b){
return a + b
}
console.log(add(1, 3)) // manual testmodule.exports = add;

Tapi di real life, program yang kita buat tidak akan sesederhana itu.

Testnya perlu di otomasi.

Biasanya kita akan memisah file program dan file testnya.

Kalau misal kita punya program dengan nama add.js maka file testnya namanya akan dibuat seperti ini add.test.js

Nah, seperti defenisi di awal bahwa sacara teknikal testing adalah kita menulis kode untuk mengetes kode, maka file testnya akan seperti ini :

const add = require('./add') // import programnyaconst actualResult = add(1, 3) // hasil dari programnya
const expectedResult = 4 // hasil yang kita harapkan
if(actualResult === expectedResult) {
console.log("test pass")
}else{
throw new Error(`expec 1 + 3 to equal 4, but got ${actualResult}`)
}

Nah, kurang lebih konsepnya seperti itu.

Tools

Saat membuat test kita membutukan 2 tools penting, yaitu :

  • test runner
  • assertion

Mari kita bahas satu — satu.

Test Runner

Sesuai namanya test runner berfungsi untuk menjalankan file test.

Di environment javascript kita mengenal beberapa library sebagai test runner, misal jest, mocha, karma, dsb.

Di tulisan ini kita akan menggunakan jest.

Karna kita akan menggunakan module, maka project perlu di inisialisasi dengan package manager setelah itu install jest di devDependencies.

Jangan lupa untuk menulis script testnya di package json seperti ini:

"scripts" : {
"test": "jest --watchAll" // watchall untuk mentrack file test
}

Selanjutnya testnya akan kita modifikasi seperti ini

const add = require('./add') // import programnyaconst actualResult = add(1, 3) // hasil dari programnya
const expectedResult = 4 // hasil yang kita harapkan
it("should successfully add 2 number", () => {
if(actualResult === expectedResult) {
console.log("test pass")
}else{
throw new Error(`expec 1 + 3 to equal 4, but got ${actualResult}`)
}
})

Selanjutnya coba jalankan perintah ini, dan liat hasilnya.

yarn run test

Nah, coba perhatikan setiap kali kita membuat perubahan maka otomatis testnya akan di jalankan bukan ?

Ini makannya di sebut sebagai test runner.

Assertion

Assertion adalah simple check antara aktual result dan expected result dari program yang kita buat.

Kalau balik ke file test kita sebelumnya, maka assetionnya adalah block if — else tadi.

const add = require('./add') // import programnyaconst actualResult = add(1, 3) // hasil dari programnya
const expectedResult = 4 // hasil yang kita harapkan
it("should successfully add 2 number", () => { // ini adalah assertionnya
if(actualResult === expectedResult) {
console.log("test pass")
}else{
throw new Error(`expec 1 + 3 to equal 4`)
}
})

Untungnya, jest selain berfungsi sebagai test runner, juga sekaligus lengkap dengan assertion.

Jadi kita cukup install satu module untuk test runner dan assertion.

Kamu bisa melihat assertion yang di sediakan oleh jest di link ini.

Selanjutnya kita akan mengubah file test kita menggunakan assertion dari jest.

const add = require('./add') // import programnyaconst actualResult = add(1, 3) // hasil dari programnya
const expectedResult = 4 // hasil yang kita harapkan
it("should successfully add 2 number", () => {
// ini adalah assertionnya
expect(actualResult).toEqual(expectedResult)
})

Test Report

Setelah kita membuat test, langkah selanjutnya adalah melihat report dari test yang kita buat.

Ini gampang.

Tinggal jalankan perintah berikut.

yarn run test --coverage

Nanti otomatis tergenerate reportnya.

Terima kasih telah membaca !

Saya akan sangat berterimah kasih terhadap saran atau koreksi untuk membuat tulisan saya lebih baik kedepannya.

Arigatō :)

--

--

Yudi Krisnandi
Kodeakademia

Halo, saya adalah seorang software engineer dan juga mentor coding bootcamp.