Тестирование разработки — это процесс разработки программного обеспечения , включающий синхронизированное применение широкого спектра стратегий предотвращения и обнаружения дефектов с целью снижения рисков, времени и затрат на разработку программного обеспечения.
В зависимости от ожиданий организации в отношении разработки программного обеспечения, тестирование разработки может включать статический анализ кода , анализ потока данных , анализ метрик , экспертную оценку кода , модульное тестирование , анализ покрытия кода , прослеживаемость и другие методы проверки программного обеспечения.
Тестирование разработки выполняется разработчиком или инженером программного обеспечения на этапе конструирования жизненного цикла разработки программного обеспечения . [ 1]
Вместо того чтобы заменять традиционные фокусы QA , он дополняет их. [2] Тестирование разработки направлено на устранение ошибок построения до того, как код будет передан на QA; эта стратегия направлена на повышение качества конечного программного обеспечения, а также эффективности общего процесса разработки и QA. [3]
Тестирование разработки применяется для следующих основных целей:
Исследование VDC сообщает, что стандартизированная реализация процессов тестирования разработки в рамках всеобъемлющего стандартизированного процесса не только улучшает качество программного обеспечения (согласуя действия по разработке с проверенными лучшими практиками), но и увеличивает предсказуемость проекта. [4] Исследование Voke сообщает, что тестирование разработки делает программное обеспечение более предсказуемым, прослеживаемым, видимым и прозрачным на протяжении всего жизненного цикла разработки программного обеспечения. [2]
В каждом из вышеперечисленных приложений тестирование разработки начинается с определения политик, которые выражают ожидания организации в отношении надежности, безопасности, производительности и соответствия нормативным требованиям. Затем, после того как команда обучена этим политикам, внедряются практики тестирования разработки для согласования деятельности по разработке программного обеспечения с этими политиками. [5] Эти практики тестирования разработки включают:
Акцент на применении широкого спектра методов предотвращения и обнаружения дефектов основан на предпосылке, что различные методы тестирования разработки настроены на выявление различных типов дефектов на разных этапах жизненного цикла разработки программного обеспечения, поэтому совместное применение нескольких методов снижает риск ускользания дефектов. [3] Важность применения широкого набора методов подтверждается Бемом и Базили в часто упоминаемом «Списке 10 лучших методов снижения дефектов программного обеспечения». [7]
Термин «тестирование разработки» иногда использовался для описания применения инструментов статического анализа. Многочисленные лидеры отрасли не согласились с этим смешением, поскольку статический анализ технически не является тестированием; даже статический анализ, который «охватывает» каждую строку кода, не способен подтвердить , что код делает то, что он должен делать, или выявить определенные типы дефектов или уязвимостей безопасности , которые проявляются только при динамическом выполнении программного обеспечения. Хотя многие предупреждают, что статический анализ сам по себе не следует считать серебряной пулей или панацеей, большинство отраслевых экспертов сходятся во мнении, что статический анализ является проверенным методом устранения многих дефектов безопасности, надежности и производительности. Другими словами, хотя статический анализ и не то же самое, что тестирование разработки, его обычно считают компонентом тестирования разработки. [8] [9]
В дополнение к различным реализациям статического анализа, таким как анализ потока и модульное тестирование, тестирование разработки также включает в себя проверку кода коллегами как основную деятельность по обеспечению качества. Проверка кода широко считается одним из наиболее эффективных методов обнаружения и предотвращения дефектов в разработке программного обеспечения. [10]