Примеры A/B-тестирования и краткие результаты
1. Изменение структуры рекламной кампании
У клиента, который продает кожаные сумки, рюкзаки, портфели, барсетки и т. п., изначально были созданы РК под каждую категорию с соответствующей семантикой, как это представлено ниже.
Было решено объединить условные 7 кампаний в одну крупную, в которой будут разделены товары по группам внутри одной РК.
Внутри были сформированы группы: по категориям товаров – в скобках, через нижнее подчеркивание – название группы. Таким образом была максимально укрупнена вся семантика, которая ранее давала конверсии.
В результате укрупненная РК давала примерно на 30% больше конверсий за счет того, что результаты накапливались быстрее и системе было проще оптимизировать кампании.
2. Сплит-тестирование креативов
Следующий пример касается Facebook.
В рекламу услуг установки брекетов были добавлены фотографии различных людей из каталога стоматологических услуг. Объявление, которое называется «Генерация лидов 1», на протяжении нескольких месяцев приносило лиды. Затем по просьбе клиента мы решили опробовать креатив, на котором был изображен макет челюсти с брекетами – «Генерация лидов 6».
Смена креатива резко сократила количество лидов и значительно увеличила цену за конверсию. Так мы поняли, что в этом случае первый вариант креативов оказался более привлекательным для потенциальных клиентов.
3. Сплит-тестирование публикаций
Ниже на скриншоте можно увидеть, что публикации в Дзене работают так же, как и креативы в Facebook или рекламные объявления в Директе. Разные публикации могут приносить разное количество лидов, поэтому не стоит бояться пробовать добавить новые публикации.
В данном случае мы видим, что одна публикация за время ее работы принесла 24 лида из 31. Конкретно в этом случае мы добавили в название статьи цену, чего не делали в других статьях, и именно этот вариант показал наилучший результат.
Таблица принятия решений (Decision Table Testing)
Техника
- Определить все условия
- Составить все возможные комбинации условий
- Убрать лишние комбинации. Удаляются те, в которых изменение значений никак не влияет на получаемый результат (Don’t care — DC)
- Определить действия
- Создать тест-кейсы для каждой комбинации
Таблица принятия решений — представляет связь составных условий и результирующих действий.
Если условие представляет из себя диапазон значений, то дополнительно создаются тесты для проверки значений выше и ниже граничного.
23=8 комбинаций | Rule 1 | Rule 2 | Rule 3 | Rule 4 | Rule 5 | Rule 6 | Rule 7 | Rule 8 |
Conditions | ||||||||
Допустимый код акции | N | N | N | N | Y | Y | Y | Y |
Допустимое количество | N | N | Y | Y | N | N | Y | Y |
Достаточно средств | N | Y | N | Y | N | Y | N | Y |
Actions | ||||||||
Купить | N | N | N | N | N | N | N | Y |
Внимательно посмотрев на таблицу, можно заметить, что в правилах 1, 2, 3, 4, если код акции недопустимый, то проверка остальных условий не имеет смысла. Правила 5 и 6 могут быть объединены, т.к. условие проверки средств никак не влияет на результат. Условия, которые не оказывают влияние на результат помечаются как “DC”. Таблица преобразуется:
4 комбинации | Rule 1 | Rule 2 | Rule 3 | Rule 4 |
Conditions | ||||
Допустимый код акции | N | Y | Y | Y |
Допустимое количество | DC | N | Y | Y |
Достаточно средств | DC | DC | N | Y |
Actions | ||||
Купить | N | N | N | Y |
Т.к. всегда есть вероятность того, что таблица может быть преобразована неверно или код написан неправильно лучше, чтобы исходная таблица все равно была под рукой.
Гиперпараметрическая оптимизация модели
что такое гиперпараметры и чем они отличаются от обычных параметров
- Гиперпараметры модели можно считать настройками алгоритма, которые мы задаём до начала его обучения. Например, гиперпараметром является количество деревьев в «случайном лесе», или количество соседей в методе k-ближайших соседей.
- Параметры модели — то, что она узнаёт в ходе обучения, например, веса в линейной регрессии.
недообучением и переобучением высокое смещение высокая дисперсия TPOT генетическое программирование
Случайный поиск с перекрёстной проверкой
- — методика выбора гиперпараметров. Мы определяем сетку, а потом из неё случайно выбираем различные комбинации, в отличие от сеточного поиска (grid search), при котором мы последовательно пробуем каждую комбинацию. Кстати, случайный поиск работает почти так же хорошо, как и сеточный, но гораздо быстрее.
- Перекрёстной проверкой называется способ оценки выбранной комбинации гиперпараметров. Вместо разделения данных на обучающий и тестовый наборы, что уменьшает количество доступных для обучения данных, мы воспользуемся k-блочной перекрёстной проверкой (K-Fold Cross Validation). Для этого мы разделим обучающие данные на k блоков, а затем прогоним итеративный процесс, в ходе которого сначала обучим модель на k-1 блоках, а затем сравним результат при обучении на k-ом блоке. Будем повторять процесс k раз, и в конце получим среднее значение ошибки для каждой итерации. Это и будет финальная оценка.
- Задаём сетку гиперпараметров.
- Случайно выбираем комбинацию гиперпараметров.
- Создаём модель с использованием этой комбинации.
- Оцениваем результат работы модели с помощью k-блочной перекрёстной проверки.
- Решаем, какие гиперпараметры дают лучший результат.
Вернёмся к гиперпараметрической настройке
- : минимизация функции потерь;
- : количество используемых слабых деревьев решений (decision trees);
- : максимальная глубина каждого дерева решений;
- : минимальное количество примеров, которые должны быть в «листовом» (leaf) узле дерева решений;
- : минимальное количество примеров, которые нужны для разделения узла дерева решений;
- : максимальное количество признаков, которые используются для разделения узлов.
закон убывания доходности применительно к машинному обучению здесь говорит о переобучении уменьшения сложности модели с помощью гиперпараметров
Технические характеристики, функциональность и звук ASUS STRIX SOAR
Аудиочип | C-Media 6632AX |
ЦАП | ESS SABRE9006A 8-канальный |
АЦП | Cirrus Logic CS5361 |
Частотный диапазон | 10 – 48 000 Гц |
Усилитель для наушников | Texas Instruments TPA6120 |
Сопротивление наушников | До 600 Ом |
Аналоговые входы | 1 х 3,5-мм (комбинированный линейный и микрофонный) |
Аналоговые выходы | 5 х 3,5-мм (наушники, фронтальный, боковые, центр и сабвуфер, тыловой) |
Цифровые входы | 1 х S/PDIF (комбинированный с боковыми) |
Дополнительное питание | 6pin |
Эксклюзивные особенности | 7.1-канальный звук, Sonic Studio, Sonic Radar Pro |
ASUS STRIX SOAR
оснащена отличным звуковым процессоромC-Media 6632AX . Линейный выход использует один из лучших высококачественных цифро-аналогового преобразователя (ЦАП)ESS SABRE9006A , который обеспечивает сигнал/шум – 116 дБ. а аналоговый выход работает на аналого-цифровом преобразователе (АЦП)Cirrus Logic CS5361 . При этом, карта имеет встроенный усилитель для наушниковTexas Instruments TPA6120 , который обеспечивает поддержку наушников с сопротивлением до 600 Ом. Даже при условии, что технические характеристики и аудичип не являются самыми топовыми решениями на рынке, тем не менее, для бюджетного решения, их качество и показатели на высоте. Но от сухих названий и цифр перейдем к самому интересному – к качеству звучания звуковой карты. Как мы уже не раз говорили, передать информацию и достоверность о качестве звука в текстовой статье – достаточно сложно, ведь это все дело по большей части субъективное. Кому-то нравится звук, а кому-то он может быть не по душе или, к примеру, низкие частоты достаточно слабые. Но дискретное решение очень редко оказывается плохим. Как правило, отдельные звуковые карты имеют приличный, насыщенный и качественный звук, который явно превосходит интегрированный в материнские платы аудиочипы.
Качественный и насыщенный звук в ASUS STRIX SOAR
проявляется не только на дорогих акустических системах или наушниках, но и на бюджетных вариантах. И это очень достойный показатель для относительно недорогой звуковой платы. НоSTRIX SOAR прежде всего игровая звуковая карта, поэтому звук и позиционирование в играх здесь стоит на первом месте, при этом она далеко не самым худшим образом проявила себя и при прослушивании музыки, и при просмотре фильмов. Прежде всего, здесь не последнюю роль сыграло фирменное ПО. С помощью софта, о котором мы поговорим немного позднее, можно оптимизировать звук под определенные нужды пользователя. В частности, и для игр, и для фильмов, и для музыки. Но все же в играх звуковая карта проявила себя лучше всего, особенно порадовало позиционирование — предельно понятно с какой стороны доносятся шаги, выстрелы и другие звуки в играх, и ошибиться практически невозможно. Также, при наличии наушников с поддержкой «нативного » (настоящего) 7.1-канального звучания (наушники с 5 динамиками) или многоканальной акустической системы можно услышать невероятно качественный многоканальный звук. Такие решения, конечно, стоят очень дорого, но и для обычной звуковой периферии встроенная поддержка 7.1-канального звучания в звуковой карте обеспечивает отличное позиционирование и звук.
Типы тестирования
Статическое тестирование, как следует из названия, не требует запускать программу или приложение и позволяет находить самые очевидные ошибки еще на ранних этапах создания продукта. Например, частью статического тестирования является проверка параметров ПО на соответствие требованиям технического задания, вычитка кода.
Динамическое тестирование требует проверять ПО в действии. Этот вид, в свою очередь, также делится на две обширные группы:
-
Техники белого ящика (они же структурное тестирование) применяют в том случае, если специалист хорошо знает архитектуру продукта, его код, «начинку» – то есть может ориентироваться в самой программе.
-
Техники черного ящика позволяют проверять работу продукта, не зная внутреннего устройства системы. При этом тестирование проводится на основе требований, указанных в спецификации проекта или в ТЗ.
-
Техники серого ящика позволяют тестировать продукт, когда специалист частично знает его внутреннее устройство. Для выполнения тестирования «серого ящика» не нужен доступ к исходному коду.
Плюсы и минусы тестовых моделей
Плюсы MBT:
Использование тестовых моделей развивает аналитическое мышление за счет постоянного анализа (сюрприз!) тестируемой системы. Лучший способ развить этот тип мышления — применять его для решения задач, например, для создания абстрактной схемы продукта или его компонента.
Моделирование улучшает понимание системы как у того, кто модель создает, так и у команды, которая ревьюит и использует ее. Приятный бонус: спустя некоторое время благодаря модели можно научиться предугадывать поведение системы в тех или иных обстоятельствах.
Тестовую модель поддерживать легче, чем много тест-кейсов (за счет абстрактности и того, что кейсов много, а модель одна).
MBT позволяет взглянуть на систему (или ее часть) в целом и увидеть неочевидные зависимости.
Создание и поддержание тестовой модели способствует синхронизации понимания работы системы внутри команды. Это очень полезно для избегания неоднозначных ситуаций и решения спорных вопросов «на берегу» до начала разработки.
Благодаря математической подоплеке наличие модели позволяет автоматизировать нахождение оптимального пути, пути с задействованием всех состояний и т.д. Кроме того, тестовую модель можно использовать как основу для проектирования автотестов.
Несомненно, модель делает процесс адаптации новичка в проект более эффективным. «Лучше один раз увидеть, чем сто раз услышать» тут как раз работает
Кроме того, у нового члена команды могут возникнуть вопросы, которые не пришли в голову команде, или другие участники процесса разработки могут вспомнить что-то важное, презентуя модель новичку.
Тестирование на основе моделей прекрасно подходит для долгосрочных проектов, где большое число тест-кейсов затруднит понимание принципов работы системы, а простая и наглядная схема, наоборот, упростит его.
Минусы MBT:
- Если в модели есть ошибка, это может привести к фундаментальному недопониманию внутри команды. Именно поэтому важен следующий пункт.
- Желательно, чтобы в моделировании (или ревью модели) участвовала вся команда. Во-первых, это позволяет исключить недопонимания, во-вторых, активирует силу коллективного разума.
- Как и в случае с тестовой документацией, надо не лениться, поддерживать и регулярно обновлять модель. Если на это нет времени и/или недостаточно знаний, стоит поставить под сомнение целесообразность использования тестовых моделей в проекте.
- Иногда создание модели занимает больше времени, чем написание простого чек-листа. Особенно это актуально для больших и многокомпонентных систем: если модель начинают создавать после того, как внутри системы уже существует куча не до конца понятных зависимостей, это может стать довольно долгим (но, скорее всего, того стоящим!) процессом.
- Использование тестовых моделей требует определенных навыков абстрактного мышления вкупе с внимательностью к мелочам. Скорее всего, если вы успешно работаете в тестировании, у вас есть все эти навыки, но нужно быть осторожными и никогда не отключать критическое мышление даже по отношению к собственным трудам.
2.Определение набора тестовых данных
Отталкиваясь от требований к полям, используя техники тест дизайна начинаем определение набора тестовых данных:
- в зависимости от того обязательное поле или нет, определим какие поля необходимо проверить на пустое значение, так как оно может вызывать ошибку (В результирующей таблице оранжевый )
- т.к. исчерпывающее тестирование не представляется возможным из-за огромного числа всевозможных комбинаций значений, в первую необходимо определить минимальный набор данных. Это можно сделать используя такие техники, как EP и BVA. (В результирующей таблице голубой цвет)
- На форме присутствует поле, имеющее составной тип (цифры используются совместно с символами), обладает специальным форматом данных и поэтому выделение тестовых данных для него — это достаточно трудоемкая задача. В пределах данной статьи ограничимся только простой проверкой форматов и основных требований описанных в форме приема заявок.
- По завершению генерации данных используя стандартные техники, можно добавить некоторое количество значений на основании личного опыта (техника EG) — это будет использование спец. символов, очень длинных строк, разных форматов данных, регистров в строках (Upper, Lowwer, Mixed cases), отрицательные и нулевые значения, кейворды Null — NaN — Infinity и т.д. Сюда можно включить все, что вы полагаете может вывести приложение из строя (В результирующей таблице фиолетовый цвет)
Примечание:
Отметим, что количество тестовых данных после окончательной генерации будет достаточно большим, даже при использовании специальных техник тест дизайна. Поэтому ограничимся лишь несколькими значениями для каждого поля, так как цель данной статьи показать именно процесс создания тест кейсов, а не процесс получения конкретных тестовых данных.
2.1 Выбор тестовых данных для каждого отдельно взятого поля
- Поле Тип обращения. Так как все данные входят в 1 эквивалентности, то есть не изменяют сам процесс выполнения приема заявки, берем любою (1-ю) позицию в листе с ожидаемым результатом ОК. Но т.к. реализовано поле как лист, имеет также смысл рассмотреть и граничные условия (техника BVA), т.е. берем первый и последний элементы. Итого: 1-я и последняя позиции в листе. Ожидаемый результат при использовании — ОК.
- Поле Контактное лицо. Это обязательное поле размером от 1 до 25 символов (включая границы). Проверка на обязательность добавляет к тестовым данным пустое значение. Проведем анализ граничных условий (BVA), получим набор: 0, 1, 2, 24, 25 и 26 символов. Пустое значение (0 символов) уже было добавлено при анализе обязательности поля для ввода, поэтому при BVA мы не будем добавлять его еще раз. (если его добавить второй раз, произойдет дублирование тестовых данных, которое не приведет к нахождению новых дефектов, а значит повторное добавление в не имеет смысла). В связи с тем, что значения 2 и 24 символа являются, с нашей точки зрения, некритичными, их можно не добавлять. В итоге получаем, что минимальный набор данных для тестирования поля — это строки 1 и 25 — ОК, и 0 (пустое значение), 26 символов — NOK.
-
поле Контактный телефон состоит из нескольких частей: код страны, код оператора, номер телефон (который может быть составной и разделенный дефисами). Для определения правильного набора тестовых данных необходимо рассматривать каждую составную часть по-отдельности. Применяя BVA и EP, получим:
-
для номеров с плюсом
По BVA получим номера с 10, 11, 12 и 14, 15, 16 цифрами, где 10 и 16 — NOK, а 11, 12, 14, 15 — OK
Рассматривая полученные данные с позиции EP выделим, что 11, 12, 14, 15 входят в один класс эквивалентности. Поэтому при тестировании мы можем использовать любое из них, но так как 11 и 15 — это границы интервала, то на наш взгляд их пропускать нельзя. Следовательно мы можем уменьшить набор значений до двух, исключив 12 и 14, а оставив 11 и 15 для проверки граничных условий.
Итого имеем:
11 и 15 цифр — OK, (+12345678901, +987654321054321)
10 и 16 цифр — NOK; (+1234567890, +9876543210654321) -
для номеров без плюса:
По BVA получим номера с 4, 5, 6 и 9, 10, 11 цифрами.
Действуя аналогично примеру для номеров телефонов с плюсом, исключим значения 6 и 9, оставив 5 и 10.
Итого имеем:
5 и 10 цифр — OK, (54321, 0987654321)
4 и 11 цифр — NOK; (4321, 98765432101)
-
для номеров с плюсом
- поле Сообщение. подбор данных проводим по аналогии с полем Контактное лицо. На выходе получаем значения: строки 1 и 1024 — ОК, и 1025 символов — NOK.
Результирующая таблица данных, для использования при последующем составлении тест кейсов
Тестируем регрессию на Scrum-проекте: о чем важно помнить
Для эффективного проведения регрессионного тестирования на гибких проектах важно приступать к созданию тестовой документации еще в самом начале разработки и в дальнейшем непрерывно обновлять ее в зависимости от входящих требований. Что еще нужно учитывать? Предлагаем рассмотреть 5 шагов, от которых напрямую зависит результативность регрессионного тестирования
Что еще нужно учитывать? Предлагаем рассмотреть 5 шагов, от которых напрямую зависит результативность регрессионного тестирования.
1. Подготовить план тестирования
Этот этап включает в себя подбор необходимых тест-кейсов, их дальнейшее улучшение и доработку, оценку времени создания и выполнения регрессионных тестов, валидации дефектов и разработки финального отчета
Важно также определить тест-кейсы, которые в дальнейшем можно будет автоматизировать. Кроме того, на начальном этапе работ при взаимодействии с разработчиками проводится анализ того, какие модули могут быть затронуты изменениями, чтобы уделить этим областям больше внимания при тестировании
2. Создать доску регрессии
Все задачи, над которыми работают QA-инженеры Scrum-команды, располагаются на доске в порядке сверху вниз по приоритетности в зависимости от возможных рисков, важности для клиента и ряда других факторов. Переставляя элементы на доске, команда всегда будет понимать актуальность задач и сможет планировать свое время так, чтобы укладываться в сроки
3. Анализировать отчеты о дефектах
Так QA-команда сможет получить подробную информацию о проведении регрессионных тестов: причины их невыполнения, шаги тест-кейса, на которых произошла ошибка, снимки экрана. Все это поможет быстрее выявить проблему и устранить ее.
4. Добавить исследовательское тестирование
С его помощью инженеры по тестированию по-новому взглянут на проект, расширят тестовое покрытие и обнаружат дефекты, которые могли бы оказать сильное влияние на конечного пользователя разрабатываемого продукта.
5. Настроить модель коммуникации на проекте
Например, непрерывное взаимодействие специалистов по тестированию с владельцами продуктов способствует своевременному отслеживанию изменений в требованиях. В то время как коммуникация QA-инженеров с разработчиками ― получению информации о внесенных в ходе итерации изменениях.
Инструменты тестировщика
Для тестирования игр применяются в основном те же методы, что и для всего программного обеспечения. Изучив требования на позицию начинающего тестировщика на hh.ru, могу сказать следующее: если на старте вы претендуете на заработную плату от 40000 рублей, помимо игрового опыта, вам необходимы следующие навыки и знания.
- Ключевые представления о теории тестирования: виды тестирования, тест-кейсы, тест-планы, баг-репорты, техники определения необходимого объема тестов.
- Основные понятия о структуре баз данных и умение делать простые запросы в SQL.
- Знание Windows, Windows Server на уровне опытного пользователя с начальными навыками администрирования
- Владение Git на базовом уровне.
Здесь приведен базовый набор, «скелет» навыков, которые потребуются практически на любом проекте. Но нужно иметь в виду, что каждая компания предъявляет свои специфические требования к специалистам по тестированию в зависимости от сферы деятельности, конкретных задач, стека используемых технологий. Поэтому вы либо прокачиваете свои скиллы под конкретную вакансию или компанию, в которой мечтаете работать, либо смело идете на собеседование без полного набора необходимых требований, но с блеском в глазах и непреодолимым желанием много учиться и получать опыт.
Думаю, плюсом послужило мое математическое образование. База, на мой взгляд, значит очень много. Несмотря на то, что курсы обещают сделать специалиста по тестированию даже из филолога, с IT-образованием вам будет гораздо проще разобраться в предмете. Да и компании охотнее возьмут студента технических специальностей, чем гуманитария с солидным стажем.
Успех тестировщика при приеме на работу во многом зависит от его softskills – личных качеств, которые не измеряются количеством и которым не учат в университете и на курсах:
внимательность к мелочам и усидчивость;
быстрое обучение и адаптация к новым условиям;
готовность повторять одни и те же действия, не теряя концентрации, в течение длительного времени;
способность грамотно приоритезировать задачи, откинуть неважное, делегировать то, что можно;
творческое мышление и умение взглянуть на предмет с разных сторон. На собеседовании вас могут попросить протестировать обычную табуретку, чтобы оценить ход ваших мыслей и нестандартность идей;
коммуникабельность, умение находить общий язык с разными людьми и работать в команде.
Выберем параметры для проверки
Какие параметры файла необходимо проверить исходя из требований к тестированию новой функциональности:
Форматы: jpeg, png, ico, tiff, jpg, pdf, pnm, bmp, gif, raw, heic
Разрешение фотографии (количество точек): 320*240, 320*480, 640×480, 800×600, 1024×768, 1280×720, 1600×900, 1920*1080
Соотношение сторон: 4:3, 5:3, 2:3, 5:4, 16:9, 8:5, 256:135
Размер файла: 1 b, 1kb, 1mb, 10mb, 100 mb,
Цветность фотографии: black and white, multi, specific, transparent ( казалось бы причем здесь цвета )
Стандарты размера фотографии ( при печати, пожалуй очень спорный пункт но оставим для массовки): 9×13, 10×15, 15×20, 15×30, 20×30, 30×40
По большому счету мы сейчас использовали аналитический подход, изучая нашу документацию с требованиями и выделили “эквивалентные классы” наших параметров, ошибки по которым будут отвечать за одну и ту же область. И наш метод не такой явный: как градация на цифры, буквы или только по формату файла ( например загруженный .doc будет открываться в гугл доках приложением — документы, а excel в таблицах). Мы выделили далеко не все, но многие вещи. Возьмем за основу, что все остальное будет эквивалентный класс негативных тестов и будет приводить к одной и той же ошибке, иначе мы в нашем с вами сферическом тесте закопаемся. А еще у нас был случай, когда вот так вот закапывались в тестах…
Следующим шагом, стоит остановится и подумать, а какие вещи/параметры я еще упустил. Поискать возможные варианты сбоев для не стандартных вещей, обдумать что или где могло быть пропущено в спешке. Список выше не должен составляться за один подход. Это не работает по принципу сел и написал. Лучше накидывать постоянно корректируя и доводя до готовности. Почитайте еще раз требования, обсудите с коллегами, пните разработчика и БА.
Диаграмма переходов состояний
Техника
Состояние (State) — Условие в котором система ожидает одно или несколько событий.Состояние помнит что было получено на вход и определяет ответную реакцию, которая должна произойти. Это событие может быть приводить в новое состояние и/или инициировать новое действие. Состояние обычно отражает значение некоторой переменной в системе. Изображается в форме круга.
Переход (Transition) — Представляет переход из текущего состояния в новое, в результате выполнения какого-то действия. Изображается в виде стрелки.
Событие (Event) — Событие, ставшее причиной изменения состояния. Обычно событие поступает в систему из внешнего мира посредством некоторого интерфейса. Иногда это событие инициируется внутри самой системы например такие как срабатывание таймера, снижение ниже какого-то уровня. Считается, что событие происходит моментально. Событие может быть как независимым, так и связанным. Когда событие случается, система может изменить состояние или остаться в прежнем состоянии и/или инициировать действие. События могут иметь, связанные с ними параметры (номер карты, сумма на счете). Изображается как подпись к стрелке перехода.
Действие (Action) — Операция, инициированная в результате смены состояния. Зачастую это некоторый ответ системы. Помните, что действие происходит при переходе между состояниями. Состояния сами по себе статичны. Указывается через слеш в подписи к стрелке перехода после события.
Диаграмма перехода состояний представляет собой одну специфическую сущность (например, процесс резервирования). Частая ошибка — попытка смешивать разные сущности в одной диаграмме (например Резервирование и Пассажира с событиями и действиями, связанными с каждым из них).
Может использоваться, когда системе нужно знать предысторию или правильный порядок выполнения операций.
На основании Диаграммы перехода состояний составляется Таблица перехода состояний. Таблица содержит 4 колонки: текущее состояние, событие, действие, следующее состояние.
Преимущество Таблицы перехода состояний в том, что это перечень всех возможных комбинаций переходов из состояния в состояние, в том числе и невалидных. При анализе такой таблицы могут быть замечены пробелы в требованиях. Использование таблицы перехода состояний может помочь отследить недопустимые переходы между состояниями.
Может быть выбран один из 4 вариантов создания тест-кейсов:
- Создать наборы тест-кейсов так, чтобы все состояния были пройдены хотя бы по одному разу. В одном тест-кейсе может быть описан переход через несколько состояний. Это довольно слабый уровень тестового покрытия.
- Создать наборы тест-кейсов так, чтобы все события были инициированы хотя бы по одному разу. Тест-кейсы, которые покрывают все события в то же время покрывают и все состояния. Снова слабый уровень тестового покрытия.
- Создать наборы тест-кейсов так, чтобы все пути были пройдены хотя бы по одному разу. Такой способ хорош с точки зрения тестового покрытия, однако практически не осуществим. Если диаграмма имеет циклы, то количество возможных путей может оказаться бесконечным.
- Создать наборы тест-кейсов так, чтобы все переходы были выполнены хотя бы по одному разу. Этот способ обеспечивает хороший уровень тестового покрытия, поэтому рекомендуется использовать именно его.
Рекомендуемая стратегия создания тест-кейсов состоит в том, чтобы хотя бы по разу протестировать все переходы между состояниями. В высокорисковых системах, где требуется более надежное тестовое покрытие, возможно создавать тест-кейсы на каждый путь (цепочку переходов) между состояниями.
Функциональные тесты
Пример функционального теста
- для мока браузера возьмем jsdom и testing-library;
- для мока сетевых запросов — axios-mock-adapter;
- как тестовый фреймворк будем использовать Jest.
Настраиваем мок
Рендерим компонент
- Настраиваем окружение (API в нашем случае)
- Рендерим компонент
- Делаем какие-то действия в DOM
- Ждём ререндера
- Проверяем что окружение было вызвано так, как мы ожидали (в нашем случае проверяем вызов API).
- Проверяем, что в DOM-дереве находится контент, который мы ожидали увидеть.
Плюсы и минусы
Это полноценный тест на UIС этим тестом можно рефакторить почти всёМы написали тесты без UIНемного комичный, но правдивый факт.Сценарий простейший, а в тесте просто так не разобратьсяМы покрыли только позитивный сценарийПодход плохо масштабируется
Отрефакторенные тесты
низкоуровнево
- Ожидаем, что будет сделан поиск через API, который вернет определенные данные.
- Рендерим компонент.
- Совершаем поиск по строке «ТЕСТ».
- Ждем ререндера.
- Проверяем, что поиск был вызван с нужными параметрами, а на странице есть результаты поиска.
Теперь тест читается как сценарий использования (документация)Тесты теперь высокоуровневыеНовые тесты писать проще – меньше кодаЕсли мы рефакторим верстку, достаточно поправить только pageObjectВадима Макеевасценариине имплементацию.pageObjectпаттерн автоматического тестирования
mochachaicypress
Итого: какие задачи бизнеса помогает решить продуманный дизайн
Хороший дизайн требует понимания целевой аудитории, большого количества исследований, тестирований, компетенций у команды и — вложений. При этом на старте разработки сложно спрогнозировать, сколько денег принесет или сэкономит то или иное дизайнерское UI/UX-решение.
Однако дело не в рентабельности инвестиций, а в стратегической ценности:
- Устранить препятствия на пути клиентов и повысить конверсию;
- Повысить эффективность рекламы и SEO за счет соответствия требованиям поисковиков к удобству сайта;
- Создать добавочную ценность в восприятии клиентов;
- Увеличить лояльность к компании, возвращаемость клиентов и вероятность рекомендации;
- И в результате — увеличить продажи и прибыль.