@@ -150,4 +150,51 @@ Dalam pembuatan test, diprioritaskan agar implementasi dapat pass test tersebut.
Test Organization memiliki beberapa keuntungan yaitu:
1. Merapikan codebase dengan struktur yang teratur
2. Memudahkan debugging apabila ada test yang fail
3. Memudahkan proses pembuatan test untuk fitur tertentu
\ No newline at end of file
3. Memudahkan proses pembuatan test untuk fitur tertentu
## Exercise 6
### Mutation Testing
Penambahan mutan pada kode dalam `lists.views`:
```diff
def generate_comment(list_):
length = list_.item_set.count()
- if length == 0:
+ if length != 0: // mutan1
return "yey, waktunya berlibur"
- elif length < 5:
+ elif length > 5: // mutan2
return "sibuk tapi santai"
else:
return "oh tidak"
```
Menggunakan test case yang sudah ada sebelumnya, test case `test_automated_comment_if_list_empty` berhasil strongly kill mutan1 saat diberikan list dengan ukuran bukan 0. Sementara `test_automated_comment_if_list_less_than_5` berhasil strongly kill mutan2 saat diberikan list dengan ukuran lebih dari 5.
### Implementasi Mutation Testing dengan django-mutpy
Untuk mempermudah mutation testing, dapat digunakan tool khusus mutation testing dalam Python dan Django. Saya menggunakan `django-mutpy`. Yang dilakukan oleh django-mutpy adalah menambahkan mutan pada tiap fungsi yang ditemukan dengan jenis mutan yang bervariasi; seperti ROR, CRP, COI, dan seterusnya.
Pertama install `django-mutpy` menggunakan `pip`.
```bash
pip3 install django-mutpy
```
Lalu jalankan mutation test dengan memasukkan command `muttest`