Первоначально, это обязанность разработчика писать тест, но я заметил, что во многих случаях / e-зрелые разработчики эти случаи не дают даже 80% покрытия.
Как насчет того, чтобы у меня был специалист по обеспечению качества, посвященный написанию ВСЕХ тестов для данного проекта вместо разработчика?
Есть ли какие-то минусы к этому?
development-process
tdd
Итай Моав -Малимовка
источник
источник
Ответы:
В разработке через тестирование тесты должны быть написаны разработчиком. Иначе кто-то, кроме разработчика, руководит разработкой.
Поэтому, как только вы дадите работу по написанию тестов не-разработчику, этот человек станет разработчиком.
Мой опыт работы с TDD заключается в том, что написание тестового кода часто бывает сложнее или сложнее, чем написание производственного кода. Поэтому, если у вас есть ресурсы, способные написать хороший код модульного теста / интеграционного теста, они должны писать производственный код, обеспечивающий прохождение этих тестов.
источник
Работа QA состоит в том, чтобы выполнять совершенно другой вид тестирования (то есть тестирование юзабилити / интеграции). Им не обязательно знать технологии, используемые в коде.
Если вас беспокоит низкий охват кода, вам нужно дисциплинировать своих разработчиков. Например, прекратить работу над новыми функциями, пока не увеличится покрытие кода. Некоторые организации заходят так далеко, что в своем репозитории имеется ловушка предварительной фиксации, которая не позволяет регистрировать открытый код.
И последнее, но не менее важное: в «чистом» TTD вообще не должно быть непокрытого кода (поскольку вы сначала пишете тесты). Однако есть случаи (хотя люди спорят об этом), когда более низкий охват кода приемлем. Некоторые утверждают, например, что написание тестов для получателей / установщиков POJO - пустая трата времени.
источник
Это может быть проблемой управления.
Или это может быть неактуально.
Во-первых, разница между 80% и 100% охватом - это, вероятно, большая цена за очень небольшую выгоду.
«Покрытие» может означать что угодно. Строки кода, логические пути и т. Д. Я предполагаю, что вы имеете в виду строки кода (не логические пути).
Некоторые логические пути довольно хорошо проверены «проверкой». Код очевиден, не имеет операторов if, имеет очень, очень низкую сложность и, вероятно, не нуждается в дополнительном тесте.
На 20% больше тестов не всегда на 20% больше качества.
Во-вторых. Это проблема управления. Если руководство хочет 100-процентное покрытие, оно должно внедрить систему вознаграждений, которая вознаграждает 100-процентное покрытие вместо того, чтобы «достаточно хорошо выпустить» 80-процентное покрытие.
Добавление QA людей, чтобы написать больше тестов, не очень поможет.
Добавление разработчиков для написания большего количества тестов - это то, что необходимо для обеспечения 100% покрытия тестами.
источник
ИМХО Модульное тестирование не является процессом обеспечения качества. Это скорее ускорение разработки (за счет сокращения цикла обратной связи для разработчиков). Это должен делать человек, пишущий компонент (он же модуль), с акцентом на использование компонентов (другим разработчиком).
Функциональное тестирование - это процесс обеспечения качества, который может и должен выполнять группа обеспечения качества. Это может сделать разработчик, но не разработчик будет лучше, так как разработчик может не знать все способы, которыми пользователь может использовать приложение.
И то, и другое можно сделать в стиле TDD.
источник
TDD - это не только тестирование, но и дизайн. Написание кода просто для того, чтобы пройти тесты, обычно приводит к уменьшению объема и поддержке кода. Если вы поручаете другим лицам писать тесты, вы также будете делегировать ответственность за создание хорошего кода.
Следует также отметить, что покрытие не скажет вам о качестве кода и не сообщит, распространяется ли действие правил домена.
источник
Если вам нужно покрытие не менее 80%, вам нужно сделать пару вещей:
Наконец, следует понимать, что существует разница между предполагаемыми путями выполнения и непредусмотренными путями выполнения. В процессе написания тестового кода вы, возможно, доказали, что вам нужна пара независимых операторов if. В результате доступны тесты для двух из четырех возможных путей выполнения. Добавьте еще один независимый оператор if, и у вас есть потенциал для восьми путей выполнения (т. Е. Экспоненциальный рост).
Следует понимать, что TDD не обязательно предсказывает каждый потенциальный путь выполнения, поэтому существует ряд тестов, которые, возможно, должны быть написаны для завершения, но не написаны, потому что не было необходимости тестировать этот путь. Короче говоря, TDD не гарантирует покрытия, но он гарантирует, что есть по крайней мере один тест, чтобы доказать причину для кода, который существует.
источник