SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Regular Expressions and
Testing PDF Reports
Регулярные выражение и тестирование PDF-
отчетов
Роман Грищенко
Grid Dynamics Intl.
Краков, Польша
Содержание
1. Где мы встречаемся с PDF отчетами?
2. Зачем нужно тестировать PDF отчеты?
3. Способы парсинга PDF отчетов
4. Типичная архитектура автотестов для тестирования PDF отчетов
5. Как извлечь данные из PDF с помощью регулярных выражений (RegExp)
6. Что можно и что нельзя проверить с помощью RegExp
7. Q&A
Где мы встречаемся с PDF отчетами?
- Различный финансовые отчеты, например движение средств по счету
- Любые виды подтверждения произведенных операций, например
покупки билетов, полученное на email либо через иную систему
- Предоставление разнообразной коммерческой информации: расписание
рейсов, бухгалтерские отчеты итд.
Почему нужно тестировать PDF отчеты?
1. Генератор PDF может интегрироваться с многими внешними сервисами
или базами данных -> высока вероятность интеграционных дефектов
2. Генератор PDF обрабатывает полученные извне данные -> вероятны
проблемы с менеджментом собранной информации
3. Дополнительная логика или вычисления могут быть реализованы внутри
сервиса, где также могут быть допущены ошибки
4. Вас попросил заказчик :)
Способы парсинга PDF отчетов
Вручную Автоматически
Оптическое
распознавание
символов (OCR)
PDF => HTML/XML Регулярные
выражения
(RegExp)
Return symbols
and their
coordinates
<div style="...">SQA </div>
<div style="...">Days </div>
<div style="...">20 </div>
SQA Days 20
SQA Days d{2}
Типичная структура автотестов для
тестирования PDF отчетов
Менеджмент ожидаемых данных
Получение PDF отчета
Обработка PDF отчета
Проверка данных
Исходные данные / ожидаемые значения
Как извлечь данные из PDF с помощью
регулярных выражений (RegExp)
1. Преобразовать PDF файл в текст
2. Применить регулярные выражения и получить коллекцию совпадений
3. Обработать совпадения и сформировать объектную модель отчета
Transaction Description Transaction
Date
Transaction Amount,
USD
SQA Days registration fee 9/7/2016 -200.00
Hotel reservation 9/31/2016 -150.50
Flight tickets Krakow-Minsk-Krakow 10/21/2016 -300.00
Business trip compensation 30/10/2016 1,050.00
Total 399.50
Money Movement Report
Client: Client Name
Account number: 00 1111 2222 3333 4444
Period: 9/1/2016 - 31/10/2016
Created by User Name on 21/11/2016
Money Movement Report
Client: Client Name
Account number: 00 1111 2222 3333 4444
Period: 9/1/2016 - 31/10/2016
Transaction Description Transaction Transaction Amount,
Date USD
SQA Days registration fee 9/7/2016 -200.00
Hotel reservation 9/31/2016 -150.50
Flight tickets Krakow-Minsk-Krakow 10/21/2016 -300.00
Business trip compensation 30/10/2016 1,050.00
Total 399.50
Created by User Name on 21/11/2016
Пример парсинга
Client: Client Name
Client: (?<clientName>.*)
Account number: 00 1111 2222 3333 4444
Account number: (?<accountNumber>d{2}( d{4}){4})
Period: 9/1/2016 - 31/10/2016
Period: (?<fromDate>d{1,2}/d{1,2}/d{4}) - (?<toDate>d{1,2}/d{1,2}/d{4})
Что можно и что нельзя проверить с
помощью RegExp
Можно Нельзя
Текст Шрифты/цвета
Значения Выравнивание текста и отступы
Структуры данных Графические элементы
Q&A
Ссылки и контакты
Руководство по регулярным выражениям http://www.regular-expressions.info/tutorial.html
RegExp-тестер https://regex101.com/
Проект в GitHub с примерами использования RegExp для тестирования PDF
отчета https://github.com/panromek/pdf-testing
Контакты:
- facebook https://www.facebook.com/roman.gryshchenko
- linkedin https://ua.linkedin.com/in/roman-gryshchenko-042a0780
- email rgrishchenko@griddynamics.com

Weitere ähnliche Inhalte

Andere mochten auch

Git хуки на страже качества кода
Git хуки на страже качества кодаGit хуки на страже качества кода
Git хуки на страже качества кодаSQALab
 
Мобильные браузеры: очевидное-невероятное
Мобильные браузеры: очевидное-невероятноеМобильные браузеры: очевидное-невероятное
Мобильные браузеры: очевидное-невероятноеSQALab
 
Экосистема Selenium
Экосистема SeleniumЭкосистема Selenium
Экосистема SeleniumSQALab
 
Что было, что есть, что будет: Current State vs. Common Sense
Что было, что есть, что будет: Current State vs. Common SenseЧто было, что есть, что будет: Current State vs. Common Sense
Что было, что есть, что будет: Current State vs. Common SenseSQALab
 
Обратная связь и целеполагание, как маяки надежды тестировщика
Обратная связь и целеполагание, как маяки надежды тестировщикаОбратная связь и целеполагание, как маяки надежды тестировщика
Обратная связь и целеполагание, как маяки надежды тестировщикаSQALab
 
Автоматизация тестирования базы на примере PostgreSQL
Автоматизация тестирования базы на примере PostgreSQLАвтоматизация тестирования базы на примере PostgreSQL
Автоматизация тестирования базы на примере PostgreSQLSQALab
 
Анализ инструментов автоматизации мобильного тестирования
Анализ инструментов автоматизации мобильного тестированияАнализ инструментов автоматизации мобильного тестирования
Анализ инструментов автоматизации мобильного тестированияSQALab
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахSQALab
 
Определение pass/fail критериев при тестировании и анализе производительности
Определение pass/fail критериев при тестировании и анализе производительностиОпределение pass/fail критериев при тестировании и анализе производительности
Определение pass/fail критериев при тестировании и анализе производительностиSQALab
 
Путь тестировщика: Расту или деградирую?
Путь тестировщика: Расту или деградирую?Путь тестировщика: Расту или деградирую?
Путь тестировщика: Расту или деградирую?SQALab
 
Пользовательские требования в жизни тестировщика
Пользовательские требования в жизни тестировщикаПользовательские требования в жизни тестировщика
Пользовательские требования в жизни тестировщикаSQALab
 
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияПирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияSQALab
 
Процесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требованийПроцесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требованийSQALab
 

Andere mochten auch (13)

Git хуки на страже качества кода
Git хуки на страже качества кодаGit хуки на страже качества кода
Git хуки на страже качества кода
 
Мобильные браузеры: очевидное-невероятное
Мобильные браузеры: очевидное-невероятноеМобильные браузеры: очевидное-невероятное
Мобильные браузеры: очевидное-невероятное
 
Экосистема Selenium
Экосистема SeleniumЭкосистема Selenium
Экосистема Selenium
 
Что было, что есть, что будет: Current State vs. Common Sense
Что было, что есть, что будет: Current State vs. Common SenseЧто было, что есть, что будет: Current State vs. Common Sense
Что было, что есть, что будет: Current State vs. Common Sense
 
Обратная связь и целеполагание, как маяки надежды тестировщика
Обратная связь и целеполагание, как маяки надежды тестировщикаОбратная связь и целеполагание, как маяки надежды тестировщика
Обратная связь и целеполагание, как маяки надежды тестировщика
 
Автоматизация тестирования базы на примере PostgreSQL
Автоматизация тестирования базы на примере PostgreSQLАвтоматизация тестирования базы на примере PostgreSQL
Автоматизация тестирования базы на примере PostgreSQL
 
Анализ инструментов автоматизации мобильного тестирования
Анализ инструментов автоматизации мобильного тестированияАнализ инструментов автоматизации мобильного тестирования
Анализ инструментов автоматизации мобильного тестирования
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектах
 
Определение pass/fail критериев при тестировании и анализе производительности
Определение pass/fail критериев при тестировании и анализе производительностиОпределение pass/fail критериев при тестировании и анализе производительности
Определение pass/fail критериев при тестировании и анализе производительности
 
Путь тестировщика: Расту или деградирую?
Путь тестировщика: Расту или деградирую?Путь тестировщика: Расту или деградирую?
Путь тестировщика: Расту или деградирую?
 
Пользовательские требования в жизни тестировщика
Пользовательские требования в жизни тестировщикаПользовательские требования в жизни тестировщика
Пользовательские требования в жизни тестировщика
 
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияПирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
 
Процесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требованийПроцесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требований
 

Mehr von SQALab

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

Регулярные выражения и тестирование Pdf отчетов

  • 1. Regular Expressions and Testing PDF Reports Регулярные выражение и тестирование PDF- отчетов Роман Грищенко Grid Dynamics Intl. Краков, Польша
  • 2. Содержание 1. Где мы встречаемся с PDF отчетами? 2. Зачем нужно тестировать PDF отчеты? 3. Способы парсинга PDF отчетов 4. Типичная архитектура автотестов для тестирования PDF отчетов 5. Как извлечь данные из PDF с помощью регулярных выражений (RegExp) 6. Что можно и что нельзя проверить с помощью RegExp 7. Q&A
  • 3. Где мы встречаемся с PDF отчетами? - Различный финансовые отчеты, например движение средств по счету - Любые виды подтверждения произведенных операций, например покупки билетов, полученное на email либо через иную систему - Предоставление разнообразной коммерческой информации: расписание рейсов, бухгалтерские отчеты итд.
  • 4. Почему нужно тестировать PDF отчеты? 1. Генератор PDF может интегрироваться с многими внешними сервисами или базами данных -> высока вероятность интеграционных дефектов 2. Генератор PDF обрабатывает полученные извне данные -> вероятны проблемы с менеджментом собранной информации 3. Дополнительная логика или вычисления могут быть реализованы внутри сервиса, где также могут быть допущены ошибки 4. Вас попросил заказчик :)
  • 5. Способы парсинга PDF отчетов Вручную Автоматически Оптическое распознавание символов (OCR) PDF => HTML/XML Регулярные выражения (RegExp) Return symbols and their coordinates <div style="...">SQA </div> <div style="...">Days </div> <div style="...">20 </div> SQA Days 20 SQA Days d{2}
  • 6. Типичная структура автотестов для тестирования PDF отчетов Менеджмент ожидаемых данных Получение PDF отчета Обработка PDF отчета Проверка данных Исходные данные / ожидаемые значения
  • 7. Как извлечь данные из PDF с помощью регулярных выражений (RegExp) 1. Преобразовать PDF файл в текст 2. Применить регулярные выражения и получить коллекцию совпадений 3. Обработать совпадения и сформировать объектную модель отчета
  • 8. Transaction Description Transaction Date Transaction Amount, USD SQA Days registration fee 9/7/2016 -200.00 Hotel reservation 9/31/2016 -150.50 Flight tickets Krakow-Minsk-Krakow 10/21/2016 -300.00 Business trip compensation 30/10/2016 1,050.00 Total 399.50 Money Movement Report Client: Client Name Account number: 00 1111 2222 3333 4444 Period: 9/1/2016 - 31/10/2016 Created by User Name on 21/11/2016
  • 9. Money Movement Report Client: Client Name Account number: 00 1111 2222 3333 4444 Period: 9/1/2016 - 31/10/2016 Transaction Description Transaction Transaction Amount, Date USD SQA Days registration fee 9/7/2016 -200.00 Hotel reservation 9/31/2016 -150.50 Flight tickets Krakow-Minsk-Krakow 10/21/2016 -300.00 Business trip compensation 30/10/2016 1,050.00 Total 399.50 Created by User Name on 21/11/2016
  • 10. Пример парсинга Client: Client Name Client: (?<clientName>.*) Account number: 00 1111 2222 3333 4444 Account number: (?<accountNumber>d{2}( d{4}){4}) Period: 9/1/2016 - 31/10/2016 Period: (?<fromDate>d{1,2}/d{1,2}/d{4}) - (?<toDate>d{1,2}/d{1,2}/d{4})
  • 11.
  • 12.
  • 13. Что можно и что нельзя проверить с помощью RegExp Можно Нельзя Текст Шрифты/цвета Значения Выравнивание текста и отступы Структуры данных Графические элементы
  • 14. Q&A
  • 15. Ссылки и контакты Руководство по регулярным выражениям http://www.regular-expressions.info/tutorial.html RegExp-тестер https://regex101.com/ Проект в GitHub с примерами использования RegExp для тестирования PDF отчета https://github.com/panromek/pdf-testing Контакты: - facebook https://www.facebook.com/roman.gryshchenko - linkedin https://ua.linkedin.com/in/roman-gryshchenko-042a0780 - email rgrishchenko@griddynamics.com