Код
#статьи

Как лучше тестировать приложения

Приложений с багами слишком много. Возможно, вы тоже увеличиваете их количество. Рассказываем, как находить и исправлять больше ошибок.

 vlada_maestro / shutterstock

Недавно я прочитал рассылку Skillbox о простом способе стать профи, в которой Андрей Коновалов — наш главред — рассказывает о талантливом программисте, который придумывает хорошие решения, но никак не может сдать их с первого раза, потому что не проверяет их. Это мешает ему стать профессионалом.

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

Проверяйте абсолютно всё

Критический баг может затаиться в любом фрагменте кода. Если вы думаете, что какой-то кусочек вашей программы слишком прост, чтобы в нём была ошибка, то вы ошибаетесь. Яркий пример — уязвимость в программе «Блокнот» для Windows, которая позволяет получить доступ к компьютеру жертвы.

Даже если с безопасностью приложения всё в порядке, в нём могут затаиться мелкие ошибки или даже фатальные баги. Они либо ухудшат опыт пользователей, либо вовсе сделают ваш проект бесполезным.

Тестируйте каждую фичу несколько раз

Допустим, у вас есть функция загрузки аватара, которая идеально сработала во время тестирования. Вы можете забыть о ней и так и не узнаете, что если пользователь захочет поменять фотографию, то получит ошибку: приложение не сможет загрузить новый файл, потому что вы не удалили старый.

Чтобы избежать таких ситуаций, нужно несколько раз тестировать каждую функцию. Причём стоит использовать как разные данные, так и одинаковые, чтобы убедиться, что всё работает как часы.

Тестируйте фичи вместе

Бывает и так, что фичи работают отлично по отдельности, но ломаются, если комбинировать их. Допустим, вы написали систему комментариев, в которой можно форматировать текст: выделять его жирным или курсивом, добавлять ссылки и так далее.

Логично, что, написав функцию выделения жирным, нужно проверять именно её. То же самое касается и остальных функций. Но когда система будет готова, нужно протестировать сразу всё. Иначе вы вдруг узнаете, что если добавить ссылку на курсивный текст, а потом сделать всё это жирным, то можно получить доступ к панели администратора.

Вот только тогда будет уже поздно.

Проводите полное тестирование даже после небольшой модификации

Чаще всего я наступал на такие грабли:

  • фича отлично работает при тестировании;
  • добавляешь что-нибудь и тестируешь обновление;
  • через некоторое время узнаёшь, что теперь не работает ничего, кроме самого обновления.

Такое может происходить, если вы сначала реализовали возможность добавления записи в базу данных, а потом добавили новое поле в таблицу. Например, вы создали функцию публикации постов, а позже вспомнили, что забыли добавить поле с количеством просмотров.

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

Будьте новым пользователем

После того как реализуешь возможность регистрации и авторизации, всегда заходишь с одного и того же аккаунта. Из-за этой привычки я чуть не пропустил очень серьёзный баг — сломавшуюся регистрацию.

Поэтому во время каждого тестирования нужно проходить тот путь, который прошёл бы новый пользователь. Именно отсюда растут ноги отговорки «У меня всё работает».

Продумывайте архитектуру

По-хорошему, с этого нужно начинать. Но давайте будем честны сами с собой: мы прекрасно знаем этот совет, но всё равно каждый раз начинаем писать код, ничего не продумав как следует.

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

Например, вы могли написать метод UploadProfileImage (), а потом вспомнить, что нужно ещё добавить метод UploadMessageAttachment (). Скорее всего, отличаться в этих методах будут только запросы к базе данных, пути и допустимые форматы.

Поэтому лучше создать универсальный метод UploadFile () и передавать в него путь для сохранения и файл, который прошёл все проверки. Метод может возвращать булево значение, чтобы можно было определить логику для удачной и неудачной загрузки — те же самые запросы к базе данных.

Заключение

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

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована