Ayo di-tes kodenya ! (TDD) #part2, uji kode

chapter sebelumnya <a href='https://sekolahkoding.com/forum/ayo-di-tes-kodenya-part1'>https://sekolahkoding.com/forum/ayo-di-tes-kodenya-part1</a>

OK, sekarang saatnya kita mendalami bagaimana cara melakukan uji kode / code testing ,

Identifikasikan atau tentukan ekspektasi pada kode / app teman-teman. Teman-teman sudah tahu bahwa harapan / ekspektasi merupakan dasar dari tes. Sekarang saatnya kita tentukan sih apa yang kita harapkan dari kode tersebut. Sebagai contoh saya mau buat kode untuk menjumlahkan sesuatu.

add (a,b) ;

Pada contoh kode diatas kita harapkan bahwa : ❌ Fungsi add sudah didefinisikan, yaiyalah klo engga bakal error bro ! ❌ Misalkan a = 4 dan b = 5, fungsi tersebut bakal return 9. ❌ Misalkan a = 0.4 dan b = 0.5, fungsi tersebut bakal return 0.9. ❌ a dan b, harus number, kalau bukan maka error.

Pada kode diatas pasti bakal error, definisi add aja belum ada ! ok, berarti sekarang kita harus define fungsinya,


function add (a, b) {
	return a + b ; }
var a = 4, b = 5 ;
}
add (a, b) ;

✅ Fungsi add sudah didefinisikan, yaiyalah klo engga bakal error bro ! ✅ Misalkan a = 4 dan b = 5, fungsi tersebut bakal return 9. ❌ Misalkan a = 0.4 dan b = 0.5, fungsi tersebut bakal return 0.9. ❌ a dan b, harus number, kalau bukan maka error.

Kode diatas masih belum memenuhi semua yang kita harapkan, maka sekarang refaktor lagi kodenya !


function add (a, b) {
	var result;
	If (typeof a && typeof b) !== 'number') {
		throw new Error ('Parameter harus nomor');
	}
         result = a + b ;

	if (parseInt (result) !== result) {
		result = parseFloat(result.toFixed(1));
	}
	return result ;
}
var a = 4, b = 5 ;
add (a, b) ;

✅ Fungsi add sudah didefinisikan, yaiyalah klo engga bakal error bro ! ✅ Misalkan a = 4 dan b = 5, fungsi tersebut bakal return 9. ✅ Misalkan a = 0.4 dan b = 0.5, fungsi tersebut bakal return 0.9. ✅ a dan b, harus number, kalau bukan maka error.

Sekarang fungsi kita sudah sesuai dengan apa yang kita harapkan. Step-step yang kita lakukan diatas disebut red, green, refactor proses.

Sayangnya kita melakukan red, green, refactor proses cuma ada didalam kepala kita, ini mah sama aja, ngga ada guna, sama aja kita harus cek satu-satu dengan cara


console.log (add (0.4, 0.5)); // → 0.9 atau bukan
console.log (add ('0.4', '0.5')); // → 0.40.5 atau error ?

Terus kita liat, kode kita nge’log’ apa. Nah di Part3 nanti bakal dijelasin gimana caranya red, green, refactor proses nggak cuma diangan-angan, tapi kita implementasikan dalam bentuk kode ! what ? Ok, nih saya kasih salah satu contohnya


// contoh
// contoh add(4,5) sama dengan 5
expect(add(4,5)).toBe(5);

// contoh
// contoh add() akan error apabila salah satu dari parameternya bukan 'number'
expect(add(2,"test")).toThrow();

// coba teman2 isi tes ini :
// diharapkan add(0.4,0.5) sama dengan 0.9
// …

Teman-teman bisa coba tulis jawaban di kolom komentar dibawah. Btw klo temen-temen ada pertanyaan bisa comment dibawah ya...

next chapter <a href='https://sekolahkoding.com/forum/ayo-di-tes-kodenya-part3-intro-jasminejs '>https://sekolahkoding.com/forum/ayo-di-tes-kodenya-part3-intro-jasminejs </a>

avatar timelord
@timelord

140 Kontribusi 86 Poin

Diperbarui 6 tahun yang lalu

3 Jawaban:

Btw, cuman mau koreksi aja nih, ada yang kurang pas tuh.

Fungsi ini,

function add (a, b) {
	var result = a + b;
	if((typeof a && typeof b) !== 'number') {
		throw new Error ('Parameter harus nomor');
	}
	if(parseInt (result) !== result) {
		result = parseFloat(result.toFixed(1));
	}
	return result ;
}
var a = 'test', b = 5 ;
add (a, b) ;

Harusnya validasinya di dahulukan sebelum proses penjumlahan. Dan, filter "(typeof a && typeof b) !== 'number'" ini, ga menyelesaikan masalah, soalnya yang di filter itu "&&", atau kondisi ketika dua2 nya tidak berupa angka, gimana kalau salah satu berupa angka? 1 text & 1 number misanya? outputnya pasti error. Operatornya harusnya pakek "||". Juga, harusnya,

var a = '4', b = '5';
add (a, b) ; // output: 9

kudu tetep keluar hasilnya, meskipun berupa string bukan number, tapi value mereka angka, jadi harus bisa dijumlahkan.

Kode fungsi diatas bakal lebih afdol jika dibuat gini:

function add (a, b) {
    a = Number(a);
    b = Number(b);

    if(!a || !b) {
	throw new Error ('Parameter harus nomor');
    }
    else
    {
  	var result = a + b;

  	if(parseInt (result) !== result) {
            result = parseFloat(result.toFixed(1));
            return result ;
        }
        else
        {
    	    return result ;
        }
    }
}
var a = 5, b = 4 ;
console.log(add (a, b));

Ditunggu part3 nya gan...

avatar dalikewara
@dalikewara

351 Kontribusi 260 Poin

Dipost 6 tahun yang lalu

mulai ngerti.. walaupun dikit.. heheh :D

avatar AlifNur
@AlifNur

164 Kontribusi 72 Poin

Dipost 6 tahun yang lalu

makasih gan atas koreksinya, nanti coba saya perbaiki.. untuk masalah identifikasinya mungkin saya kurang detail, tapi intinya adalah proses bagaimana cara melakukan testing / uji terhadap kode. :D part 3 menyusul gan

avatar timelord
@timelord

140 Kontribusi 86 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban