Google testing framework (gtest)
Содержание:
- Запуск первого теста
- Создание страницы со структурированными данными
- Шаг 2. Задайте настройки
- Типы правил
- Как создать тест при помощи Форм Google
- Аналоги
- Writing the main() Function
- Test Fixtures: Using the Same Data Configuration for Multiple Tests {#same-data-multiple-tests}
- Invoking the Tests
- Как группировать задания тестов
- Как импортировать оценки за тест из Форм в Класс
- Simple Tests
- Подготовка
- Sunday, April 2, 2017
- Заключение
Запуск первого теста
Теперь, когда вы создали ваш первый базовый тест, пришло время запустить его. В приведен код основной программы, выполняющей тестирование.
Листинг 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
Создание страницы со структурированными данными
При создании страницы со структурированными данными рекомендуем следовать приведенным ниже инструкциям.
- Соблюдайте требования, которые действуют для вашего типа контента. Пример: .
- Протестируйте свой код с помощью инструмента проверки расширенных результатов. Для этого перейдите по этой ссылке, вставьте код в поле и нажмите Проверить код.
- Опубликуйте страницу и с помощью инструмента проверки URL посмотрите, как она выглядит в Поиске. Если у вас есть обычная и мобильная страница, добавьте структурированные данные в обе версии. Убедитесь, что доступ Google к странице не заблокирован метатегами robots и noindex и что для него не требуется авторизация. Если всё в порядке, в Сканере Google для сайтов запросите индексирование страницы. Подробнее о том, …
- Когда страница будет проиндексирована, проверьте ее на наличие ошибок, используя подходящие отчеты о статусе расширенных результатов.
В идеале количество расширенных результатов или типов структурированных данных должно вырасти, а число ошибок – нет.- Если при сканировании структурированных данных не происходит ошибок, обновите файлы Sitemap, чтобы робот Googlebot мог сканировать страницу регулярно.
- Если ошибки есть, исправьте их, снова воспользуйтесь инструментом проверки URL и запросите повторное индексирование. Когда будут устранены все неполадки, опубликуйте остальные страницы.
- Периодически (особенно после выпуска новых шаблонов и обновления кода) проверяйте страницы на наличие ошибок, используя подходящие отчеты о статусе расширенных результатов.
Шаг 2. Задайте настройки
Создав эксперимент, вы можете выбрать страницу приложения, варианты и атрибуты, которые нужно протестировать.
Вот как это сделать:
- Выберите страницу приложения, укажите данные для таргетинга, атрибуты и варианты, следуя инструкциям на экране.
- Чтобы запустить тестирование, нажмите Начать эксперимент в верхней части страницы. Вы также можете сохранить эксперимент и провести его позже.
Описания полей, примеры и рекомендации
Поле | Описание | Примеры и рекомендации |
---|---|---|
Название |
|
|
Название страницы приложения |
|
|
Аудитория |
|
|
Атрибуты |
|
|
Варианты |
Типы правил
Для каждого вопроса предусмотрены особые параметры проверки.
Текст (строка)
-
Число
Пример: целое число от 21 до 42.
-
Текст
Пример: ответ должен содержать определенное слово либо должен иметь формат адреса электронной почты или URL.
-
Длина
Пример: ответ должен содержать не более 500 или не менее 200 символов.
- Регулярное выражение. Создайте шаблон, которому должен соответствовать ответ.
Текст (абзац)
- Длина. Задайте минимальное или максимальное число символов в ответе.
- Пример: ответ должен содержать не более 500 или не менее 200 символов.
- Регулярное выражение. Создайте шаблон, которому должен соответствовать ответ.
Несколько из списка
- Выберите не менее. Укажите минимальное число ответов, которые должен выбрать респондент.
- Выберите не более. Укажите максимальное число ответов, которые может выбрать респондент.
- Выберите ровно. Укажите, сколько ответов должен выбрать респондент.
Как создать тест при помощи Форм Google
Как я уже писала здесь, сейчас я ищу сервис, который позволял бы создавать красивые онлайн-тесты, добавлять в них различные элементы, такие как изображение или ссылка, автоматически проверять ответы, а также встраивать тест на сайт или блог.
Подобных сервисов существует огромное количество, но они, как правило, платные, $20-40 в месяц. Прежде чем приобрести подписку на один из платных сервисов, мне показалось логичным изучить бесплатные варианты. Один из таких вариантов — это создание тестов при помощи Форм Google.
Думаю, что Вы знакомы с различными возможностями Диска Google, такими как создание таблиц, презентаций, форм, и так далее. Они очень похожи на те, что можно найти в пакете Microsoft Office. Так, Документы Google похожи на Word, Таблицы Google — на Excel, и так далее. Но у них есть одно существенное преимущество, а именно возможность использовать их бесплатно, как для индивидуальных пользователей, так и учебных заведений.
Для того, чтобы получить доступ к Google Диску, Вам необходима учетная запись в Google. Если такой учетной записи у Вас нет, то создайте ее, а затем войдите под своим именем и перейдите в Google Диск.
Для того, чтобы создать новую форму, выберите Создать – Google Формы.
После чего Вы создаете новую форму. Даете ей название, и добавляете вопросы, выбирая необходимый тип вопроса. В качестве эксперимента я создала тест по употреблению артиклей a/an/the. Тип вопросов — множественный выбор. Вы можете сделать некоторые вопросы обязательными. Пока учащийся не ответит на все обязательные вопросы, он не сможет отправить результаты теста.
При необходимости, Вы можете также добавить такие элементы, как видео, изображение, шкала, сетка, и так далее, выбрав внизу формы пункт Добавить элемент.
Вы также можете сменить тему, выбрав в верхнем меню пункт Вид, в затем Сменить тему.
После того, как Ваша форма готова, нажимаете Отправить внизу страницы, и сервис создаст для Вас ссылку, а также код, который можно встроить на сайт. Здесь есть интересная функция — возможность отправить тест на почту. Получатель сможет заполнить форму прямо в письме, если у него почта на gmail.
После того, как Вы создали и опубликовали форму, Google автоматически создаст таблицу, в которую будут, опять же автоматически, вноситься все варианты ответов. Попробуйте заполнить форму несколько раз. Один раз заполните ее правильно.
Для того, чтобы автоматически проверить ответы, необходимо установить дополнение Flubaroo. Для этого Вам необходимо будет в верхнем меню перейти в пункт Дополнения — Установить дополнение, и среди дополнений найти Flubaroo. Устанавливаете дополнение, запускаете его, а затем выбираете пункт Grade Assignment.
Далее скрипт предложит Вам выбрать, во сколько баллов оценивать ответы, и необходимо ли автоматически проверять их все.
Далее Вам необходимо будет среди имеющихся заполнений выбрать правильное, относительно которого будут проверяться все остальные.
Дополнение автоматически проверит ответы, а также сгенерирует статистику правильных и неправильных ответов.
Как я уже писала выше, Google генерирует код, который позволяет встроить форму в сайт или блог. Она будет доступна, если Ваш сайт создан, например, при помощи Blogger или Сайтов Google, но я не могу вставить ее себе на этот блог, работающий на WordPress. Не знаю, в чем тут дело. Возможно, в теге iframe, возможно, в особенностях моей темы.
Плюс к этому, невозможно сделать так, чтобы учащийся видел результаты теста сразу после его выполнения непосредственно на сайте, как это позволяет сделать, например, Polldaddy. Поэтому я сейчас изучаю другие, платные варианты. О результатах напишу чуть позже.
На Youtube есть подробная видео-инструкция по созданию тестов при помощи Форм Google.
Аналоги
Тысячи их! Конструкторов онлайн-опросов множество. Для их перечисления и сравнения можно писать отдельный цикл статей. И многие из них великолепны и имеют явные преимущества перед формами Google (как минимум банальная возможность изменить шрифт текста вопросов). Но если вам нужен просто нужен опрос, его дизайн не важен и вы не хотите лишний раз заморачиваться, то формы Google — отличный вариант!
iPhones.ru
Самый легкий способ создания онлайн-опросов. Google Формы — простой и эффективный инструмент, который всегда под рукой у любого владельца Google аккаунта. Они способны решить кучу проблем. Например: Сбор мнений сотрудников компании о ее новом логотипе; Создание анкеты для тестирования претендентов на вакансию; Добавление формы обратной связи на сайт; Вставка в статью теста для конкурса. Во…
Writing the main() Function
Most users should not need to write their own function and instead link
with (as opposed to with ), which defines a suitable entry
point. See the end of this section for details. The remainder of this section
should only apply when you need to do something custom before the tests run that
cannot be expressed within the framework of fixtures and test suites.
If you write your own function, it should return the value of
.
You can start from this boilerplate:
#include "this/package/foo.h" #include "gtest/gtest.h" namespace my { namespace project { namespace { // The fixture for testing class Foo. class FooTest : public ::testing::Test { protected: // You can remove any or all of the following functions if their bodies would // be empty. FooTest() { // You can do set-up work for each test here. } ~FooTest() override { // You can do clean-up work that doesn't throw exceptions here. } // If the constructor and destructor are not enough for setting up // and cleaning up each test, you can define the following methods: void SetUp() override { // Code here will be called immediately after the constructor (right // before each test). } void TearDown() override { // Code here will be called immediately after each test (right // before the destructor). } // Class members declared here can be used by all tests in the test suite // for Foo. }; // Tests that the Foo::Bar() method does Abc. TEST_F(FooTest, MethodBarDoesAbc) { const std::string input_filepath = "this/package/testdata/myinputfile.dat"; const std::string output_filepath = "this/package/testdata/myoutputfile.dat"; Foo f; EXPECT_EQ(f.Bar(input_filepath, output_filepath), ); } // Tests that Foo does Xyz. TEST_F(FooTest, DoesXyz) { // Exercises the Xyz feature of Foo. } } // namespace } // namespace project } // namespace my int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
The function parses the command line for
googletest flags, and removes all recognized flags. This allows the user to
control a test program’s behavior via various flags, which we’ll cover in
the AdvancedGuide. You must call this function before calling
, or the flags won’t be properly initialized.
On Windows, also works with wide strings, so it can be used
in programs compiled in mode as well.
But maybe you think that writing all those functions is too much work? We
agree with you completely, and that’s why Google Test provides a basic
implementation of main(). If it fits your needs, then just link your test with
the library and you are good to go.
NOTE: is deprecated in favor of .
Test Fixtures: Using the Same Data Configuration for Multiple Tests {#same-data-multiple-tests}
If you find yourself writing two or more tests that operate on similar data, you
can use a test fixture. This allows you to reuse the same configuration of
objects for several different tests.
To create a fixture:
- Derive a class from . Start its body with , as
we’ll want to access fixture members from sub-classes. - Inside the class, declare any objects you plan to use.
- If necessary, write a default constructor or function to prepare
the objects for each test. A common mistake is to spell as
with a small — Use in C++11 to make sure you
spelled it correctly. - If necessary, write a destructor or function to release any
resources you allocated in . To learn when you should use the
constructor/destructor and when you should use , read
the . - If needed, define subroutines for your tests to share.
When using a fixture, use instead of as it allows you to
access objects and subroutines in the test fixture:
TEST_F(TestFixtureName, TestName) { ... test body ... }
Like , the first argument is the test suite name, but for
this must be the name of the test fixture class. You’ve probably guessed:
is for fixture.
Unfortunately, the C++ macro system does not allow us to create a single macro
that can handle both types of tests. Using the wrong macro causes a compiler
error.
Also, you must first define a test fixture class before using it in a
, or you’ll get the compiler error «».
For each test defined with , googletest will create a fresh test
fixture at runtime, immediately initialize it via , run the test,
clean up by calling , and then delete the test fixture. Note that
different tests in the same test suite have different test fixture objects, and
googletest always deletes a test fixture before it creates the next one.
googletest does not reuse the same test fixture for multiple tests. Any
changes one test makes to the fixture do not affect other tests.
As an example, let’s write tests for a FIFO queue class named , which has
the following interface:
template <typename E> // E is the element type. class Queue { public: Queue(); void Enqueue(const E& element); E* Dequeue(); // Returns NULL if the queue is empty. size_t size() const; ... };
First, define a fixture class. By convention, you should give it the name
where is the class being tested.
class QueueTest : public ::testing::Test { protected: void SetUp() override { q1_.Enqueue(1); q2_.Enqueue(2); q2_.Enqueue(3); } // void TearDown() override {} Queue<int> q0_; Queue<int> q1_; Queue<int> q2_; };
In this case, is not needed since we don’t have to clean up after
each test, other than what’s already done by the destructor.
Now we’ll write tests using and this fixture.
TEST_F(QueueTest, IsEmptyInitially) { EXPECT_EQ(q0_.size(), ); } TEST_F(QueueTest, DequeueWorks) { int* n = q0_.Dequeue(); EXPECT_EQ(n, nullptr); n = q1_.Dequeue(); ASSERT_NE(n, nullptr); EXPECT_EQ(*n, 1); EXPECT_EQ(q1_.size(), ); delete n; n = q2_.Dequeue(); ASSERT_NE(n, nullptr); EXPECT_EQ(*n, 2); EXPECT_EQ(q2_.size(), 1); delete n; }
The above uses both and assertions. The rule of thumb is
to use when you want the test to continue to reveal more errors after
the assertion failure, and use when continuing after failure doesn’t
make sense. For example, the second assertion in the test is
, as we need to dereference the pointer later, which
would lead to a segfault when is .
When these tests run, the following happens:
- googletest constructs a object (let’s call it ).
- initializes .
- The first test () runs on .
- cleans up after the test finishes.
- is destructed.
- The above steps are repeated on another object, this time
running the test.
Availability: Linux, Windows, Mac.
Invoking the Tests
and implicitly register their tests with googletest. So,
unlike with many other C++ testing frameworks, you don’t have to re-list all
your defined tests in order to run them.
After defining your tests, you can run them with , which
returns if all the tests are successful, or otherwise. Note that
runs all tests in your link unit—they can be from
different test suites, or even different source files.
When invoked, the macro:
-
Saves the state of all googletest flags.
-
Creates a test fixture object for the first test.
-
Initializes it via .
-
Runs the test on the fixture object.
-
Cleans up the fixture via .
-
Deletes the fixture.
-
Restores the state of all googletest flags.
-
Repeats the above steps for the next test, until all tests have run.
If a fatal failure happens the subsequent steps will be skipped.
Availability: Linux, Windows, Mac.
Как группировать задания тестов
Существует три подхода к группировке тестовых заданий:
- все задания выводятся случайным образом — для хорошо использовать программы тестирования или онлайн-сервисы тестирования;
- задания выводятся в порядке усложнения — сначала простые, потом сложные. Это позволит ученикам быстро продвинутся вперед, а не «сидеть» со сложным заданием в начале тестирования, потратив все отведенное на тест время. В порядке усложнения даются задания ЕГЭ;
- задания группируются по типу или теме — таким образом, ученик может приспособится к типу задания, а не настраиваться на каждый тип задания, затрачивая время.
Как импортировать оценки за тест из Форм в Класс
Для импорта оценок:
- тест должен быть единственным прикрепленным к заданию файлом;
- для учащихся должно быть запрещено повторное прохождение теста, и они должны быть зарегистрированы в одном домене с вами;
- в форме должен быть включен сбор адресов электронной почты учащихся.
Если вы измените какой-либо из этих параметров или само задание после того, как сохраните или опубликуете его, импорт оценок может быть недоступен.
Примечание. Импорт оценок не будет работать, если вы прикрепите форму в виде ссылки.
Как импортировать оценки за тесты
Все оценки импортируются одновременно. Импортировать отдельные оценки нельзя. Импортированные оценки за тест заменяют текущие оценки за задание. Поэтому если тест представляет собой только часть задания, сначала импортируйте оценки за тест.
Чтобы импортировать оценки, выполните следующие действия:
-
Перейдите на страницу classroom.google.com и нажмите Войти.
Войдите в аккаунт Google, например imya@shkola.edu или imya@gmail.com. Подробнее…
- Выберите курсЗадания.
- Нажмите на задание с тестомПосмотреть задание.
- На странице Работы учащихся нажмите Импортировать оценки.
Примечание. Если вы не видите пункт Импортировать оценки, то форма не была настроена как тест или вы не включили Импорт оценок при создании задания.
- Нажмите Импорт.
В Классе появятся оценки каждого учащегося. Если вы не задали максимальное количество баллов для вопросов в тесте, то в задании будет указано «Без оценки».
Как изменить оценки после импорта
Оценки в Формах и Классе не синхронизируются. Если вы изменили оценки в Формах после их импорта в Класс, нажмите Импортировать оценки, чтобы перенести новые оценки в Класс и заменить ими предыдущие.
Подробнее о том, …
Simple Tests
To create a test:
- Use the macro to define and name a test function. These are
ordinary C++ functions that don’t return a value. - In this function, along with any valid C++ statements you want to include,
use the various googletest assertions to check values. - The test’s result is determined by the assertions; if any assertion in the
test fails (either fatally or non-fatally), or if the test crashes, the
entire test fails. Otherwise, it succeeds.
TEST(TestSuiteName, TestName) { ... test body ... }
arguments go from general to specific. The first argument is the name
of the test suite, and the second argument is the test’s name within the test
suite. Both names must be valid C++ identifiers, and they should not contain
any underscores (). A test’s full name consists of its containing test suite and
its individual name. Tests from different test suites can have the same
individual name.
For example, let’s take a simple integer function:
int Factorial(int n); // Returns the factorial of n
A test suite for this function might look like:
// Tests factorial of 0. TEST(FactorialTest, HandlesZeroInput) { EXPECT_EQ(Factorial(), 1); } // Tests factorial of positive numbers. TEST(FactorialTest, HandlesPositiveInput) { EXPECT_EQ(Factorial(1), 1); EXPECT_EQ(Factorial(2), 2); EXPECT_EQ(Factorial(3), 6); EXPECT_EQ(Factorial(8), 40320); }
googletest groups the test results by test suites, so logically related tests
should be in the same test suite; in other words, the first argument to their
should be the same. In the above example, we have two tests,
and , that belong to the same test
suite .
Availability: Linux, Windows, Mac.
Подготовка
- Электронная почта. Присоединиться к группе тестировщиков может только пользователь с аккаунтом Google (@gmail.com) или G Suite.
- Изменения монетизации. Если вы меняете цену приложения, это влияет на все существующие версии приложения, а также на те, которые будут добавлены в дальнейшем.
- Изменение доступности по странам. Если вы меняете список стран и регионов, где доступно приложение, это влияет на все существующие версии приложения, а также на те, которые будут добавлены в дальнейшем.
- Примечание. При проведении внутреннего тестирования действуют исключения для распространения по странам и для оплаты. Подробности можно найти в разделе .
Выпуск:
- Перед выпуском рабочей версии необходимо протестировать приложение.
- Если вы впервые публикуете версию для открытого, закрытого или внутреннего тестирования, ссылка станет доступна пользователям в течение нескольких часов. Примерно через такое же время тестировщики смогут увидеть изменения, внесенные в опубликованную версию.
Добавление организаций к тестированию.
- Чтобы добавить тестировщиков, связанных с организацией, которая использует , перейдите на вкладку Managed Google Play, затем откройте Расширенные настройки приложения (Настройка > Расширенные настройки) и установите флажок «Включить расширенные функции корпоративного Google Play».
- Для внутренних приложений также необходимо , связанную с тестированием, в список таргетинга.
Отзывы тестировщиков не влияют на общедоступную оценку приложения.
Платные приложения. При открытом или закрытом тестировании платного приложения тестировщикам нужно будет его купить. При внутреннем тестировании тестировщики смогут устанавливать приложение бесплатно.
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.
Заключение
В этой статье мы лишь поверхностно рассмотрели платформу Google C++ Testing Framework. Подробная документация по этой платформе доступна на сайте компании Google. Для профессиональных разработчиков я рекомендую ознакомиться с дополнительными материалами об открытых платформах регрессионного тестирования, таких как Boost unit test framework и CppUnit. Для получения дополнительной информации обратитесь к разделу .
Похожие темы
- Оригинал статьи «A quick introduction to the Google C++ Testing Framework» (EN).
- Прочитайте статью Google TestPrimer (EN), чтобы начать работу с Google C++ Testing Framework.
- Для более подробного изучения Google C++ Testing Framework ознакомьтесь с руководством Google TestAdvancedGuide (EN).
- На странице Google TestFAQ (EN) вы найдете советы и ответы на часто задаваемые вопросы, касающиеся платформы Google C++ Testing Framework.
- Прочитайте статью «Open source C/C++ unit testing tools, Part 1: Get to know the Boost unit test framework» (EN) (developerWorks, декабрь 2009).
- Прочитайте статью «Open source C/C++ unit testing tools, Part 2: Get to know CppUnit» (EN) (developerWorks, январь 2010).
- Для получения дополнительной информации о сравнении чисел с плавающей запятой ознакомьтесь со статьями What Every Computer Scientist Should Know About Floating-Point Arithmetic (EN) Дэвида Голдберга (David Goldberg) и Comparing floating point numbers (EN) Брюса Доусона (Bruce Dawson).
- Загрузите Google C++ Testing Framework.
- Загрузите ознакомительные версии программного обеспечения IBM или работайте с онлайновыми пробными версиями на странице IBM SOA Sandbox. Познакомьтесь с инструментами для разработчиков и межплатформенными приложениями от DB2, Lotus, Rational, Tivoli и WebSphere.