К основному контенту

Checking in Testing

Перевод твит-ленты Майкла Болтона тезисно описывающей, что такое "проверки", и почему тестирование не может быть автоматизированно.
Update: чуть позже появилась его статья.

Disclaimer: не в первый раз замечаю, что литературный слог Болтона тяжело поддается переводу в лоб. Любит он экзотические формулировки. Поэтому что получилось, то получилось :)

Тест или Проверка? :)
1. Вы не делаете проверок. Вы тестируете, и одна из ваших тактик - это дать компьютеру задание сделать проверки.

2. Если вас просят что то проверить, вы точно облажаетесь, потому что человеческая природа не даст вам действовать алгоритмически.

3. Как тестировщик-человек, не робот, вас нельзя запрограммировать что-то сделать (гипноз?). Вы будете именно тестировать, это неизбежно.

4. Человеческая изменчивость (вариативность) - это то, почему вы находите ошибки, даже когда повторяете те же шаги, что и успешно завершенный скрипт, который не нашел никаких проблем.

5. Между тем, те, кто программирует (пишет) проверки, сами не делают проверок, потому они не следуют строго прописанным алгоритмам.

6. Алгоритмы не имеют мнения, мудрости и нацеленности (интенциональности) для того, чтобы генерировать проверки. Вам нужны люди - эти чертовы умельцы делают это хорошо.

7. Проверки - это часть тестирования, которая полностью может быть выполнена алгоритмически. Поэтому "писать проверки" - это не "делать проверки".

8. Компиляция - это часть программирования, которая полностью может быть выполнена алгоритмически. Разрабатывать программы - это не "компилировать".

9. Тестировать весь продукт делая только проверки - это все равно, что разрабатывать продукт просто компилируя код.

Еще на эту тему: статья Баха "Тестирование и проверки" и более свежая статья Testing vs Checking – Why is this still so contentious?

Комментарии

Популярные сообщения из этого блога

Полезные ресурсы для молодых (и не только) тестировщиков

сперто(с) Уже 3 месяца провожу собеседования тестировщиков (март 2016). Поначалу они просто  веселили - после 15-летнего опыта собеседования С++-разработчиков, общение с тестировщиками (чаще были "-цы") было чем-то экзотическим и забавным. Потом становилось все грустнее и грустнее, мимими закончилось. Началась печаль.

Заметки на коленке - 3. Что еще делать, если ваши тесты уже "зеленые"?

"Lately I find I'm working on automated tests that return non-binary results. Tests that neither pass nor fail" by  @noahsussman Отличная мысль, которую я ретвитил еще в 2016. Но давайте вместе подумаем, что за этим может скрываться? ( кстати, не знаю, что при этом думал Noah ) Ваши тесты прошли и прошли "успешно". Все хорошо или все же есть, куда еще посмотреть? Дальше то, что использовал я лично и то, что еще можно прикрутить дополнительно. Естественно все шаги ниже должны быть автоматизированны. 1. Контролируйте время выполнения тестов. Если набор проверок не меняется (а такое часто бывает, к сожалению), то рост времени выполнения может говорить о проблемах в продакшен коде (чаще всего) или проблемах с окружением. 2. Контроль за количеством выполняемых тестов. "Все зеленое" не значит, что сегодня выполняли те же Х тестов, что и вчера. Смешно(нет), но случается такое, что какие-то проверки "исчезают" из запуска из-за того, что у кого-то &qu

Mock vs Stub

Когда мы начали изучать модульное тестирование, то одними из первых терминов, с которыми пришлось познакомиться, стали Mock и Stub. Ниже попробуем порассуждать в чем их сходство и различие, как и для чего они применяются. Проверять работоспособность тестируемого объекта (system under test - SUT) можно двумя способами: оценивая состояние объекта или его поведение. В первом случае проверка правильности работы метода SUT заключается в оценке состояния самого SUT, а также взаимодействующих объектов, после вызова этого метода. Во-втором, мы проверяем набор и порядок действий (вызовов методов взаимодействующих объектов, других методов SUT), которое должен совершить метод SUT. Собственно, если коротко, то в одном случае используется Stub, а в другом Mock. Это объекты, которые создаются и используются взамен реальных объектов, с которым взаимодействует SUT в процессе своей работы. Теперь подробнее. Gerard Meszaros использует термин Test Double (дублер), как обозначение для объе