-[Refactoring and Clean Code](#refactoring-and-clean-code)
-[Why Need Test Organization](#why-need-test-organization)
-[Mutation Testing](#mutation-testing)
-[URL](#url)
-[Install Modules](#install-modules)
...
...
@@ -136,4 +137,63 @@ dan memindahkan semua styling ke dalam file tersebut.
### Why Need Test Organization
Test Organization menjadi penting saat test yang dibuat akan banyak. Jika semua test ditaruh dalam 1 file, debugging akan sulit. File test menjadi sangat panjang dan readability-nya berkurang. Untuk menghindari kondisi semacam ini, kita perlu mengorganisir sejumlah test ke dalam file (class) terpisah untuk memastikan helper method pada test menjadi reusable, menghindari redundant code, dan meningkatkan readability code. Readability code sangatlah penting untuk perkembangan aplikasi yang lebih besar, seperti penambahan fitur atau perubahan requirement yang biasa terjadi pada penerapan Agile Methodology. Jadi, kesadaran untuk menjaga readability code harus disadari sedari awal pengembangan.
\ No newline at end of file
Test Organization menjadi penting saat test yang dibuat akan banyak. Jika semua test ditaruh dalam 1 file, debugging akan sulit. File test menjadi sangat panjang dan readability-nya berkurang. Untuk menghindari kondisi semacam ini, kita perlu mengorganisir sejumlah test ke dalam file (class) terpisah untuk memastikan helper method pada test menjadi reusable, menghindari redundant code, dan meningkatkan readability code. Readability code sangatlah penting untuk perkembangan aplikasi yang lebih besar, seperti penambahan fitur atau perubahan requirement yang biasa terjadi pada penerapan Agile Methodology. Jadi, kesadaran untuk menjaga readability code harus disadari sedari awal pengembangan.
### Mutation Testing
Berikut adalah kode yang akan di-test berikut dengan 2 mutant yang valid.
Untuk membunuh Mutant 1 dengan kategori `Strongly Kill` jumlah item harus memenuhi lebih dari 5. Mutant 1 akan mengeluarkan output `yey, waktunya libur`, sedangkan method index() yang sesungguhnya akan mengeluarkan output `oh tidak`. Berikut implementasinya.
```python
deftest_to_kill_Index_mutant1(self):
Item.objects.all().delete()
# 6 items
forxinrange(0,6):
Item.objects.create(text='itemey '+str(x))
response=self.client.get(TO_DO_LIST_URL)
html=response.content.decode('utf8')
self.assertTrue("oh tidak"inhtml)
```
Lalu untuk membunuh Mutant 2, dibutuhkan jumlah item tepat 5, sehingga Mutant 2 akan mengeluarkan output `sibuk tapi santai`, sedangkan method index() yang sebenarnya akan mengeluarkan output `oh tidak`. Berikut adalah implemetasinya.