Написание тестов качества
Мы знаем, что охват кода является плохим показателем, который можно использовать при оценке качества тестового кода. Мы также знаем, что тестирование языка / фреймворка - пустая трата времени.
С другой стороны, какие показатели мы можем использовать для определения качества тестов? Есть ли у вас лучшие практики или правила, которые вы узнали, чтобы помочь вам определить и написать более качественные тесты?
7 ответов
- Убедитесь, что ваши тесты не зависят друг от друга. Тест не должен зависеть от выполнения или результатов какого-либо другого теста.
- Убедитесь, что в каждом тесте четко определены критерии входа, этапы тестирования и критерии выхода.
- Установите матрицу прослеживаемости проверки требований (RVTM). Каждый тест должен проверить одно или несколько требований. Кроме того, каждое требование должно быть проверено как минимум одним тестом.
- Убедитесь, что ваши тесты идентифицируемы. Установите простое соглашение об именовании или маркировке и придерживайтесь его. При регистрации дефектов обращайтесь к идентификатору теста.
- Относитесь к своим тестам так же, как к своему коду. Иметь процесс разработки тестового программного обеспечения, который отражает ваш процесс разработки программного обеспечения. Тесты должны иметь рецензирование, быть под контролем версий, иметь процедуры контроля изменений и т. Д.
- Категоризируйте и организуйте свои тесты. Упростите поиск и запуск теста или набора тестов по мере необходимости.
- Сделайте ваши тесты максимально краткими. Это облегчает их запуск и автоматизацию. Лучше выполнить много маленьких тестов, чем один большой тест.
- Если тест не пройден, легко понять, почему тест не пройден.
Убедитесь, что это легко и быстро писать тесты. Тогда напишите их много.
Я обнаружил, что очень трудно заранее предсказать, какие тесты будут теми, которые в конечном итоге потерпят неудачу либо сейчас, либо в будущем. Я склоняюсь к меткому выстрелу, пытаясь поразить угловые случаи, если я могу думать о них.
Кроме того, не бойтесь писать большие тесты, которые тестируют кучу вещей вместе. Конечно, если этот тест не пройден, может потребоваться больше времени, чтобы выяснить, что пошло не так, но часто проблемы возникают только тогда, когда вы начинаете склеивать вещи.
Написать тесты, которые проверяют базовую функциональность и индивидуальные сценарии использования программного обеспечения. Затем напишите тесты, чтобы проверить крайние случаи и проверить ожидаемые исключения.
другими словами, пишите хорошие модульные тесты с точки зрения клиента и забудьте о показателях для тестового кода. никакие метрики не скажут вам, если ваш тестовый код хорош, только работающее программное обеспечение скажет вам, когда ваш тестовый код хорош.
Я думаю, вариант использования окажется очень полезным, чтобы получить лучшее тестовое покрытие. Если у вас есть функциональность с точки зрения варианта использования, его можно легко преобразовать в различные тестовые сценарии, чтобы охватить положительные, отрицательные и исключения. В сценарии использования также указываются предварительные условия и подготовка данных, если таковые имеются, для одного и того же, что очень удобно при написании тестовых случаев.
Я бы не согласился, что охват кода не является полезным показателем. Если у вас нет 100% покрытия кода, это по крайней мере указывает на области, которые нуждаются в дополнительных тестах.
В общем, хотя - как только вы получите адекватное покрытие операторов, следующим логическим шагом будет написание тестов, которые либо предназначены для прямой проверки требований, которым код был написан для выполнения, либо предназначены для подчеркивания крайних случаев. Ни один из них не выпадет естественным образом из всего, что вы можете легко измерить напрямую.
Мои эмпирические правила:
- Включите в свой план тестирования еще более простые тестовые примеры (не рискуйте оставить наиболее использованные функции непроверенными)
- Проследите соответствующее требование возле каждого теста
- Как говорит Джоэл, есть отдельная команда, которая занимается тестированием
Есть два хороших способа проверить качество теста
1. Проверка кода
С помощью проверки кода можно проверить шаги импортеров, определенные @Patrick Cuff в своем ответе /questions/36040164/napisanie-testov-kachestva/36040173#36040173
Проверка кода - это систематическая проверка (часто называемая экспертной проверкой) компьютерного исходного кода. Он предназначен для поиска и исправления ошибок, пропущенных на начальном этапе разработки, улучшая как общее качество программного обеспечения, так и навыки разработчиков.
2. Мутация
Второе дешевле - это автоматизированная работа, которая измеряет качество теста.
Мутационное тестирование (или Мутационный анализ или Программная мутация) используется для разработки новых тестов программного обеспечения и оценки качества существующих тестов программного обеспечения.
Смежные вопросы