Разделы портала

Онлайн-тренинги

.
Разговоры о тестировании
05.04.2023 00:00

Автор: Майкл Болтон (Michael Bolton)
Оригинал статьи
Перевод: Ольга Алифанова

Зачастую, как онлайн, так и в личных разговорах, тестировщики сообщают мне, что им трудно провести четкую грань между тестированием и проверками, говоря с окружающими.

Это верно: "тест" – перегруженное слово. В некоторых контекстах оно относится к эвристическому процессу: к оценке продукта путем его изучения через опыт, исследования и эксперименты; это имеют в виду тестировщики, говоря о тестировании, и именно так мы описываем тестирование в Rapid Software Testing. В других контекстах "тест" означает алгоритмический процесс: применение правил принятия решений к результату работы некой функции или механизма.

К сожалению, в какой-то момент "тест" в программировании утратил свое куда более богатое историческое значение ("то, путем чего существование, качество или истинность чего-то может быть определена", согласно Оксфордскому словарю английского языка). Алан Тьюринг не делал такой ошибки; он написал работу "On Checking a Large Routine". Различие все еще было довольно ясным в книге 1972 года "Program Test Methods" – первой книге, посвященной тестированию. Но позднее оно стало размываться.


Однако эта разница все еще крайне важна! Проверка функционального результата – важная часть дисциплинированного процесса разработки, но она не заменит опыт работы с продуктом и проведение экспериментов над ним. Мы можем прогнать тысячи проверок вывода программы, и в продукте останутся жуткие проблемы, не выявленные этими проверками. "Тесты", о которых говорят разработчики – это не те "тесты", о которых говорят тестировщики.

Недавно тестировщик заметил: "Эти "тесты" – не одно и то же, и то, что они одинаково называются, очень мешает. Но я не уверен, что смогу это изменить, или что мне стоит даже пытаться это поменять".

Ну… когда-то люди не делали различий между вирусными и бактериальными инфекциями. Это, конечно, важно – не в последнюю очередь потому, что антибиотики бессильны перед вирусной инфекцией, а чрезмерное употребление антибиотиков ослабляет их действие. Сейчас не только доктора и ученые различают эти виды инфекций; широкие массы как минимум имеют некоторое представление, что тут есть значимые различия.

Как это произошло? Не потому, что ученые, эксперты, которые действительно что-то в этом понимают, сказали "Ну… я не могу изменить язык; просто будем называть все это инфекциями". Это произошло потому, что они потрудились обозначить это различие и использовать его в своем дискурсе.

По моему опыту, довольно легко убедить разработчиков различать тестирование и проверки. Они готовы признать, что различия существуют – как и между программированием и компилированием. На самом деле было бы неразумным отрицать эти различия, и большинство разработчиков не хочет чувствовать себя неразумными или казаться ими.

Однако мне кажется, что у некоторых тестировщиков есть с этим проблемы. У меня их нет. Отчасти потому, что я стар, бородат, опытен и уверен в себе. У меня есть опыт разработки и опыт программного управления. Я говорю как человек, понимающий в тестировании, и знающий, что тестирование имеет значение. Не все так же стары, бородаты и обладают таким же опытом, как я – они не столь уверены в себе.

Что ж, не бойся, Дорогой Тестировщик. В группе разработки ты (предположительно) эксперт по тестированию, поэтому тебе придется возглавить разговоры о тестировании, направив их в нужное русло.

С другой стороны, придирки к чужому дискурсу – это социальный провал. Вот что делаю я, и что я предлагаю делать, чтобы подвинуть лексику и мастерство разработки вперед.

Я применяю этот подход, когда работаю в команде; когда обучаю студентов-тестировщиков; когда помогаю менеджеру справиться с имеющими отношение к тестированию проблемами; или же беседуя с кем-то в социальных сетях.

Как только кто-то заводит речь об "автоматизированном тестировании", или называет юнит-проверку "тестом", я жду (но недолго) подходящего момента. В этот момент я объясняю, что мы различаем тестирование и проверки, и объясняю, почему это крайне важно для меня, ответственного, профессионального тестировщика.

Я замечаю, что использую эту разницу для объяснения, почему мое тестирование не может быть автоматизировано – так же, как не могут автоматизироваться программирование, дизайн, менеджмент, расследования, исследования или журналистика.

Я рад ответить на любые вопросы по теме. Я также рад признать важность проверки результатов для эффективного тестирования. Тщательные проверки помогают устранить ошибки кода, которые можно легко обнаружить и избежать. Исследование этих проблем и отчетность по ним прерывает и замедляет глубокую работу тестировщика, поэтому я выражаю благодарность разработчикам, проверяющим свою работу.

Все это особенно важно для студентов курса Rapid Software Testing. Способность внятно говорить о тестировании важна для развития в тестировщике уверенности, а также для того, чтобы его больше уважали окружающие.

Когда я уверен, что добился понимания, жизнь идет своим чередом. Иногда (чаще, чем вам кажется) люди сразу же начинают внедрять эти знания в свою речь. Иногда они этого не делают, продолжая говорить о "юнит-тестах" или "написании тестов". Все в порядке – после этого разговора я не буду пытаться их поправлять. Это вызвало бы социальную неловкость.

Но я буду предельно скрупулезен в своей собственной речи. Когда кто-нибудь говорит "у нас в этой области нехватка юнит-тестов", я отвечу "Согласен; больше юнит-проверок будет хорошей идеей". Когда кто-то говорит о "нестабильных тестах", я могу ответить "да; мы должны разобраться, почему эти проверки дают противоречивые результаты". Когда менеджер говорит "нам нужно автоматизировать больше тестирования", я предположу, что "больше автоматизированных проверок может помочь, но давайте посмотрим на то, как проблемы могут их обойти". Я делаю это максимально естественно, не привлекая внимания (все это также применимо к "ручному" и "автоматизированному тестированию").

И через какое-то время, так как люди естественным образом стремятся соответствовать, они начинают говорить о тестировании и проверках этим, более точным, вдумчивым и мощным образом.

И ты, Дорогой Тестировщик, тоже это можешь. И вместе мы изменим мир.

Обсудить в форуме