Книга: Идеальный программист. Как стать профессионалом разработки ПО
Обсуждение тестов и пассивно-агрессивная позиция
Обсуждение тестов и пассивно-агрессивная позиция
Авторы тестов – люди, и они тоже допускают ошибки. Иногда при переходе к реализации становится очевидно, что тест выглядит бессмысленно. Тесты бывают слишком запутанными или громоздкими.
Они могут базироваться на нелепых предпосылках. А иногда они попросту неверны. Все это может быть весьма неприятно, если вы – разработчик, который должен обеспечить прохождение теста.
Ваша задача как профессионального разработчика – обсудить ситуацию с автором теста для его улучшения. Никогда не выбирайте пассивно-агрессивную позицию, когда вы говорите себе: «Как написано в тесте, так я и сделаю».
Помните: профессионал обязан помочь своей группе создать программу настолько качественную, насколько это возможно. А это означает, что все должны уделять внимание возможным ошибкам и промахам коллег и совместно работать над их исправлением.
Пола: «Том, с этим тестом что-то не то».
ensure that the post operation finishes in 2 seconds.
Том: «По-моему, все нормально. Наше требование гласит, что пользователи не должны ждать больше двух секунд. В чем проблема?»
Пола: «Проблема в том, что мы можем гарантировать выполнение требования только в статистическом смысле».
Том: «По-моему, это только слова. В требованиях ясно сказано: две секунды».
Пола: «Верно, и мы можем обеспечить этот результат в 99,5 % случаев».
Том: «Пола, в требовании этого нет».
Пола: «Мы живем в реальном мире. Я не могу предоставить других гарантий».
Том: «Сэм будет в бешенстве».
Пола: «Вообще-то я с ним уже пару раз обсуждала эту тему. Он согласен, если типичная продолжительность операции будет не более двух секунд».
Том: «Ну и как мне писать этот тест? Я же не могу сказать: „операция обычно заканчивается за две секунды“».
Пола: «Сформулируй на статистическом уровне».
Том: «Предлагаешь выполнить операцию тысячу раз и проверить, что она заняла более двух секунд в пяти и менее случаях? Абсурд».
Пола: «Нет, это займет слишком много времени. А как насчет этого?»
execute 15 post transactions and accumulate times.
ensure that the Z score for 2 seconds is at least 2.57[36]
Том: «А что еще за z-показатель?»
Пола: «Так, статистика. А как тебе такая формулировка?»
execute 15 post transactions and accumulate times.
ensure odds are 99.5 % that time will be less than 2 seconds[37]
Том: «Да, это уже понятнее, но можно ли доверять математике?»
Пола: «Я обязательно включу все промежуточные вычисления в отчет по тестированию, чтобы ты мог проверить вычисления, если у тебя останутся сомнения».
Том: «Хорошо, меня это устроит».
- Преждевременная точность
- Принцип неопределенности
- Стремление к точности оценки
- Поздняя неоднозначность
- Приемочные тесты
- Что такое «выполнено»?
- Взаимодействие сторон
- Автоматизация
- Дополнительная работа
- Кто и когда пишет приемочные тесты?
- Роль разработчика
- Обсуждение тестов и пассивно-агрессивная позиция
- Приемочные тесты и модульные тесты
- Графические интерфейсы и другие сложности
- Выбор интерфейса для тестирования
- Непрерывная интеграция
- Стоп-сигнал