Не хочу сильно углубляться в тему. Просто небольшой мой взгляд на проблему. Понимаю, что тема холиварная, и не судите строго.
Прежде всего, забудьте обо всех существующих методиках. Поверьте, никто не будет строго следовать им.
Тем не менее, качество кода — это действительно важный аспект. Всё зависит от ресурсов, которыми вы располагаете, и от распределения обязанностей в вашей команде. Проще говоря, задача разработчика в рамках тестирования — просто убедиться, что его код работает. А вот вопрос о том, правильно ли этот код работает, должен быть передан отдельной команде, которая занимается исключительно вопросами качества.
Чтобы убедиться, что код не содержит ошибок, достаточно провести smoke-тесты. Если вы охватите ими корневые домены вашего приложения, это значительно повысит вашу уверенность в коде. Для примера, это может включать в себя всего несколько строк кода.
class ViewTest(TestCase):
@tag("smoke")
def test_home_url_response(self):
url = reverse("home_url")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
Но если вы хотите больше уверенности и не обременены дедлайнами и ограниченными ресурсами, то можете покрыть все блоки содержащими критическую логику. Если вы не обременены совсем ни чем - можете обработать всю логику приложения. Лишним точно не будет.
А правильно ли код работает?
Функциональные тесты могут быть как ручными, так и автоматизированными. Однако есть один важный момент: их должна проводить независимая от разработки команда. Это необходимо, чтобы не допустить искажения восприятия. Автоматизированные тесты обеспечивают высокую степень уверенности, хотя и не гарантируют абсолютную надежность.
В любом случае, качество должно быть в приоритете. Как минимум, следует проводить smoke-тесты и нанимать ручного тестировщика. В идеале же, стоит рассмотреть все возможные варианты улучшения качества, которые вы можете себе позволить.