Как сказал один товарищ
написание тест(ов) это же по сути программирование, так-то. Ну да, немножко специфичная область, но принципы все те же. Если QA спрособен хорошо написать тест, то он по сути программирует. И тогда возникает вопрос - а чего он только тесты программирует, а не саму систему?
Ответ на ваш вопрос - а должен ли тестировщик в конкретном месте (компании) уметь программировать. К примеру, одна компания, которая занимается тестированием для популярной онлайн-игры, ищет ребят без опыта в IT и без навыков программирования, утверждания, что программирование им не пригодится.
Часто тестировщики разделяются на ручных и автоматизаторов. Первые выполняют тестирование и проверку приложения в ручном режиме. Составляют чек-листы и проверяет необходимые данные визуально. Да, это неудобно, но не всегда можно всё протестировать руками (другой вопрос, а необходимо ли)
Также тестировщики могут писать тесты (различного уровня), писать скрипты для автоматизации, писать различные инструменты для своей работы. Как правило любимые языки (часто используемые) программирования у таких ребят - Javascript, Java, Python.
Конечно хорошо, когда тестировщик умеет программировать, это бывает плюсом. И ребята, которые хотят попасть в айти, бывает выходят именно из тестировщиков. Но как я сказал выше, иногда их деятельность может быть вообще никак не связана с программированием.