Но, насколько я понял, взамен предлагается писать программы, которые не требуют юнит-тестирования. Причем писать их будут негры из кенийских саванн (правда-правла).
которые занимают кучу времени на прогон, количество которых растёт в геометрической прогрессии, а их поддержка превращается в ад уже через несколько спринтов. ну-ну
Нужно инвестировать в окружение. БД в памяти, моки внешних сервисов и так далее.
количество которых растёт в геометрической прогрессии
Ерунда, их количество растет линейно с ростом функциональности.
а их поддержка превращается в ад уже через несколько спринтов
Говнокодить не надо =). Поддержка функциональных тестов на порядок проще юнит-тестов, так как для каждого модуля не надо кодить тестовый контекст. Наверное ты просто не писал таких тестов.
Нужно инвестировать в окружение. БД в памяти, моки внешних сервисов и так далее.
получим в итоге эрзац-функциональное тестирование, а проблему не решим все равно: функциональные тесты априори дольше модульных
Ерунда, их количество растет линейно с ростом функциональности.
во-первых, почему мы ограничились ростом функциональности? сводить тестирование сложной системы к банальному черному ящику с покрытием только требований - кратчайший путь к факапу и потерям времени на тест-дизайн и дебаг приложения во-вторых, даже если рассмотреть только рост функциональности, без покрытия тестами внутренних изменений системы. допустим, есть система из N модулей, с одной точкой входа и M точек выхода. добавим на вход первого модуля 1 переменную (соответственно +1 точку выхода), получим условные +2 теста на первый модуль (позитивный и негативный) и столько же на все зааффектанные модули при модульном тестировании. при функциональном тестировании - +2*M тестов независимо от того, зааффектаны все модули или только некоторые. итого, максимум 2*N при модульном против гарантированных 2*M при функциональном. это не считая того, что в 99% случаев точек выхода больше, чем модулей в системе (каждый модуль реализует какую-то логику, соответственно плодит точки выхода)
Говнокодить не надо =). Поддержка функциональных тестов на порядок проще юнит-тестов, так как для каждого модуля не надо кодить тестовый контекст. Наверное ты просто не писал таких тестов.
конечно, за 7 лет в QA - ни разу. поддержка функциональных тестов на порядок сложнее по причинам, описанным выше: любое изменение надо тащить через всю систему, не ограничиваясь измененным модулем
Ни разу на видел, что бы QA писали нормальные тесты.
ну да, общеизвестно, что лучшие тесты - это те, которыми разработчик самостоятельно покрыл кусок своего же кода, желательно заюзав в проверке тестируемый код. идеальные - те, которые он еще и вкоммитил никому не показав. по делу-то будет что-нибудь? я не против послушать, как удержать рост количества функциональных тестов в разумных рамках.
я не против послушать, как удержать рост количества функциональных тестов в разумных рамках.
Короткий ответ, многократно повторяя правильно Парето (20% усилий дает 80% результата), пока не будет приемлимого результата.
Нужно исходить исключительно из целесообразности, а не «давайте покроем все возможные кейсы между модулями». На практике выглядит так: покрывается тестами конечная функциональность (опять же, в разумных приделах, если что-то слишком тяжело тестируется, например не стабильно, лучше бросить) + покрываются некоторые важные сценарии, которые с наружи не видны, но это делается программистом, который знает архитектуру (а еще лучше если он же ее и придумал) и принимает решение исходя из здравого смысла.
Это напрямую противоречит всем методологиям тестирования. «тестирование из целесообразности» не нужно и бессмысленно просто по своему определению. Все такие тесты можно смело удалить и ничего не потерять. Полезные тесты - это те, которые выходят за рамки целесообразности.
Нужно исходить исключительно из целесообразности, а не «давайте покроем все возможные кейсы между модулями»
из целесообразности исходить можно при планировании автоматизации, но не при планировании тестирования. все возможные кейсы всегда должны быть покрыты, а покрыв автотестами 20% сценариев, вы передвинете проблему разрастающегося количества тестов на стадию ручного тестирования, которое еще медленнее функциональных тестов. не могу не отметить ваш оригинальный подход к организации работы.
покрываются некоторые важные сценарии, которые с наружи не видны
если ваша система настолько хреново документирована, что важные сценарии не видны членам команды - у меня для вас очень плохие новости
но это делается программистом, который знает архитектуру (а еще лучше если он же ее и придумал) и принимает решение исходя из здравого смысла.
ну да. из своего здравого смысла он уже наплодил ошибок, так давайте он из своего же здравого смысла наплодит карго-тестов, которые ничего не проверяют, зато быстро проходят, мигают зеленым и создают видимость покрытия
//пмсм, человеку, который пишет «приемлимого», «приделах» и «с наружи», высказывать мнение о тестировании должно быть запрещено законом