Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Разработчик автотестов — это разработчик. Тест-аналитик — это аналитик.
Аналитик будет видеть только проблемы бизнеса.
которые нередко и в глаза друг друга не видели
Функциональные тесты (в том числе через GUI) легко поддерживаются
Code Coverage можно легко померитьCode coverage — да. А вот вопрос о покрытии именно затребованных сценариев — и детализации этих сценариев, вдобавок — это вопрос, который на откуп самим разработчикам отдавать опасно. Грубо говоря, кто проверит, что пара десятков тестов, по заверению команды разработки, тестирующих некий user story:
и на ручном и на функциональном (а-ля selenium)Функциональное — это не «а-ля селениум». Функциональное — это то, которое проверяет, выполняет ли приложение заданные функциональные требования. И оно может быть как ручным, так и автоматизированным, в зависимости от того, что выгоднее в данный момент.
Т.е. в вашем продукте не была заложена testabilityТ.е. не во всех задачах автоматизация дешевле ручной работы. Понимаете, сделать можно вообще все — при наличии бесконечных денег и бесконечного бюджета. Но есть задачи, где автоматизация будет стоить, грубо говоря, 30 килодолларов, а ручное тестирование — 20, при сопоставимом качестве (просто в случае автоматизации просядут одни показатели, а в случае ручного тестирования — другие). И нужно понимать, что нужно в данный конкретный момент, сколько оно стоит и какого результата с его помощью можно достичь.
Если на сервере — может, тестировать запросамиНу, если под «клиентом» подразумевать модуль рисующий, а под сервером — обработку данных для модуля рисующего, то вроде бы да. На практике все хуже — в первую очередь, из-за того, что интегрироваться приходится с совсем не идеальным блэкбоксом в виде GL-подсистемы, для которой уже «сервером» является наш рисующий модуль. Для корректной имитации всего этого в рамках тестов нужны ОЧЕНЬ развесистые моки, которые:
оно ещё и не обязательно через GUI делаетсяНет, не обязательно. Но в рамках неких acceptance test-ов он должен проверяться достаточно часто (и как можно раньше) именно в рамках «сценария пользователя», т.е. когда проходится вся схема, сверху донизу, а не некоего API. Иначе есть много рисков, что ситуация на интеграции пойдет, как в известном анекдоте — «точности не гарантируем, на крайняк будет два туннеля». Но тут есть извечный конфликт практик разработки — в одних случаях предпочитают разрабатывать «снизу вверх», когда вначале пишется некоторое ядро функционала, а в других — «сверху вниз», когда сначала обеспечивают продергать все возможности, пусть даже реальный функционал и забит заглушками.
Слава богу, каждый раз работа мозгом позволила избежать лишней работы руками.Я в свое время на основе всего, что попадалось в руки нашей тест-тиме, вывел для себя список критериев, которые свидетельствуют про то, что, скорее всего, лучше будет тестировать мануально. Правда, он включал в себя такие критерии, как «проект пишут уже больше N месяцев и архитектуру менять нельзя» и «частота изменения сигнатур в API — больше 10 методов в неделю» :)
рисуем приложение через OpenGL

Поэтому, на нашем рынке, где народ пока готов покупать царапаные машины
Если продукт «с царапиной», то его покупать не будут!
а также искоренить мнение, что разработчику не к лицу писать функциональные тесты
В странах бывшего СССР сложилось вполне определённое отношение к тестировщику как к роли второго планаТак может быть перестать называть специалиста, занимающегося повышением качества ПО «тестировщиком», и начать называть, скажем, «инженером по качеству» (программных продуктов)? Ну, конечно, от одного изменения названия мало что поменяется, но это — необходимое условие. Как там говорили — «в африке — живут негры», вот и выходит, что «тестировщик — тестирует». А не повышает качество.
Тестировщики — роль второго плана?