Тестирование кода прежде, чем выпустить к QA

Я услышал, что разработчики говорят, что люди, которые пишут код, не должны быть теми тестирующими его. Я ищу опыт народов в этой ситуации. Много раз я сделал свою долю разработки, затем выпустил к отделу QA и передал код обратно мне becuase, некоторый аспект приложения был поврежден из-за моего кодирования, независимо от того, насколько я протестировал его до выпуска QA.

У кого-либо на этой плате есть процесс для следования, который позволяет им совершенно протестировать свой код прежде, чем выпустить к QA?

9
задан 2 revs 16 June 2010 в 13:22
поделиться

8 ответов

Разработчики обычно работают изнутри наружу, фокусируясь на коде:

  • Утверждения - проверка потока данных и структур
  • Отладчик - проверка потока кода и данных
  • Статический анализатор - проверка стандартов кодирования и поиск известных ошибок
  • Модульное тестирование - проверка каждой функции
  • Интеграционное тестирование - проверка подсистем
  • Системное тестирование - проверка функциональности
  • Регрессионные тесты - проверка того, что дефекты остаются исправленными
  • Тесты безопасности - проверка того, что в систему нельзя легко проникнуть.

Тестировщики, с другой стороны, обычно работают снаружи внутрь, фокусируясь на особенностях:

  • Приемочные тесты - проверка требований конечного пользователя
  • Сценарные тесты - проверка реальных ситуаций
  • Глобальные тесты - проверка выполнимых входных данных
  • Регрессионные тесты - проверка устранения дефектов
  • Тесты юзабилити - проверка простоты использования системы
  • Тесты безопасности - проверка невозможности легкого проникновения в систему
  • Покрытие кода - проверка нетронутого кода
  • Совместимость - с предыдущими версиями
  • Поиск причуд и неровностей.

Конечные пользователи обычно работают с внешним миром достаточно произвольно:

  • Приемочные тесты - проверка требований конечного пользователя
  • Сценарные тесты - проверка реальных ситуаций
  • Тесты удобства использования - проверка простоты использования системы
  • Поиск причуд и шероховатостей.
20
ответ дан 4 December 2019 в 06:29
поделиться

Разработчик тестирует свой код, чтобы убедиться, что код работает так, как задумал разработчик.

Команда QA тестирует код, чтобы убедиться, что код работает так, как, по мнению группы QA, они читают в документации.

Команда QA не просто тестирует код. Команда QA проверяет эффективность коммуникации между заинтересованными сторонами (клиентами, разработчиками, QA, руководством и т. Д.).

2
ответ дан 4 December 2019 в 06:29
поделиться

Разработчик должен протестировать код в соответствии с предоставленными спецификациями. Чаще всего случается, что спецификации могут быть неясными или неверно истолкованными, и это решает кто-то другой, выполняющий QA, что обычно означает те, которые предоставили разработчику спецификации, проверяющие, что реализация выполняет то, что должна была делать, и в противном случае это время, когда несоответствия обнаруживаются и отправляются обратно для исправления.

2
ответ дан 4 December 2019 в 06:29
поделиться

re: «Я слышал, как разработчики говорили, что люди, которые пишут код, не должны его тестировать. "

Если они не проверят это, как они узнают, работает он или нет? Настоящий ответ таков: «люди, которые пишут код, не должны быть только теми, кто его тестирует». Это правда, что у нас, как у разработчиков, есть белые пятна в отношении нашего собственного кода («Я знаю, что не касался того кода, поэтому не нужно его тестировать ...») и нам нужна помощь.

В идеале должен быть модульный тест для каждого тестируемого модуля. Разработчики, которые пишут эти модули, обычно пишут модульные тесты, но это не обязательно. Но модульное тестирование - это только часть истории. Для тестирования интеграции и системного уровня следует привлекать специалистов по тестированию.

2
ответ дан 4 December 2019 в 06:29
поделиться

Мое практическое правило - это модульный тест для каждого метода, возвращающего значение. Как только вы станете зеленым, он перейдет в QA.

Да, QA, вероятно, все еще найдет дефекты. Их работа - придумывать и тестировать ситуации, которые вы в конце концов не рассматривали. В общем, я не думаю, что было бы вероятно и, конечно, необычно, чтобы код проходил напрямую через QA без проблем на первой итерации (за исключением исправлений ошибок и очень незначительных изменений).

1
ответ дан 4 December 2019 в 06:29
поделиться

1) Да, вам как разработчику нужно писать множество модульных тестов. Это поможет вам выявлять ошибки на более ранних этапах цикла, прежде чем передавать их вашей команде QA.

2) Да, как группа разработчиков, вам также необходимо будет провести тесты системной интеграции, чтобы убедиться, что ваш компонент не нарушает другие существующие функции.

1
ответ дан 4 December 2019 в 06:29
поделиться

Разработчик должен ВСЕГДА тестировать свой код, чтобы убедиться, что он работает так, как он ожидает.

Команда QA существует для того, чтобы тестировать, как это делал бы конечный пользователь, и делать/находить те вещи, о которых разработчик просто не подумал.

5
ответ дан 4 December 2019 в 06:29
поделиться

Интересный вопрос. Я постараюсь дать вам хороший обзор с точки зрения тестировщиков.

Если я получу сборку, я буду ожидать, что код будет протестирован на уровне модульного тестирования, чтобы проверить некоторые основы. Это означает, что когда я ввожу некоторые базовые проверки граничных значений, он не падает. Например: если поле принимает значения от 0 до 100, оно должно корректно обрабатывать 101 и -1.

Это простой пример. Я думаю, когда люди говорят, что вы не должны тестировать свой собственный код, они имеют в виду традиционную фазу тестирования, которую обычно проводят обученные тестировщики. Это не значит, что его не следует тестировать на уровне единицы. Я также рекомендую тестировать его вручную, даже чтобы проверить, выполняет ли он основы.

Когда я кодирую, я пишу модульные тесты, интеграционные тесты (если возможно) и, конечно же, вручную тестирую их на основы. Проблема, однако, в том, что написанный мною код тестирования никогда не бывает столь же эффективным, как его тестирует кто-то другой. У меня есть предположения и идеи о коде, которые могут означать, что я пропускаю или игнорирую биты. Я могу предположить слишком многое. Принимайте слишком много как должное. Думаю, я знаю, что делает код. Профессиональный тестировщик избегает этих предположений и, следовательно, часто обнаруживает дефекты, которые вы не можете найти.

Хороший тестировщик также проверит крайние случаи, удобство использования и целый ряд интересных областей.

Здесь был оставлен один комментарий, что спецификации могут быть расплывчатыми и, следовательно, сложными для написания тестов.Но как тестировщик я бы также предположил, что это тоже не усложняет кодирование?

По моему опыту, для написания модульных тестов стоит объединить разработчика и тестировщика. Это потрясающее зрелище, и широта охвата зачастую превосходна.

Ура Роб ..

3
ответ дан 4 December 2019 в 06:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: