Test isolation yang dilakukan adalah test dapat berjalan sesuai dengan request dari url liveserver bukan dari url yang ditentukan pada awal yaitu localhost
Fitur yang ditambahkan adalah proses menunggu 10 detik tidak dilakukan hanya dengan serta merta menunggu melainkan dengan proses menunggu dari webdriver hingga input muncul selama 10 detik
\ No newline at end of file
Fitur yang ditambahkan adalah proses menunggu 10 detik tidak dilakukan hanya dengan serta merta menunggu melainkan dengan proses menunggu dari webdriver hingga input muncul selama 10 detik
Test suit yang dibuat memiliki hasil yang berbeda untuk kedua mutant yang dibuat. Dengan ketentuan mutant hanya dapat di buat dalam fungsi yang ada di helper.
Untuk mutant yang pertama, tidak dapat dilakukan 'kill' untuk testcase apapun. Karena hasil dari komen akan langsung didapatkan dari perhitungan data dalam database Item. Oleh sebab itu, angka yang mungkin didapatkan adalah dari 0 hingga tak hingga sesuai dengan jumlah data pada saat itu. Angka tersebut merupakan 0 atau positif sehingga absolute mutant tidak mengubah hasil dari angka database.
Untuk mutant yang kedua, dapat dilakukan 'strongly kill' dengan test suit tersebut. Karena hasil dari komen akan langsung didapatkan dari perhitungan data dalam database Item yang akan diubah menjadi angka negatif. Oleh sebab itu, akan terjadi fail untuk angka yang lebih besar dari 0 karena menjadi angka negatif sehingga pada test case `self.assertIn('sibuk tapi santai', response.content.decode())` akan fail.
### Menggunakan mutation testing tool yaitu MutPy
Dalam menjalankan `python3 manage.py muttest practice`
Hasil akhirnya adalah sebagai berikut:
[*] Mutation score [5.84569 s]:93.8%
- all: 48
- killed: 45 (93.8%)
- survived: 3 (6.2%)
- incompetent: 0 (0.0%)
- timeout: 0 (0.0%)
Terdapat 3 mutant yang tidak terbunuh yaitu
```python
1:fromdjango.appsimportAppConfig
2:
3:
4:classPracticeConfig(AppConfig):
-5:name='practice'
+5:name='mutpy'
```
```python
1:fromdjango.appsimportAppConfig
2:
3:
4:classPracticeConfig(AppConfig):
-5:name='practice'
+5:name=''
```
```python
1:defcounter_comment(number):
2:ifnumber==0:
3:return'yey, waktunya libur'
4:
-5:if(number<5andnumber>0):
+5:if(number<5andnumber>=0):
6:return'sibuk tapi santai'
7:
8:ifnumber>=5:
9:return'oh tidak'
```
Untuk 2 kasus pertama, mutant survived karena dilakukan perubahan nama apps. Hal ini tidak mempengaruhi apapun karena dalam tutorial hanya terdapat 1 apps saja. Untuk kasus ke 3, dilakukannya ROR –– Relational Operator Replacement dari > menjadi >= tidak mengubah hasil apapun karena kasus jika number == 0 sudah dilakukan return sehingga tidak akan melewati baris ke 5 yang dilakukan mutation.