Привет, Хабр! Меня зовут Павел Лесюк. Я тестировщик нативных мобильных приложений. В своей предыдущей статье я привел список инструментов, которые могут использоваться тестировщиками и некоторыми другими специалистами для повышения продуктивности своей работы.
В новой серии статей я бы хотел рассмотреть некоторые инструменты поближе и показать на примерах их использование. Первая статья будет посвящена наиболее эффективному и простому решению — сниппетам.
Сниппеты — это фрагменты текста (кода), которые сохраняются для последующего многократного использования. Сниппеты бывают трех видов: статические (обычный текст), динамические (с использованием переменных) и скриптовые (с использованием кода).
В этой статье мы рассмотрим примеры создания статических и динамических сниппетов при работе с десктопом и мобильными приложениями. Помните, что сниппеты — это универсальный инструмент, который может использовать любой специалист, работающий с текстовой информацией.
Инструменты для десктопа
Весь процесс будем рассматривать на примере программы TextExpander для macOS. Есть версии под Windows, Chrome, iOS. Это наиболее функциональный инструмент. Стоимость: $4.16 ежемесячно или $3.33 в месяц при годовой подписке. В качестве альтернативы я бы советовал попробовать PhraseExpress. Есть версии для macOS, Windows, iOS, Android.
В macOS есть встроенная автозамена. Найти ее можно по пути: «Настройки» → «Клавиатура» → «Текст».
В ней поддерживается только обычный текст, так что ее можно использовать только для простых шаблонов.
Заполнение отчетов о дефектах
Допустим, мы хотим автоматизировать процесс создания отчетов о дефектах. Для начала создадим наиболее полный шаблон для заполнения описания в баг-трекинговой системе Jira. Будем учитывать то, что в будущем мы захотим создать все комбинации наиболее часто используемых полей для заполнения описания отчетов. Приступим.
Создание группы сниппетов
Сперва создадим группу сниппетов и присвоим ей название.
Присваивание имени и аббревиатуры
Теперь нужно создать новый сниппет, присвоить ему имя и аббревиатуру. Имя — идентификатор, с помощью которого можно быстро определить, что содержится в сниппете и найти его при необходимости. Аббревиатура — последовательность символов, при вводе которых будет вставляться содержимое сниппета.
Вот несколько свойств хороших аббревиатур:
- Имеет префикс. Это свойство лучше всего использовать, если у вас настроено раскрытие сразу после ввода аббревиатуры (об этом далее). Если выбрать аббревиатуру «report», то с большой вероятностью эта последовательность символов рано или поздно попадется вам в стандартном режиме печати. Поэтому нужно использовать такую последовательность, которую вы не напечатаете до тех пор, пока вам не понадобится содержимое сниппета. Например, можно добавить запятую. Так как после запятой в стандартном режиме печати ставится пробел, то «,report» вам не попадется. Хорошая практика — использовать один префикс для всех сниппетов в одной группе.
- Уникальная. Это свойство также действует если у вас настроено раскрытие сниппета сразу после ввода. Аббревиатура не должна содержать в себе аббревиатуру другого сниппета, так как это приведет к конфликту имен. Например, если у нас есть сниппет «,bg», и мы захотим вставить сниппет «,bg2», то до ввода «2» сработает вставка первого сниппета.
- Запоминаемая. Это значит, что последовательность символов должна ассоциироваться с сутью сниппета или быть аббревиатурой его имени. Например, для нашего кейса мы можем выбрать имя «Bug report» и аббревиатуру «,report» или «,bg».
- Короткая. Длинная аббревиатура будет труднее запоминаться и занимать больше времени на набор.
В большинстве случаев я предпочитаю использовать наименования и аббревиатуры на английском языке. Первый сниппет назовем «Environment, preconditions, steps, actual and expected result» (помним, то что мы захотим создать еще несколько комбинаций этих параметров, поэтому такое название я считаю наиболее подходящим). Аббревиатура — «,epsae», что соответствует первым буквам слов в названии. Также можно настроить чувствительность к регистру.
Заполнение сниппета
Заполним сниппет контентом для описания отчета.
Мы создали статический сниппет. Символы «*» и «#» — синтаксис форматирования в Jira (жирный и нумерованный список соответственно). Посмотрим как работает вставка.
Намного лучше, чем вводить все это вручную или искать нужный шаблон в заметках, не правда ли? В настройках можно задать параметры вставки сниппета. Вставка может происходить сразу после ввода или после нажатия клавиши-ограничителя.
Таким же образом можем создать шаблоны для всех используемых комбинаций полей в описании отчета о дефекте. Можно создать именно тот набор шаблонов, который мы будем использовать чаще всего.
Например, у меня этот набор выглядит следующим образом:
- Preconditions, steps, actual and expected result
- Preconditions, actual and expected result
- Steps, actual and expected result
- Actual and expected result
Использование динамических элементов
Рассмотрим еще несколько примеров.
Например, мне нужно быстро вшить ссылку в текст при оформлении отчета. При использовании встроенного инструмента в Jira это выглядит так:
Вроде неплохо, мы можем сразу начать печатать. Но что, если я хочу вместо example.com вставлять уже скопированную ссылку из буфера обмена? Для этого нам понадобится возможность создания динамического контента внутри сниппета.
С помощью динамических элементов мы вставляем скопированный в буфер обмена контент и устанавливаем курсор в нужную нам позицию. Посмотрим как работает вставка.
Теперь усовершенствуем наш первый шаблон. Допустим, вы мобильный тестировщик, у вас есть парк мобильных устройств, часть которого закреплена за вами. Вы тестируете на этих устройствах чаще всего, и вам хотелось бы иметь их список под рукой при оформлении отчета о дефекте.
Для начала создадим список устройств. Сделаем это с использованием опциональных для выбора элементов.
Далее создадим список хостов, на которых проводим тестирование. Добавим в нашу группу новый сниппет и снова используем опциональные элементы.
Отлично! Теперь перейдем к нашему основному сниппету и обогатим его контентом.
Мы добавили вставку опциональных элементов из других сниппетов и установили позицию курсора, чтобы можно было сразу приступить к вводу текста. Посмотрим как работает наш усовершенствованный сниппет.
При вставке динамических элементов, которые ожидают от пользователя каких-либо действий (заполнение, выбор и т. д.), будет открываться отдельное окно, в котором над этими элементами нужно будет произвести соответствующие действия.
Создание шаблонов заметок
Еще один пример: создание шаблонов структуры рабочих заметок. Я веду заметки с поддержкой markdown для билдов мобильных приложений с определенной структурой и использую сниппеты для их быстрого генерирования.
Ниже продемонстрирован пример вставки готового шаблона в заметки.
Заполнение тестовых форм
При работе с веб/десктоп-приложениями можно использовать сниппеты для заполнения форм данными.
С помощью имитации нажатия кнопки Tab переход между полями происходит автоматически.
Создание отчетов
Рассмотрим создание отчета о тестировании. Предположим, что раз в неделю мы пишем отчет о новых проектах в мобильных приложениях.
Используем динамические элементы, форматированный текст и картинки.
В итоге получим готовую структуру отчета, которую можно быстро заполнить нужными значениями и отправить письмо.
Инструменты для мобильных ОС
Android
В Android можно использовать Texpand или Gboard. К сожалению, в обоих приложениях нет возможности синхронизации между устройствами.
Gboard поддерживает только обычный текст. По сути это расширенный буфер обмена, в котором можно закреплять некоторые из фрагментов.
В Texpand возможности шире. В бесплатной версии есть поддержка 10 сниппетов, динамических даты и времени, вставки из буфера обмена и установки позиции курсора. Также можно создать бэкап и импортировать сниппеты на другие устройства.
iOS
В iOS есть встроенная автозамена, поддерживает только обычный текст.
Также есть версии TextExpander и PhraseExpress для iOS.
В TextExpander все сниппеты синхронизируются между десктопной и мобильной версией. В мобильной версии есть ряд ограничений по сравнению с десктопной версией:
- Сниппеты раскрываются при печати только при активной клавиатуре TextExpander (вместе с приложением идет клавиатура, которую можно включить в настройках iOS).
- Взаимодействие с динамическими элементами (заполнение, выбор и т. д.) работает только в самом приложении, в сегменте «Notes». Оттуда заполненный сниппет можно скопировать или переслать через меню шеринга.
- Не работают скриптовые сниппеты (в этой статье они не рассматривались).
Можно добавить сниппеты в избранное для быстрого доступа из клавиатуры.
Ниже продемонстрирован пример работы с динамическим сниппетом.
Заключение
Мы рассмотрели работу статических и динамических сниппетов на примере создания тестовой документации. Их также можно использовать для создания различного рода писем (повторяющихся почтовых рассылок, предложений о рассмотрении вакансий и т. д.), структуры документов и заметок, генерации кода и много чего еще.
Спасибо за то, что дочитали статью до конца. Надеюсь, информация, изложенная в ней, окажется для вас полезной, и вы сможете сэкономить время, используя ее на практике. Если у вас возникли какие-либо вопросы по статье — буду рад на них ответить. В следующей статье я планирую написать об использовании скриптовых сниппетов. А пока предлагаю подписаться на мой Telegram-канал, где я публикую всю остальную информацию на тему тестирования.