[Перевод] Правда ли, что разработчики не могут быть хорошими тестировщиками?
![824eaedd896af22c6ed6219e6729707e.png](https://habrastorage.org/getpro/habr/upload_files/824/eae/dd8/824eaedd896af22c6ed6219e6729707e.png)
Тестирование — это процесс оценки программного приложения, а тестировщики — это профессионалы, которые участвуют в этом процессе. Они решают множество задач: пишут тест-кейсы, сообщают о найденных багах, настраивают среду, работают с требованиями и так далее. По данным исследования, рынок тестирования программного обеспечения уже превысил 40 миллиардов долларов США и, как ожидается, к 2027 году вырастет ещё на 7%. Тестировщики должны знать языки программирования, инструменты управления тестированием, инструменты автоматизации тестирования, обладать навыками управления проектами и многими другими навыками.
Теперь давайте обсудим, почему тестировщики нужны? Почему разработчики не могут сами тестировать свой код? Ответ на этот вопрос аналогичен тому, почему студенты не проверяют и не оценивают свои ответы на экзаменах самостоятельно. В этом случае вопроса «почему» не возникает, ведь студенты не смогут самостоятельно оценить свои ошибки. Точно так же и разработчики не могут найти ошибки и просчёты, которые они могли допустить. В этой статье поговорим на эту тему более подробно.
Причины, по которым разработчики не могут быть хорошими тестировщиками
1. Отсутствие большого опыта работы с типичными багами
Это одна из самых важных причин. Опытный тестировщик имеет чёткое представление о типичных багах, которые могут вызвать проблемы в будущем и на которые необходимо проверить продукт в первую очередь. Если у разработчика нет такого опыта, он будет просто делать «случайные выстрелы», которые могут помешать работе всего приложения. Таким образом, отсутствие опыта непосредственно в тестировании — первая причина, по которой разработчики не могут быть хорошими тестировщиками.
2. Разница в подходах
Разработчики работают из перспективы создания приложения. Обычно они анализируют проблему и разбивают её на более мелкие части, чтобы найти наилучшее решение. В то время как тестировщики работают из перспективы что-то сломать или найти недостатки в приложении. А значит, тестировщики должны мыслить нестандартно и проверять все возможные варианты развития событий, ставя себя на место клиента. Их действия направлены на то, чтобы приложение не сломалось, как только оно начнёт работать.
3. Материнская привязанность к своему коду
Будучи обычными людьми, мы испытываем привязанность ко всему, что создаём. Лучше понять это можно на практическом примере: с точки зрения вашей матери, вы — самый лучший. Если вы сделаете что-то не так, она начнёт ссылаться, например, на плохое влияние ваших друзей, ведь в её глазах вы идеальны. Это может показаться глупым, но разработчики испытывают привязанность к своему коду, а это затрудняет поиск недостатков или багов.
4. Разные люди будут выполнять тесты по-разному
Это ещё одна причина, по которой нам нужны независимые тестировщики для тестирования приложения. Разработчик может действовать по одной и той же схеме:
Ввести имя
Ввести адрес электронной почты
Ввести почтовый адрес
Добавить номер телефона
Проверить и нажать OK
Подобный подход использовался при создании приложения. Но тестировщик может действовать нестандартно (как и реальный пользователь), например:
Пропустить имя
Добавить адрес электронной почты в поле адреса
Добавить адрес в поле почтового индекса
Оставить какое-либо поле пустым
И затем нажать кнопку OK
Тестировщик будет пробовать различные комбинации, чтобы проверить, работает ли приложение в соответствии с ожиданиями или нет. Другой тестировщик проведёт тесты по-другому и убедится, что приложение безопасно, не содержит багов и готово к релизу.
5. Фокус на позитивных сценариях
Разработчики обычно работают над реализацией и редко находят ошибки в существующем коде. Они позитивно относятся к коду, и их неспособность найти баги приводит к тому, что они не могут быть хорошими тестировщиками; в то время как тестировщики работают над проверкой кода в негативных тест-кейсах и над повторной проверкой. Тестировщики размышляют о том, что может пойти не так. Разработчики — полная противоположность тестировщикам.
Итак, мы постарались объяснить причины, по которым разработчики не являются по умолчанию хорошими тестировщиками. Но нет такого навыка, которому мы не могли бы научиться. В следующем разделе мы поговорим о том, как разработчики могут внести свой вклад в процесс тестирования.
Как разработчики вносят вклад в процесс тестирования?
Чтобы уменьшить количество ошибок, разработчикам стоит придерживаться в своей работе некоторых практик.
1. Относиться к тестированию серьёзно
Agile-подход подразумевает, что код тестируют и разработчики, и тестировщики. Это обеспечит высокое качество кода и надёжность приложения. Начните относиться к тестированию серьёзно и посвятите некоторое время изучению необходимых навыков.
2. Работать над своими слабыми местами
Будучи разработчиком, вы по-другому относитесь к своему коду. Постарайтесь проанализировать свои слабые места и начните работать над ними — это поможет вам выполнять свою работу гораздо лучше. Если необходимо, обращайтесь за помощью к тестировщикам.
3. Постоянно пополнять свою базу знаний
Лучший способ удержаться в ИТ-индустрии — постоянно совершенствовать свои знания. Ваш код — это как ваш ребёнок, поэтому вы должны заботиться о нём. Старайтесь расширять свои знания в области тестирования, чтобы свести к минимуму количество багов и повысить производительность.
Итак, надеюсь, мне удалось прояснить, почему разработчики не являются хорошими тестировщиками по умолчанию и как они могут внести свой вклад в процесс тестирования. Ведь разработчики и тестировщики — это две разные стороны монеты с разными навыками.
В заключение приглашаем всех начинающих тестировщиков на открытые уроки, которые пройдут в Otus в рамках онлайн-курса »QA Engineer. Basic»: