Статья

Предугадывание ошибки: несколько идей для тестирования черного ящика

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

Автор: Анна Каплун, Lead Test Engineer в Intellias

«ПЛОХОЕ» ЦЕЛОЕ ИЗ «ХОРОШИХ» ЧАСТЕЙ

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


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

Один из подходов к составлению негативных тестов – взять «хорошие» значения для каждого компонента и получить из них «плохую» дату (например, 31.02.2018 – невалидная дата, хотя каждая из ее составляющих относится к позитивным значениям). Такое применение причины-следствия позволит найти новые баги там, где компоненты целого задаются отдельно друг от друга. 

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

НЕ СТОИТ НЕДООЦЕНИВАТЬ СОСТОЯНИЯ И ПЕРЕХОДЫ

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


Что будет, если попробовать еще раз удалить запись, которую удалил другой пользователь, без предварительного обновления страницы? А если внести два независимых изменения разными аккаунтами в один и тот же параметр и попробовать сохранить? 

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

СПОСОБ ОСУЩЕСТВЛЕНИЯ ДЕЙСТВИЯ ИЛИ ТОЧКИ ВХОДА

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


Можно ли ввести неразрешенные символы с клавиатуры? А с помощью копирования и вставки? А если вызвать эти операции из контекстного меню? Как насчет виртуальной клавиатуры, голосового ввода, перетаскивания (drag&drop)? Могут ли какие-то способы позволить пользователю обойти ограничения на ввод?

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

МОБИЛЬНЫЕ ПРИЛОЖЕНИЯ: ПОВОРАЧИВАЕМ ЭКРАН

Когда впервые сталкиваешься с тестированием мобильных приложений, кажется, что ничего особенного не произошло и мир совсем не изменился: те же техники тест-дизайна, в целом похожие элементы интерфейса. Что же не так? 


Начнем с поворота экрана. Каждый раз, когда пользователь поворачивает смартфон, системе нужно заново «перечитать» расположение элементов интерфейса на экране. Конечно, если программа поддерживает только вертикальную или горизонтальную разметку, никаких проблем нет, но для большинства современных мобильных приложений это не подходит. Какие же проблемы можно обнаружить таким образом? 

  • Проверь, что все статические страницы твоего приложения выглядят хорошо как в вертикальном, так и в горизонтальном режиме. 
  • Убедись, что при повороте экрана не теряются ранее введенные значения. 
  • Сделай динамическую проверку, то есть поворот во время действия (проигрывание видео, процент скачивания файла и т.п.), происходящего на экране в данный момент. При повороте экрана процесс не должен прекратиться, а его отображение (бегунок, показывающий, какая часть видео уже была проиграна, статус-бар, демонстрирующий процент загрузки файла) не должно «обнулиться».

ВЕБ-ПРИЛОЖЕНИЯ: ПРОСТЫЕ ПРОВЕРКИ БЕЗОПАСНОСТИ

При тестировании веб-приложений стоит делать простые проверки безопасности для текстовых полей.


Существуют некоторые «опасные» комбинации символов, которые нежелательно сохранять в базе данных, если пользователь потом увидит их в текстовом виде на другом экране. К таким комбинациям относят %3C%73%63%72%69%70%74%3E, <script>, /(\%27)|(\')|(\-\-)|(\%23)|(#)/ix, &ls и другие. 

Например, если ты сохранил строчку вида <script>alert(“Hello!”)</script>, а потом на странице, где она должна отображаться в виде текста, увидел всплывающее окно с текстом «Hello!», пора заводить баг о безопасности и ставить ему severity повыше.

Когда захочешь составлять такие тесты самостоятельно, начни с XSS и SQL-инъекций.

ДЕСКТОП-ПРИЛОЖЕНИЯ: КАКОЙ МИНИМАЛЬНЫЙ РАЗМЕР ОКНА?

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


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

Программа не должна превращаться в три малополезные кнопки (свернуть, развернуть и закрыть), а пользователь  безболезненно взаимодействовать с интерфейсом, даже если размер окна минимален.

ВСЕГДА МОЖНО СДЕЛАТЬ ЛУЧШЕ!

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

Хочешь узнать больше? Регистрируйся на онлайн-курсы Тестирование ПО (QA Manual)" от SPALAH!

Подпишись на еженедельный дайджест и получай на почту:

лучшие статьи, видео вебинаров, предстоящие события, интервью с лидерами индустрии

Наши каналы в социальных медиа: