Вопрос к тестировщикам
Качество кода - это в первую очередь то, что понимается под clean code, т.е. это документация, создание интуитивно понятного (читаемого) кода, создание тестируемого (юнит-тестами) кода итд. На все это тестировщик никак не влияет.
На качество конечного продукта тестировщик влияет, но влияние это оказывается зачастую с задержкой. Дело в том, что тестирование продукта идет по существующим тест-кейсам. Тест-кейсы создаются двумя путями: 1) тестировщик смотрит требования к продукту и проверяет рабочий функционал и пограничные параметры и 2) клиент сообщает об ошибке и таким образом описание бага конвертируется в тест-кейс. По моему опыту тест-кейсов созданных по 2-му пути больше, а это значит, что клиент уже минимум один раз был недоволен продуктом :) Т.е. да, наличие тестировщиков улучшает качество конечного продукта, но и тут есть нюансы :) А именно, количество тест-кейсов всегда только увеличивается, а значит, рано или поздно наступит момент, когда выполнить все имеющиеся тест-кейсы станет невозможно. Ну просто из-за того, что потребуется слишком много времени на прогон сравнительно небольшого количества тестов (у нас на примерно сотню ручных тестов тестировщик тратит 1,5-2 недели :)), а это значит, что какие-то тесты будут вычеркиваться из тест-плана, а значит появится вероятность появления старой ошибки. Т.е. в общем случае тестировщик не может гарантировать выпуск стабильного продукта.
Кроме того, в общем случае, тестировщик не может проверять отказоустойчивость системы. Т.е. можно конечно запустить продукт и выдернуть сетевой кабель, но это не всегда можно (у нас например софт тестируется на виртуальных машинах через remote desktop), а отрубить жесткий диск или
перевести время на час назад в процессе обработки данных или просто инициировать виндоус апдейт просто невозможно. А ведь зачастую именно такие проблемы и всплывают.
Зачем же нужны тестировщики?
Тестировщики прогоняют существующий продукт по "зеленому" сценарию, т.е. задача тестировщика убедиться в том, что в идеальных условиях продукт работает и взаимодействует со внешним миром как надо. Также тестировщик может проводить deployment test'ы, т.е. сценарии апгрейда. Все это очень тягомотная, однообразная и вместе с тем нужная работа.