Как сделать тест онлайн в формах google (новая версия)

Работа с сервисом: интерфейс и основные возможности

Перейдите на страницу Google Optimize (можете сделать это по прямой ссылке или найти сервис в Google Marketing Platform).

Кликните «Start for free».

После клика вы будете перенаправлены на русскоязычную версию сервиса (Google Оптимизация).

Обратите внимание, для работы с сервисом вам нужен аккаунт Google (если у вас его нет — создайте), а также аккаунт Google Аналитики

Настраиваем контейнер

После создания аккаунта в Google Optimize необходимо добавить первый контейнер. В нем будут храниться данные о ресурсах, с которыми проводятся эксперименты, и сами эксперименты.

При создании контейнера ему присваивается название по умолчанию — «Мой контейнер». Это название можно оставить или изменить. Общая рекомендация — указать в названии адрес сайта или название проекта, с которым работаете. Это поможет проще ориентироваться в аккаунте, если контейнеров будет много.

Чтобы переименовать контейнер, откройте его и кликните по кнопке «Настройки».

Затем кликните по знаку карандаша в блоке «Сведения о контейнере».

Укажите название:

Создание тестов в Google Форме

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

  1. Откройте сайт по представленной выше ссылке и авторизуйтесь в единой учетной записи Google, предоставив приложению соответствующие права. После этого на верхней панели кликните по блоку «Пустой файл» или по иконке «+» в нижнем правом углу.

Перейдите на вкладку «Тесты» и переведите состояние ползунка в режиме включения.

По возвращении на начальную страницу можете приступать к созданию вопросов и вариантов ответа. Добавлять новые блоки можно с помощью кнопки «+» на боковой панели.

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

Нажмите кнопку «Отправить» на верхней панели управления.

Все полученные ответы можно просмотреть на вкладке с одноименным названием.

Итоговый результат можно проверить самостоятельно, перейдя по соответствующей ссылке.

Кроме веб-сервиса «Google Формы», о котором нами было рассказано по ходу статьи, также существует специальное приложение для мобильных устройств. Однако оно не поддерживает русский язык и не предоставляет многих дополнительных возможностей, но все же достойно упоминания.

The configuration card

Objectives tab

Configure your experiment objectives on the Objectives tab:

  1. Select a Google Analytics view.
  2. Select a Primary Objective.
  3. (Optional) Click + Add objective to add an objective. Learn more.
  4. Add a description and hypothesis.
  5. Click Save.

Who to target

The Who section of the Targeting tab is used to select the visitors to whom you wish to target your variant. Enter a numeric value (in tenths of a percent) or use the slider to specify the percentage of your visitors to include in your experiment.

When to target

The When section of the Targeting tab determines where the experiment is shown. When is evaluated each time a user visits the experiment page. Use the rules to set where your experiment is seen. To create a targeting rule, click AND, then select a targeting rule type.

You must create either a URL or path targeting rule to start your experiment. The quickest way to get started is to create a URL matches rule with the same Editor page URL that you used when creating your experiment.

Targeting rules

Optimize includes the following targeting rule types, which you can read more about in the following articles:

  • URL targeting
  • Google Analytics Audiences targeting
  • Behavior targeting
  • Geo targeting
  • Technology targeting
  • JavaScript variable targeting
  • First-party cookie targeting
  • Custom JavaScript targeting
  • Query parameter targeting
  • Data layer variable targeting

Learn more about targeting.

Create a hypothesis

Before creating your first experience you need to identify a problem, then create a hypothesis (backed up by data, of course) about what you can change to improve it.

What’s the problem that you want to solve? Have conversions dropped off? Have traffic patterns changed? Have your demographics shifted? A close examination of trends in your Google Analytics behavior reports is a great place to start.

Once you’ve identified a problem, assemble a team within your organization and solicit their opinion about the cause of the problem. Use feedback from this cross-functional team to form your hypothesis, an educated guess that you’ll validate or invalidate with experimentation.

Запуск первого теста

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

Листинг 3. Запуск теста функции вычисления квадратного корня
#include "gtest/gtest.h"

TEST(SquareRootTest, PositiveNos) { 
    EXPECT_EQ (18.0, square-root (324.0));
    EXPECT_EQ (25.4, square-root (645.16));
    EXPECT_EQ (50.3321, square-root (2533.310224));
}

TEST (SquareRootTest, ZeroAndNegativeNos) { 
    ASSERT_EQ (0.0, square-root (0.0));
    ASSERT_EQ (-1, square-root (-22.0));
}

int main(int argc, char **argv) {
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

Метод работает в соответствии со своим названием – он инициализирует платформу, и его необходимо вызвать перед функцией . Функцию необходимо вызвать всего один раз, так как множественные вызовы этой функции не поддерживаются, поскольку конфликтуют с некоторыми расширенными возможностями платформы

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

В показан результат выполнения теста.

Листинг 4. Вывод теста функции вычисления квадратного корня
Running main() from user_main.cpp
 Running 2 tests from 1 test case.
 Global test environment set-up.
 2 tests from SquareRootTest
 SquareRootTest.PositiveNos
..\user_sqrt.cpp(6862): error: Value of: sqrt (2533.310224)
  Actual: 50.332
Expected: 50.3321
 SquareRootTest.PositiveNos (9 ms)
 SquareRootTest.ZeroAndNegativeNos
 SquareRootTest.ZeroAndNegativeNos (0 ms)
 2 tests from SquareRootTest (0 ms total)

 Global test environment tear-down
 2 tests from 1 test case ran. (10 ms total)
 1 test.
 1 test, listed below:
 SquareRootTest.PositiveNos

 1 FAILED TEST

Типы экспериментов

Для приложения можно запустить до пяти экспериментов с графическими объектами по умолчанию или локализованными версиями.

Эксперименты с графическими объектами по умолчанию 

Эксперименты этого типа позволяют тестировать графические объекты на языке по умолчанию. Вы можете добавить несколько вариантов значка приложения, баннера, скриншотов и промороликов.

  • Если страница приложения в Google Play доступна только на одном языке, эксперимент с графическими объектами по умолчанию увидят все пользователи.
  • Если вы добавили графические объекты, локализованные на определенный язык, то пользователи, просматривающие страницу на этом языке, не увидят эксперимент с графическими объектами по умолчанию. Предположим, что язык приложения по умолчанию – русский, но вы перевели баннер на французский. В этом случае пользователи, которые просматривают страницу на французском языке, будут исключены из эксперимента, даже если вы тестируете только значок приложения.

Эксперименты с локализованными версиями (для текста и изображений)

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

Эксперименты для одного языка увидят только те пользователи, которые открывают страницу приложения на этом языке.

Правила составления тестов

  • Тестовое задание должно быть сформулировано четко, понятно и должно толковаться однозначно. Если вопрос сформулирован таким образом, что не все ученики могут его понять однозначно, формулировку нужно изменить. Пример: Фирма, предоставляющая сетевые услуги – это… Ученик задаст вопрос: что такое «сетевые услуги?  Услуги доступа в интернет? Фирма сетевого маркетинга типа Avon или что-то еще?
  • Тестовое задание должно быть сформулировано кратко, желательно без использования сложноподчиненных предложений, лишних причастных и деепричастных оборотов, вводных слов. Лучше разбить задание на несколько небольших предложений. Если в задании много «который», «где», «чем», много запятых, его будет трудно понять, а значит, и решить. Не бойтесь разбивать предложения на части.
  • Задание должно быть сформулировано без повторов, двойного отрицания (не – не), а лучше и вовсе избегать отрицания. Пример: Программа Paint не является программой для работы с электронными таблицами. Варианты ответов: Да-Нет. Ученику будет трудно ответить на этот вопрос, т.к. и в задании, и в ответе есть отрицание.
  • Не стоит писать в вопросе слова типа: «сформулируйте», «укажите», «сообщите», если это и так предполагается самим вопросом. Например: Напишите, как звали первооткрывателя Америки? Слово «напишите» лишнее.
  • Проверяйте и формулировки заданий, и формулировки ответов, чтобы в них не было подсказок для ученика. Следите, чтобы в одном задании не было подсказки по ответу на другое задание.
  • В заданиях не должно быть явно неподходящих ответов, увидев которые ученик сразу вычислит правильный ответ. Все ответы должны быть примерно одинаковыми и по содержанию, и по объему.
  • Повторяющиеся фразы в каждом варианте ответа нужно включить в текст вопроса.

Шаг 2. Задайте настройки

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

Вот как это сделать:

  1. Выберите страницу приложения, укажите данные для таргетинга, атрибуты и варианты, следуя инструкциям на экране.
  2. Чтобы запустить тестирование, нажмите Начать эксперимент в верхней части страницы. Вы также можете сохранить эксперимент и провести его позже.

Описания полей, примеры и рекомендации

Поле Описание Примеры и рекомендации
Название
  • «Светящийся значок»
  • «Значок логотипа»
  • «Краткое описание с новым слоганом»
Название страницы приложения
  • Тестируемая специальная страница приложения будет отображаться с названием, которое у нее было на момент запуска эксперимента. Если обновить название позже, в эксперименте это не отобразится.
  • Чтобы избежать путаницы при проведении экспериментов, рекомендуем удалять неиспользуемые специальные страницы приложения и создавать новые при надобности.
Аудитория
  • Число пользователей (в процентах), которые видят вариант эксперимента.
  • Выбранное число пользователей будет поровну распределено между вариантами эксперимента.
  • Если вы установите значение 30%, остальные 70% посетителей страницы будут видеть ее текущую версию.
  • Если вы выбрали 30% аудитории и два варианта эксперимента, на каждый из них придется по 15% пользователей.
  • Во время эксперимента для каждого пользователя будет доступна только одна версия страницы.
Атрибуты
  • Чтобы эксперимент прошел максимально успешно, тестируйте не больше одного атрибута за раз.
  • Полное и краткое описания можно тестировать только во время эксперимента с локализованными версиями.
  • Если вы тестируете графические объекты, убедитесь, что их размер и формат соответствуют этим требованиям.
Варианты

Выбираем тип проекта (эксперимента)

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

  • протестировать цвет или текст CTA-кнопок;
  • сравнить эффективность посадочной страницы с видео на первом экране и без него;
  • проанализировать эффективность разных форм обратной связи и т. д.

В сервисе доступно 4 вида проектов. Расскажем о каждом из них.

Эксперимент А/Б

Классический А/Б тест. С помощью этой функции вы можете создать несколько вариантов страницы, с разным отображением одного элемента. При этом вариантов не обязательно должно быть два — их можно создавать сколько угодно.

Google будет распределять трафик между вариантами страницы в зависимости от настроек:

  • Равномерно — каждый вариант получит равную долю трафика. Например, если вы создали 5 вариантов страницы, каждый из них получит по 20% от общего трафика.
  • Заданную вручную долю трафика. В настройках вы можете указать, на какой из вариантов направить больше трафика.

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

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

Самый простой пример А/Б теста — тестирование разного цвета кнопок. Например, изначально на сайте стоит CTA-кнопка синего цвета, но мы хотим проверить гипотезу: изменится ли конверсия, если кнопка будет более яркой (скажем, красной). Для этого создаем вариант исходной страницы с измененным цветом кнопки.

После запуска проекта Google Optimize будет рандомизированно распределять трафик между вариантами страницы и сравнивать эффективность по заданному параметру (например, по уровню конверсии).

Многовариантный эксперимент

В отличие от А/Б теста он позволяет протестировать изменение сразу нескольких элементов.

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

Система создаст все возможные комбинации страниц, в зависимости от того, сколько элементов и какое количество вариантов мы хотим протестировать. В нашем примере будет создано 6 комбинаций (2 заголовка * 3 картинки = 6).

Если вы хотите посмотреть, изменение какого элемента на странице даст больший прирост конверсий, используйте этот вариант экспериментов.

Эксперимент с переадресацией

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

Пример. Допустим, вы делаете посадочную страницу для продажи продукта. Хотите протестировать две версии лендинга:

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

Чтобы узнать, что сработает лучше, создайте в Google Optimize эксперимент с переадресацией и укажите две страницы с разным URL:

  • в качестве исходной укажите лендинг, где все расписано максимально подробно;
  • в качестве тестируемой — лаконичный.

После завершения тестов вы получите данные и узнаете, какой из вариантов посадочной страницы сработал лучше.

Персонализация

Позволяет вносить изменения на сайте для персонализированного показа определенной аудитории. Персонализация нужна после того, как вы уже провели эксперимент (например, А/Б тест) и определили выигрышный вариант изменений. На основе этого варианта Google Optimize создаст персонализацию. Ее можно настроить для показа любому сегменту аудитории.

Также «Персонализация» пригодится в случаях, когда нужно запустить краткосрочную акцию для определенного сегмента аудитории. Например, с 1 по 31 июля вы хотите предложить бесплатную доставку клиентам из Москвы. Для этого создаете проект с типом эксперимента «Персонализация». Вносите изменения на сайт с помощью браузерного расширения Google Optimize — добавляете текст с информацией о бесплатной доставке. В настройках таргетинга указываете целевое местоположение — Москва.

После запуска эксперимента жители Москвы будут видеть ваше предложение, а остальным пользователям будет показана обычная версия страницы.

Регулярные выражения

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

Примеры регулярных выражений

Таблица содержит примеры некоторых регулярных выражений, поддерживаемых Google Документами. Вам доступны не только они, но и многие другие.

Выражение Описание Пример Результаты поиска Не отобразится в результатах
. На месте точки может быть любой символ. с. сом, стол, осока том, порт
* Символ перед звездочкой может присутствовать в слове, отсутствовать или повторяться несколько раз. со* сон, сн, сооон сОн, соль
+ Символ перед знаком плюса повторяется один или несколько раз подряд. со+н сон, сооон сн, сОн, соль
? Символ перед знаком вопроса может присутствовать или не присутствовать в слове. со?н сн, сон сОн, соль
^ Знак вставки в начале регулярного выражения означает, что результат начинается с указанных в скобках символов или их сочетания. ^он сон, тон не сон, и тон
$ Знак доллара ставится в конец регулярного выражения. Это означает, что результат заканчивается одним или несколькими символами, расположенными перед $. он$ сон, тон, и тон сонм, тонна
{A,B} Часть выражения, заключенная в скобки, повторяется от А до В раз (на месте А и В нужно указать числа). с(о{1,2})н сон, соон сн, сооон, сОн
, , Только один символов, указанных в квадратных скобках, может содержаться в результате поиска. В скобки можно поместить любое выражение, в том числе одно из описанных выше в таблице. Например, запрос может выглядеть так: сон, сан сн, сОн, сооон
Поиск символа в заданном диапазоне. Обычно используются диапазоны а-я, А-Я и 0-9. Их можно объединять между собой () или комбинировать с другими выражениями из данной таблицы (. сан, син, сен, сон сн, сОн, сын
Здесь знак вставки означает поиск символа, который не входит в указанный диапазон. сн сон, сОн, сын, с$н сн, сан, сен
\s Все символы пробелов. с\sн с н, сн сн, сон, стон

Примечание. Хотите найти в таблице символ, который входит в регулярные выражения (например, ^ или $)? Поставьте в начале запроса обратную косую черту (\). Например, чтобы найти все упоминания символа $, введите \$.

Вот несколько примеров использования регулярных выражений для поиска по таблице:

Поиск ячеек, содержащих суммы, указанные в долларах

Введите в строку поиска запрос ^\$(+)?+

Это значит, что вы ищете сумму в долларах, которая начинается с любой цифры от 0 до 9 (или с запятой). Цифра может повторяться или не повторяться. Затем следует любая цифра от 0 до 9, повторяющаяся один или более раз. В результатах может отобразиться любая из следующих сумм: $4,666, $17,86, $7,76, $0,54, $900 001,00, $523 877 231,56.

Поиск почтовых индексов США

Введите в строку поиска следующую команду: {5}(-{4})?

Так вы найдете почтовые индексы США, состоящие из пяти цифр, дефиса (опционально) и четырехзначного цифрового кода.

Поиск имен, начинающихся со строчной буквы

Введите в строку поиска следующую команду: ^.*

Так вы найдете текст, начинающийся со строчной буквы, за которой следуют другие символы. В результатах поиска отобразятся ячейки, содержащие, например, такие слова: катя, лена, дМИТРИЙ, люБа.

Sunday, April 2, 2017

Тестирование с помощью Google-форм. Расширение «штатных» возможностей. Часть 1

При построении образовательного информационного пространства с помощью Google Classroom для контроля знаний в форме тестирования, как правило, используются Google-формы. Но формы изначально разрабатывались как инструмент для сбора и обработки информации сетевых опросов и лишь затем стали приспосабливаться под цели тестирования. Поэтому сейчас они по своим функциональным возможностям ещё значительно уступают «аутентичным» тестирующим комплексам таким, например, как MyTestX (разработчик Башлаков А. С.), NetTest (разработчик Поляков К. Ю.), тестирующий блок LMS Moodle. Из наиболее существенных отличий можно отметить следующие.

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

2

Важное свойство тестирующего комплекса, ещё не реализованное в Google-формах в полном объёме, — вариативность отображения результатов. В Moodle, например, можно по-разному отображать результаты во время прохождения теста, после завершения попытки или после того, как тест закрыт

При этом для каждой ситуации выбираются свои опции из списка:

Возможность получить немедленный отклик на введённый ответ играет существенную роль в тренировочном тесте, когда ученик может «по горячим следам» проанализировать ошибки и исправить их. В обновлённых в 2016 году Google-формах появилась возможность немедленной проверки результатов для трёх типов вопросов — выбор одного варианта из многих, множественный выбор и выбор из списка. К сожалению, другие важные и часто используемые типы вопросов в этот перечень не попали. О том, как воспользоваться возможностью автоматической проверки ответов без подключения дополнения Flubaroo описано здесь >> ссылка на публикацию

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

Дополнение позволяет задать время, в которое форма закроется и результаты уже не будут приниматься. FormLimiter не позволяет задать время начала тестирования – момент открытия формы. Эта проблема тоже может быть решена, но более сложным способом – подключением скрипта (https://www.labnol.org/internet/schedule-google-forms/20707/). Для подключения дополнения нужно выбрать в меню «Дополнительно», обозначенное вертикально расположенными точками, пункт «Дополнения» и в поисковом окне ввести FormLimiter

Но основной нерешённой проблемой «штатной» Google-формы остаётся формирование теста на основе банка заданий. Это ограничения может быть преодолено, хотя и не в полном объёме, различными способами, например, с помощью интеграции Google-документов разного формата, применения языка программирования Google Apps Script или использования малоизвестных встроенных функций электронной таблицы. Одним из решений является подключение скрипта «Баба ЕГЭ» (Б. Ярмахов, О. Тузова), который позволяет формировать в Google-таблице структурированный банк заданий с картинками (есть ограничения по типу вопросов), создавать тест в виде Google-формы со случайными вопросами из банка и выполнять «стандартную» проверку с помощью надстройки Flubaroo. Как работать со скриптом подробно описано здесь >> ссылка на сайт

Другое интересное и необычное решение предложено Alice Keeler в публикации Create a Quiz from a Question Bank (англ). Этот подход опирается на использование мало известных функций, которые встроены в электронные таблицы. В следующем посте в вольном пересказе и с небольшими изменениями и дополнениями по отношению к оригиналу будет представлена пошаговая инструкция для реализации метода Alice Keeler.

Коды и статусы версий для тестирования

Требования к номерам версий

Пользователи получают последнюю версию приложения, для которой справедливы оба условия: 

  • версия совместима с устройством пользователя;
  • у пользователя есть доступ к этой версии.

У всех пользователей есть доступ к рабочей версии. Если номер опубликованной рабочей версии больше, чем у доступной версии для тестирования, пользователи получат APK-файл рабочей версии.

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

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

  • Пользователь должен быть в указан в настройках версии.
  • Пользователь должен зарегистрироваться в соответствующей программе тестирования.

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

Запасные версии приложения

При запуске новой версии приложения вы можете увидеть сообщения о том, что тестировщики определенной версии получили APK-файл или набор App Bundle, предназначенный для другой версии – резервной.  

Статусы и условия резервных версий

  • Shadowed (Замещено). Один APK-файл заменяет другой. Это происходит, когда он частично или полностью соответствует конфигурации устройства и его номер версии выше.
  • Promoted (Улучшено). Все APK-файлы для определенной группы пользователей заменены более стабильными версиями. Например, вместо APK-файла для бета-тестирования пользователь скачивает APK-файл рабочей версии. Такая ситуация возникает, если вы выпускаете сначала тестовую версию приложения, а затем более стабильную.
  • Superseded (Заменено). Все APK-файлы для определенной группы пользователей полностью заменены более поздними версиями приложения. Пользователи не могут скачать никакой из этих файлов и получают запасные версии. Такое происходит, если вы перестаете обновлять версии приложения для определенных групп пользователей.
  • Partially shadowed (Частично замещено). Хотя бы один основной APK-файл замещен запасным APK-файлом с более высокой версией. В таком случае некоторые бета-тестировщики получат предназначенный им APK-файл, а другие могут получить рабочую версию приложения. Обычно это происходит из-за некорректной нумерации версий.

Дополнительные опции Google C++ Testing Framework

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

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

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

Не все тесты бывает необходимо запускать каждый раз, особенно если вы вносите изменения в код только определенных модулей. Для этого система тестирования от Google предоставляет в ваше распоряжение опцию . Маска представляет собой набор регулярных выражений, разделенных двоеточиями (:). Например, опция запускает все тесты, а опция запускает только тесты группы . Если вы хотите запустить тесты группы только для положительных значений, используйте опцию

Обратите внимание на то, что маска включает выполнение всех тестов группы , а маска исключает выполнение тестов, имена которых начинаются с Zero

В приведен пример запуска группы тестов с использованием опций , и .

Листинг 5. Запуск тестов с опциями , и
 ./test_executable --gtest_output="xml:report.xml" --gtest_repeat=2 --
gtest_filter=SquareRootTest.*-SquareRootTest.Zero*

Repeating all tests (iteration 1) . . .

Note: Google Test filter = SquareRootTest.*-SquareRootTest.Z*
 Running 1 test from 1 test case.
 Global test environment set-up.
 1 test from SquareRootTest
 SquareRootTest.PositiveNos
..\user_sqrt.cpp (6854): error: Value of: sqrt (2533.310224)
  Actual: 50.332
Expected: 50.3321
 SquareRootTest.PositiveNos (2 ms)
 1 test from SquareRootTest (2 ms total)

 Global test environment tear-down
 1 test from 1 test case ran. (20 ms total)
 0 tests.
 1 test, listed below:
 SquareRootTest.PositiveNos
 1 FAILED TEST

Repeating all tests (iteration 2) . . .

Note: Google Test filter = SquareRootTest.*-SquareRootTest.Z*
 Running 1 test from 1 test case.
 Global test environment set-up.
 1 test from SquareRootTest
 SquareRootTest.PositiveNos
..\user_sqrt.cpp (6854): error: Value of: sqrt (2533.310224)
  Actual: 50.332
Expected: 50.3321
 SquareRootTest.PositiveNos (2 ms)
 1 test from SquareRootTest (2 ms total)

 Global test environment tear-down
 1 test from 1 test case ran. (20 ms total)
 0 tests.
 1 test, listed below:
 SquareRootTest.PositiveNos
 1 FAILED TEST

Для чего нужна Google C++ Testing Framework?

Существует множество причин использовать эту платформу. В этом разделе будут рассмотрены некоторые из них.

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

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

Запустить тесты достаточно просто. Просто вызовите встроенный макрос вместо того, чтобы отдельно создавать для выполнения теста новый или производный выполняемый класс. Это существенное отличие от таких платформ, как, например, CppUnit.

Вы можете легко создать отчет в формате XML (Extensible Markup Language) с помощью опции . Для вывода XML-отчета в таких системах, как CppUnit и CppTest, вам необходимо написать существенно больший объем кода.

Как группировать задания тестов

Существует три подхода к группировке тестовых заданий:

  • все задания выводятся случайным образом — для хорошо использовать программы тестирования или онлайн-сервисы тестирования;
  • задания выводятся в порядке усложнения — сначала простые, потом сложные. Это позволит ученикам быстро продвинутся вперед, а не «сидеть» со сложным заданием в начале тестирования, потратив все отведенное на тест время. В порядке усложнения даются задания ЕГЭ;
  • задания группируются по типу или теме — таким образом, ученик может приспособится к типу задания, а не настраиваться на каждый тип задания, затрачивая время.

Входящая задача

  1. Фамилию и имя тестируемого.
  2. Адрес электронной почты — это необходимо при опросе известных адресатов, когда им отправлена ссылка не по электронной почте, а в мессенджере. Данный пункт можно не использовать, если вы рассылаете опросник при помощи рассылки на электронную почту.
  3. Сделать выпадающий список, в котором будет выбираться школа. Аналогичным образом можно сделать выбор класса, отдела, подразделения. Такой вариант необходим, чтобы тестируемый верно определил, кому он сдает тестирование. При ручном вводе данных в поле разные регистры или написания ответов будут по-разному структурироваться фильтрами в итоговой таблице.
  4. Необходимо создать простой вопрос с одним вариантом правильного ответа.
  5. Необходимо создать простой вопрос с несколькими вариантами правильных ответов.
  6. Необходимо настроить балльную оценку тестируемого.
  7. Тестируемый может несколько раз проходить тестирование. Эту функцию можно не использовать, если тестируемый будет единожды проходить тестирование. В случае, если вам нужно собирать данные регулярно (допустим, ежедневно) вы можете использовать многократный прием ответов. В этом случае ссылка будет неизменна, необходимо будет лишь напоминать тестируемым о необходимости заполнить форму.
  8. Оценить количество прошедших тестирование.
  9. Выгрузить данные в таблицу для дальнейшей обработки и оценки.

«Смертельные» тесты

В системе Google C++ Testing Framework имеется интересная категория правил (, и т. д.), называющихся «смертельными» правилами. Эти правила используются для проверки того, было ли какое-либо сообщение об ошибке получено в результате передачи на вход функции некорректных данных, или же работа этой функции была завершена в соответствии с заранее определенным кодом завершения. Например, возвращаясь к , неплохо было бы получить сообщение об ошибке при выполнении функции и выйти из программы со статусом вместо получения значения . В для такого сценария используется правило .

Листинг 11. Выполнение «смертельного» теста платформы Google
#include "gtest/gtest.h"

double square-root (double num) { 
    if (num < 0.0) { 
        std::cerr << "Error: Negative Input\n";
        exit(-1);
    }
    // Код для 0 и положительных чисел…
}

TEST (SquareRootTest, ZeroAndNegativeNos) { 
    ASSERT_EQ (0.0, square-root (0.0));
    ASSERT_EXIT (square-root (-22.0), ::testing::ExitedWithCode(-1), "Error: 
Negative Input");
}

int main(int argc, char **argv) {
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

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

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

Листинг 12. Макеты для «смертельных» правил
ASSERT_DEATH(оператор, ожидаемое_сообщение)
ASSERT_EXIT(оператор, предикат, ожидаемое_сообщение)

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

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий