View
77
Download
6
Category
Preview:
Citation preview
Regular Expressions and Testing PDF ReportsРегулярные выражение и тестирование PDF-отчетов
Роман ГрищенкоGrid Dynamics Intl.Краков, Польша
Содержание
1. Где мы встречаемся с PDF отчетами?2. Зачем нужно тестировать PDF отчеты?3. Способы парсинга PDF отчетов4. Типичная архитектура автотестов для тестирования PDF отчетов5. Как извлечь данные из PDF с помощью регулярных выражений (RegExp)6. Что можно и что нельзя проверить с помощью RegExp7. 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 20SQA 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 NameAccount number: 00 1111 2222 3333 4444Period: 9/1/2016 - 31/10/2016
Created by User Name on 21/11/2016
Money Movement ReportClient: Client NameAccount number: 00 1111 2222 3333 4444Period: 9/1/2016 - 31/10/2016Transaction Description Transaction Transaction Amount,Date USDSQA Days registration fee 9/7/2016 -200.00Hotel reservation 9/31/2016 -150.50Flight tickets Krakow-Minsk-Krakow 10/21/2016 -300.00Business trip compensation 30/10/2016 1,050.00Total 399.50Created by User Name on 21/11/2016
Пример парсинга
Client: Client NameClient: (?<clientName>.*)
Account number: 00 1111 2222 3333 4444Account number: (?<accountNumber>\d{2}( \d{4}){4})
Period: 9/1/2016 - 31/10/2016Period: (?<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
Recommended