SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
Software quality assurance days
20 Международная конференция
по вопросам качества ПО
sqadays.com
Минск. 24–26 ноября 2016
Илья Рогожин
Mediatech. Санкт-Петербург, Россия
Автоматизация тестирования базы на
примере PostgreSQL
Автоматизация тестирования базы на примере PostgreSQL
О себе
• В тестировании 4 года;
• Проект Adsterra.com,
рекламный нетворк;
• 6 типов серверов с базами
данных;
• Более 300 статических
таблиц;
• Более 200 исполняемых
процедур в базе данных;
Автоматизация тестирования базы на примере PostgreSQL
Цели
● Тестировать отдельно (локализовано);
● Быстро находить проблемы;
● Проведения регрессий при высокой
сложности логики работы;
● Unit - тесты;
Автоматизация тестирования базы на примере PostgreSQL
Что такое PgTap
● Это расширение для PostgreSQL;
● В расширении есть большой набор assert
функций;
● Тесты пишутся на SQL или PL/PgSql;
● Результаты прогона тестов выводятся в
формате TAP;
Автоматизация тестирования базы на примере PostgreSQL
Основные функции PgTap
● has_table( :schema, :table, :description );
● tables_are( :schema, :tables, :description );
● columns_are( :schema, :table, :columns,
:description );
● has_function( :schema, :function, :args,
:description );
● results_eq( :sql, :sql, :description );
Автоматизация тестирования базы на примере PostgreSQL
Scripting-Style тест
BEGIN;
SELECT plan( 5 + 3 );
SELECT has_table(‘public', 'members');
SELECT has_table('public', 'logs');
SELECT columns_are('public', 'members', ARRAY['id', 'name', 'type']);
SELECT columns_are('public', 'logs', ARRAY['id', 'member_id', 'functions', 'data']);
SELECT has_function('calculate_percent', ARRAY['text', 'integer']);
-- 3
i tests/test_function_calculate_percent.sql
SELECT * FROM finish();
ROLLBACK;
Автоматизация тестирования базы на примере PostgreSQL
xUnit-Style тест
CREATE OR REPLACE FUNCTION test.test_schema()
RETURNS SETOF text
LANGUAGE 'plpgsql'
AS $function$
BEGIN
RETURN NEXT tables_are( 'public', ARRAY['members', 'logs']);
RETURN NEXT columns_are( 'public', 'members', ARRAY['id', 'name', 'type'] );
RETURN NEXT columns_are( 'public', 'logs', ARRAY['id', 'member_id',
'functions', 'data'] );
RETURN NEXT has_function( 'calculate_percent', ARRAY['text', 'integer']);
END;
$function$;
Автоматизация тестирования базы на примере PostgreSQL
Различия подходов
Параметры для
сравнения
Scripting-Style xUnit-Style
Простота
Запуск отдельных тестов
Транзакционность
Повторное использование
Отчеты
Автоматизация тестирования базы на примере PostgreSQL
Запуск тестов через psql
Автоматизация тестирования базы на примере PostgreSQL
Запуск тестов через pg_prove
Автоматизация тестирования базы на примере PostgreSQL
Интеграция с CI
● Teamcity plugin "TAP Parser";
● Jenkins plugin;
Автоматизация тестирования базы на примере PostgreSQL
Для других баз данных
● MySQL:
○ mytap;
○ stk-unit;
● Oracle:
○ oratap;
○ utplsql;
Выводы по PgTap
Плюсы:
● Один язык для разработки и тестирования;
● Высокая скорость выполнения;
Минусы:
● Язык для разработки тестов SQL;
● Отчеты (на больших объемах);
● Использование кода для других тестов;
Автоматизация тестирования базы на примере PostgreSQL
Автоматизация тестирования базы на примере PostgreSQL
In order to add user to table “test_user.users”
As a database administrator
I want call function “add_user” in schema “test_user” with name user as parameter
Background:
Given I am administrator database
Scenario: Check the function “add_user ” adds a user into a table “test_user.users”
Given Add to test_user.users table rows:
| user_name |
| test |
When Call function test_user.add_user with parameters:
| user_name |
| test2 test2 |
Then Table test_user.users have rows:
| user_name |
| test |
| test2 test2 |
Пример на Gherkin
Вывод по Gherkin
Плюсы:
● Использование различных языков для
автоматизации;
● Отчетность;
● Повторное использование шагов;
Минусы:
● Скорость выполнения;
Автоматизация тестирования базы на примере PostgreSQL
Полезные ссылки
● pgtap.org
● https://habrahabr.ru/post/209932/
● cucumber.io
Автоматизация тестирования базы на примере PostgreSQL
Автоматизация тестирования базы на примере PostgreSQL
Спасибо за внимание
Мои контакты:
● Telegram: @smallcreep
● Skype: smallcreep1
● E-mail: ilia.rogozhin@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
COMAQA.BY
 
Oleksandr Tolstykh "Quality. Android quality"
Oleksandr Tolstykh "Quality. Android quality"Oleksandr Tolstykh "Quality. Android quality"
Oleksandr Tolstykh "Quality. Android quality"
IT Event
 
NPAPI
NPAPINPAPI

Was ist angesagt? (20)

QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщикаQA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
 
Автоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийАвтоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегий
 
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
Тестирование трафика мобильных приложений: кейсы и инструменты
Тестирование трафика мобильных приложений: кейсы и инструментыТестирование трафика мобильных приложений: кейсы и инструменты
Тестирование трафика мобильных приложений: кейсы и инструменты
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
 
Oleksandr Tolstykh "Quality. Android quality"
Oleksandr Tolstykh "Quality. Android quality"Oleksandr Tolstykh "Quality. Android quality"
Oleksandr Tolstykh "Quality. Android quality"
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
NPAPI
NPAPINPAPI
NPAPI
 
Новый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проектеНовый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проекте
 
Тестирование доступности ПО для людей с ограниченными возможностями
Тестирование доступности ПО для людей с ограниченными возможностямиТестирование доступности ПО для людей с ограниченными возможностями
Тестирование доступности ПО для людей с ограниченными возможностями
 
Об автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media marktОб автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media markt
 
Способы организаций больших Java проектов по Автоматизированному тестированию
Способы организаций больших Java проектов по Автоматизированному тестированиюСпособы организаций больших Java проектов по Автоматизированному тестированию
Способы организаций больших Java проектов по Автоматизированному тестированию
 
Архитектура автоматизированных тестов: представление предметной области
Архитектура автоматизированных тестов: представление предметной областиАрхитектура автоматизированных тестов: представление предметной области
Архитектура автоматизированных тестов: представление предметной области
 
Сетевые снифферы в тестировании
Сетевые снифферы в тестированииСетевые снифферы в тестировании
Сетевые снифферы в тестировании
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
 
Continuous Integration для QA
Continuous Integration для QAContinuous Integration для QA
Continuous Integration для QA
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 

Andere mochten auch

Andere mochten auch (18)

Тестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и SeleniumТестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и Selenium
 
Экосистема Selenium
Экосистема SeleniumЭкосистема Selenium
Экосистема Selenium
 
Процесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требованийПроцесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требований
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектах
 
Управление хаосом, или как жить когда число тестов перевалило за десятки тысяч
Управление хаосом, или как жить когда число тестов перевалило за десятки тысячУправление хаосом, или как жить когда число тестов перевалило за десятки тысяч
Управление хаосом, или как жить когда число тестов перевалило за десятки тысяч
 
Как протестировать тим-лидера
Как протестировать тим-лидераКак протестировать тим-лидера
Как протестировать тим-лидера
 
Когда стоит закончить автоматизировать?
Когда стоит закончить автоматизировать?Когда стоит закончить автоматизировать?
Когда стоит закончить автоматизировать?
 
Better Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternBetter Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component Pattern
 
Test Cases - are they dead?
Test Cases - are they dead?Test Cases - are they dead?
Test Cases - are they dead?
 
The emotional intellect in testing
The emotional intellect in testingThe emotional intellect in testing
The emotional intellect in testing
 
Путь тестировщика: Расту или деградирую?
Путь тестировщика: Расту или деградирую?Путь тестировщика: Расту или деградирую?
Путь тестировщика: Расту или деградирую?
 
Пользовательские требования в жизни тестировщика
Пользовательские требования в жизни тестировщикаПользовательские требования в жизни тестировщика
Пользовательские требования в жизни тестировщика
 
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияПирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
 
Работа с бизнес-требованиями на стадии выхода продукта
Работа с бизнес-требованиями на стадии выхода продуктаРабота с бизнес-требованиями на стадии выхода продукта
Работа с бизнес-требованиями на стадии выхода продукта
 
Test Cases are dead, long live Checklists!
Test Cases are dead, long live Checklists!Test Cases are dead, long live Checklists!
Test Cases are dead, long live Checklists!
 
Провокации автоматического тестирования
Провокации автоматического тестированияПровокации автоматического тестирования
Провокации автоматического тестирования
 
Разработчик: руководство по эксплуатации
Разработчик: руководство по эксплуатацииРазработчик: руководство по эксплуатации
Разработчик: руководство по эксплуатации
 
Тестирование слоёного пирога
Тестирование слоёного пирогаТестирование слоёного пирога
Тестирование слоёного пирога
 

Ähnlich wie Автоматизация тестирования базы на примере PostgreSQL

20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
Computer Science Club
 
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
CodeFest
 
Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4
Technopark
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 

Ähnlich wie Автоматизация тестирования базы на примере PostgreSQL (20)

20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
 
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
 
Scaling PostgreSQL
Scaling PostgreSQLScaling PostgreSQL
Scaling PostgreSQL
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
 
Building Open Source Test Automation Frameworks. Watir based automation case ...
Building Open Source Test Automation Frameworks. Watir based automation case ...Building Open Source Test Automation Frameworks. Watir based automation case ...
Building Open Source Test Automation Frameworks. Watir based automation case ...
 
Сергей Ревко
Сергей РевкоСергей Ревко
Сергей Ревко
 
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL
 
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
 
QAFest. Роль тестирования в Devops
QAFest. Роль тестирования в DevopsQAFest. Роль тестирования в Devops
QAFest. Роль тестирования в Devops
 
Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Web application testing architecture
Web application testing architectureWeb application testing architecture
Web application testing architecture
 
Jubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolJubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation Tool
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
 

Mehr von SQALab

Mehr von SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 
Истинная сила тестировщика - информация
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информация
 

Автоматизация тестирования базы на примере PostgreSQL

  • 1. Software quality assurance days 20 Международная конференция по вопросам качества ПО sqadays.com Минск. 24–26 ноября 2016 Илья Рогожин Mediatech. Санкт-Петербург, Россия Автоматизация тестирования базы на примере PostgreSQL
  • 2. Автоматизация тестирования базы на примере PostgreSQL О себе • В тестировании 4 года; • Проект Adsterra.com, рекламный нетворк; • 6 типов серверов с базами данных; • Более 300 статических таблиц; • Более 200 исполняемых процедур в базе данных;
  • 3. Автоматизация тестирования базы на примере PostgreSQL Цели ● Тестировать отдельно (локализовано); ● Быстро находить проблемы; ● Проведения регрессий при высокой сложности логики работы; ● Unit - тесты;
  • 4. Автоматизация тестирования базы на примере PostgreSQL Что такое PgTap ● Это расширение для PostgreSQL; ● В расширении есть большой набор assert функций; ● Тесты пишутся на SQL или PL/PgSql; ● Результаты прогона тестов выводятся в формате TAP;
  • 5. Автоматизация тестирования базы на примере PostgreSQL Основные функции PgTap ● has_table( :schema, :table, :description ); ● tables_are( :schema, :tables, :description ); ● columns_are( :schema, :table, :columns, :description ); ● has_function( :schema, :function, :args, :description ); ● results_eq( :sql, :sql, :description );
  • 6. Автоматизация тестирования базы на примере PostgreSQL Scripting-Style тест BEGIN; SELECT plan( 5 + 3 ); SELECT has_table(‘public', 'members'); SELECT has_table('public', 'logs'); SELECT columns_are('public', 'members', ARRAY['id', 'name', 'type']); SELECT columns_are('public', 'logs', ARRAY['id', 'member_id', 'functions', 'data']); SELECT has_function('calculate_percent', ARRAY['text', 'integer']); -- 3 i tests/test_function_calculate_percent.sql SELECT * FROM finish(); ROLLBACK;
  • 7. Автоматизация тестирования базы на примере PostgreSQL xUnit-Style тест CREATE OR REPLACE FUNCTION test.test_schema() RETURNS SETOF text LANGUAGE 'plpgsql' AS $function$ BEGIN RETURN NEXT tables_are( 'public', ARRAY['members', 'logs']); RETURN NEXT columns_are( 'public', 'members', ARRAY['id', 'name', 'type'] ); RETURN NEXT columns_are( 'public', 'logs', ARRAY['id', 'member_id', 'functions', 'data'] ); RETURN NEXT has_function( 'calculate_percent', ARRAY['text', 'integer']); END; $function$;
  • 8. Автоматизация тестирования базы на примере PostgreSQL Различия подходов Параметры для сравнения Scripting-Style xUnit-Style Простота Запуск отдельных тестов Транзакционность Повторное использование Отчеты
  • 9. Автоматизация тестирования базы на примере PostgreSQL Запуск тестов через psql
  • 10. Автоматизация тестирования базы на примере PostgreSQL Запуск тестов через pg_prove
  • 11. Автоматизация тестирования базы на примере PostgreSQL Интеграция с CI ● Teamcity plugin "TAP Parser"; ● Jenkins plugin;
  • 12. Автоматизация тестирования базы на примере PostgreSQL Для других баз данных ● MySQL: ○ mytap; ○ stk-unit; ● Oracle: ○ oratap; ○ utplsql;
  • 13. Выводы по PgTap Плюсы: ● Один язык для разработки и тестирования; ● Высокая скорость выполнения; Минусы: ● Язык для разработки тестов SQL; ● Отчеты (на больших объемах); ● Использование кода для других тестов; Автоматизация тестирования базы на примере PostgreSQL
  • 14. Автоматизация тестирования базы на примере PostgreSQL In order to add user to table “test_user.users” As a database administrator I want call function “add_user” in schema “test_user” with name user as parameter Background: Given I am administrator database Scenario: Check the function “add_user ” adds a user into a table “test_user.users” Given Add to test_user.users table rows: | user_name | | test | When Call function test_user.add_user with parameters: | user_name | | test2 test2 | Then Table test_user.users have rows: | user_name | | test | | test2 test2 | Пример на Gherkin
  • 15. Вывод по Gherkin Плюсы: ● Использование различных языков для автоматизации; ● Отчетность; ● Повторное использование шагов; Минусы: ● Скорость выполнения; Автоматизация тестирования базы на примере PostgreSQL
  • 16. Полезные ссылки ● pgtap.org ● https://habrahabr.ru/post/209932/ ● cucumber.io Автоматизация тестирования базы на примере PostgreSQL
  • 17. Автоматизация тестирования базы на примере PostgreSQL Спасибо за внимание Мои контакты: ● Telegram: @smallcreep ● Skype: smallcreep1 ● E-mail: ilia.rogozhin@gmail.com