diff --git a/README.md b/README.md
index 6ed1179145089f29f726d9646f58ad87a98704bc..68c0287386ae3d12ddd4bedb7eebd227f8479c90 100644
--- a/README.md
+++ b/README.md
@@ -66,3 +66,72 @@ Dengan menerapkan test organization, selain struktur project yang kita buat menj
 python manage.py test functional_tests.test_list_item_validation
 ```
 Dengan begitu, kita tidak perlu melakukan test terhadap keseluruhan test jika hanya ingin menjalankan bagian tertentu dari test itu saja.
+
+# Cerita Exercise 6
+
+## Membuat 2 Mutant dan Test Case Untuk Membunuh Mutant
+
+Pada Lab ini saya membuat dua buah mutant dengan menggunakan metode Relational Operator Replacement (ROR) pada fungsi untuk menampilkan komentar otomatis pada list.html. Saya tidak membuat mutant pada fungsi views.py dikarenakan logic untuk menampilkan komentar terdapat pada list.html dengan menggunakan templating pada html. Mutant yang saya buat ada dua, yaitu mengubah operator '<' menjadi '>' dan mengubah operator '==' menjadi '!='. Fungsi awalnya adalah sebagai berikut.
+```bash
+{% if list.item_set.all|length == 0 %}   
+<p>yey, waktunya berlibur</p>
+{% elif list.item_set.all|length < 5 %}
+<p>sibuk tapi santai</p>
+{% else %}
+<p>oh tidak</p>
+{% endif %}
+```
+Mutant yang saya buat adalah sebagai berikut:
+```bash
+{% if list.item_set.all|length != 0 %}   
+...
+```
+
+Dan
+
+```bash
+...
+{% elif list.item_set.all|length > 5 %}
+...
+```
+
+Setelah membuat mutant, saya membuat sebuah test case untuk membuat mutant tersebut. Test case yang saya gunakan adalah mengecek apakah komentar yang ditampilkan sesuai dengan yang seharusnya ditampilkan berdasarkan jumlah to-do yang ada. Test tersebut bisa dilihat pada file functional_test/test_automatic_comment.py. Saat saya menjalankan test tersebut (sebelum mutant dibuat), test passed. Kemudian, setelah mutant dibuat, test menjadi failed karena output yang dihasilkan berbeda dari fungsi asli, menandakan mutant telah berhasil dibunuh secara strongly killed.
+
+## Penggunaan Mutation Testing Tools (Django-mutpy)
+
+Untuk melakukan mutation testing dengan tools django-mutpy, pertama saya melakukan instalasi dengan perintah
+```bash
+pip install django-mutpy
+```
+Lalu memasukkan modul djago-mutpy kedalam list app pada settings.py.
+Setelah itu, saya menjalankan tools django-mutpy. Hasil yang diberikan adalah sebagai berikut.
+```bash
+[*] Mutation score [683.53529 s]: 58.7%
+   - all: 63
+   - killed: 37 (58.7%)
+   - survived: 26 (41.3%)
+   - incompetent: 0 (0.0%)
+   - timeout: 0 (0.0%)
+```
+Dari hasil tersebut, terlihat bahwa ada 37 mutant yang berhasil dibunuh dan 26 mutant yang masih hidup pada aplikasi yang saya buat dengan score total 58.7%. Untuk itu, saya membuat sebuah test baru untuk membunuh mutant yang masih hidup. Salah satu mutant yang masih hidup berkaitan dengan konfigurasi apliasi, sehingga saya membuat test sebagai berikut.
+```bash
+from django.apps import apps
+from django.test import TestCase
+from lists.apps import ListsConfig
+
+
+class ListsConfigTest(TestCase):
+    def test_apps(self):
+        self.assertEqual(ListsConfig.name, 'lists')
+        self.assertEqual(apps.get_app_config('lists').name, 'lists')
+```
+Setelah dilakukan mutation testing ulang dengan django-mutpy, hasilnya adalah sebagai berikut
+```bash
+[*] Mutation score [647.52812 s]: 61.9%
+   - all: 63
+   - killed: 39 (61.9%)
+   - survived: 24 (38.1%)
+   - incompetent: 0 (0.0%)
+   - timeout: 0 (0.0%)
+```
+Terlihat score yang didapatkan meningkat menjadi 61.9% dan mutant yang survived berkurang, sehingga dapat disimpulkan ada mutant yang berhasil dibunuh setelah ditambahkan test baru tersebut.
\ No newline at end of file
diff --git a/functional_tests/test_automatic_comment.py b/functional_tests/test_automatic_comment.py
new file mode 100644
index 0000000000000000000000000000000000000000..f6ecfced4e05a0de04a6b3d2a011bec5ed6d5abe
--- /dev/null
+++ b/functional_tests/test_automatic_comment.py
@@ -0,0 +1,70 @@
+from selenium import webdriver
+from selenium.common.exceptions import WebDriverException
+from selenium.webdriver.chrome.options import Options
+from selenium.webdriver.common.keys import Keys
+import time
+import unittest
+import environ
+from django.contrib.staticfiles.testing import StaticLiveServerTestCase
+from unittest import skip
+from .base import FunctionalTest
+
+class AutomaticCommentTest(FunctionalTest):
+
+    def test_can_start_a_list_and_retrieve_it_later(self):
+        self.browser.get(self.live_server_url)
+
+        inputbox = self.browser.find_element_by_id('id_new_item')
+        self.assertEqual(
+            inputbox.get_attribute('placeholder'),
+            'Enter a to-do item'
+        )
+
+        inputbox.send_keys('Buy peacock feathers')
+
+        inputbox.send_keys(Keys.ENTER)
+
+
+        inputbox = self.browser.find_element_by_id('id_new_item')
+        inputbox.send_keys('Use peacock feathers to make a fly')
+        inputbox.send_keys(Keys.ENTER)
+
+        page_text = self.browser.find_element_by_tag_name('body').text
+        self.assertIn('sibuk tapi santai', page_text)
+
+        for i in range(6):
+            inputbox = self.browser.find_element_by_id('id_new_item')
+            inputbox.send_keys('Activity' + str(i))
+            inputbox.send_keys(Keys.ENTER)
+        
+        page_text = self.browser.find_element_by_tag_name('body').text
+        self.assertIn('oh tidak', page_text)
+
+        #assert 'oh tidak' in self.browser.page_source
+        
+        edith_list_url = self.browser.current_url
+        self.assertRegex(edith_list_url, '/lists/.+')
+        self.wait_for_row_in_list_table('1: Buy peacock feathers')
+
+        # Now a new user, Francis, comes along to the site.
+        ## We use a new browser session to make sure that no information
+        ## of Edith's is coming through from cookies etc #
+
+        self.browser.get(self.live_server_url)
+        page_text = self.browser.find_element_by_tag_name('body').text
+        self.assertNotIn('Buy peacock feathers', page_text)
+        self.assertNotIn('make a fly', page_text)
+        # Francis starts a new list by entering a new item. He
+        # is less interesting than Edith...
+        inputbox = self.browser.find_element_by_id('id_new_item')
+        inputbox.send_keys('Buy milk')
+        inputbox.send_keys(Keys.ENTER)
+        # Francis gets his own unique URL
+        francis_list_url = self.browser.current_url
+        self.assertRegex(francis_list_url, '/lists/.+')
+        self.assertNotEqual(francis_list_url, edith_list_url)
+        # Again, there is no trace of Edith's list
+        page_text = self.browser.find_element_by_tag_name('body').text
+        self.assertNotIn('Buy peacock feathers', page_text)
+        self.assertIn('Buy milk', page_text)
+        # Satisfied, they both go back to sleep
\ No newline at end of file
diff --git a/lists/templates/list.html b/lists/templates/list.html
index 2ebfb334175c7b0126531d18811287cc69ceef8e..d79c352acbf725805ffaba4d4ddad2d12cdb6e95 100644
--- a/lists/templates/list.html
+++ b/lists/templates/list.html
@@ -5,13 +5,13 @@
 {% block form_action %}/lists/{{ list.id }}/add_item{% endblock %}
 
 {% block table %}
-{% if list.item_set.all|length == 0 %}
-        <p>yey, waktunya berlibur</p>
-        {% elif list.item_set.all|length < 5 %}
-        <p>sibuk tapi santai</p>
-        {% else %}
-        <p>oh tidak</p>
-        {% endif %}
+{% if list.item_set.all|length == 0 %}   
+<p>yey, waktunya berlibur</p>
+{% elif list.item_set.all|length < 5 %}
+<p>sibuk tapi santai</p>
+{% else %}
+<p>oh tidak</p>
+{% endif %}
   <table id="id_list_table" class="table">
     {% for item in list.item_set.all %}
       <tr><td>{{ forloop.counter }}: {{ item.text }}</td></tr>
diff --git a/lists/tests/test_app.py b/lists/tests/test_app.py
new file mode 100644
index 0000000000000000000000000000000000000000..96aa76c5288219c81970f2593a8adc8e92d958af
--- /dev/null
+++ b/lists/tests/test_app.py
@@ -0,0 +1,9 @@
+from django.apps import apps
+from django.test import TestCase
+from lists.apps import ListsConfig
+
+
+class ListsConfigTest(TestCase):
+    def test_apps(self):
+        self.assertEqual(ListsConfig.name, 'lists')
+        self.assertEqual(apps.get_app_config('lists').name, 'lists')
diff --git a/requirements.txt b/requirements.txt
index 0e32ef369991b97a98278506c27ef2b95a146b47..49e649731836c5a092a77d82a87f107beddfc226 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,6 +3,7 @@ Django==2.2.5
 django-appconf==1.0.3
 django-compressor==2.3
 django-environ==0.4.4
+django-mutpy==0.1.2
 django-sass-processor==0.7.3
 gunicorn==19.9.0
 libsass==0.19.3
@@ -11,4 +12,4 @@ pytz==2019.2
 selenium==3.141.0
 six==1.12.0
 sqlparse==0.3.0
-whitenoise==4.1.3
\ No newline at end of file
+whitenoise==4.1.3
diff --git a/superlists/settings.py b/superlists/settings.py
index 9959b4116ef93c597f94ac4387b8e111f77fd354..a126e34bc1a5aac523646a190fdefdee7b8030fb 100644
--- a/superlists/settings.py
+++ b/superlists/settings.py
@@ -42,7 +42,8 @@ INSTALLED_APPS = [
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'lists',
-    'sass_processor'
+    'sass_processor',
+    'django_mutpy'
 ]
 
 MIDDLEWARE = [