Глава 5: Разработка эталонного тестаФайлы:
В этой заключительной главе мы покажем, как написать эталонный тест при помощи QTestLib. Разработка эталонного тестаДля создания эталонного теста мы расширим тестовую функцию при помощи макроса QBENCHMARK. Функция эталонного теста обычно состоит из кода установки и макроса QBENCHMARK, содержащего код, время исполнения которого будет измеряться. Эта тестовая функция аттестует QString::localeAwareCompare(). void TestBenchmark::simple() { QString str1 = QLatin1String("This is a test string"); QString str2 = QLatin1String("This is a test string"); QCOMPARE(str1.localeAwareCompare(str2), 0); QBENCHMARK { str1.localeAwareCompare(str2); } } Установка может быть сделана в начале функции, замер времени тут ещё не запущен. Время выполнения кода внутри макроса QBENCHMARK будет замерено, а код, возможно, будет выполнен несколько раз для получения более точного результата. Доступно несколько бэкендов, которые можно выбрать в командной строке. Функции данныхФункции данных полезны для создания эталонных тестов, которые сравнивают несколько входных данных, например, сравнение с учётом локали и стандартное сравнение. void TestBenchmark::multiple_data() { QTest::addColumn<bool>("useLocaleCompare"); QTest::newRow("locale aware compare") << true; QTest::newRow("standard compare") << false; } Затем тестовая функция использует эти данные, чтобы определить, как производить эталонное тестирование. void TestBenchmark::multiple() { QFETCH(bool, useLocaleCompare); QString str1 = QLatin1String("This is a test string"); QString str2 = QLatin1String("This is a test string"); int result; if (useLocaleCompare) { QBENCHMARK { result = str1.localeAwareCompare(str2); } } else { QBENCHMARK { result = (str1 == str2); } } } Переключатель "if(useLocaleCompare)" размещён вне макроса QBENCHMARK, чтобы избежать учёта его затрат в общем измерении. Каждая функция эталонного теста может иметь один активный макрос QBENCHMARK. Внешние инструментыИнструменты для обработки и визуализации тестовых данных доступны как часть проекта qtestlib-tools на gitorious.org. Они включают в себя инструменты для сравнения производительности данных, полученных при запуске тестов, а также утилиту для создания веб-ориентированных графиков производительности данных. Для получения дополнительной информации об этих инструментах и простом примере построения графика смотрите qtestlib-tools announcement. |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |