- PVSM.RU - https://www.pvsm.ru -
Добрый день.
Помнится, в одном сериале про заучек ребята рулили стерео-системой, находящейся в пределах доступности собственной руки, из компьютера, передавая сигнал посредством интернета через всю планету. Здравомыслящая девушка, которую они хотели удивить, впечатлена не была, ибо полагала, что обычный ПДУ дешевле и проще.
Тем не менее, есть хорошая новость: incredible machine все-таки может быть полезна. Например, для тестирования программных систем.
Работая над большой ERP-системой OpenPapyrus [1], которая, в числе прочего, должна уметь выводить изображения штрихкодов разных стандартов и свойств, мы подключили популярную библиотеку zint [2] для рендеринга штрихкодов. Библиотека интегрировалась и заработала. Но тестировать результат все равно надо.
Самым подходящим вариантом для теста будет тестирование посредством обратной функции:
на вход подаются случайные данные, преобразуются функцией , затем к результату применяется функция , обратная к и сравнивается выход с исходными данными. Тестируются сразу две функции с бронебойным доказательством правильности работы (не алгоритмов, конечно, а реализации).
Обратной функцией к рендерингу штрихкода очевидно будет распознавание изображения штрихкода. Сказано — сделано. Взяли еще одну open source библиотеку zbar [3]. Инегрировали — заработала.
Теперь схема тестирования оформилась вполне четко: входные данные это — текстовое представление штрихкода и его стандарт (ean-13, ean-8, upc-a, code-39, qr и т.п.). Это представление преобразуется в изображение, которое тут же распознается и в результате мы получаем, опять же, текстовое представление и стандарт.
Таким образом мы протестировали следующие компоненты:
Нам остался еще один шаг: zint умеет выводить штрихкод в векторном формате svg, однако же zbar своими средствами этот формат не понимает, но у нас есть собственная инфраструктура для чтения и рендеринга svg-изображения. Добавим в нашу схему еще один узелок и включим в тест. Все работает.
Теперь к списку протестированных компонентов можем добавить:
Описанный тест примечателен тем, что использует значительное число модулей различного назначения, реализованных независимо друг от друга. Еще одним его ценным свойством является преобразование данных между качественно различными формами (текст — векторное изображение — растровое изображение — текст).
И ложка дегтя: такой тест, имея великолепную демонстративность, не является достаточным. Он верифицирует функционал компонентов в весьма узком диапазоне областей определения каждого из них. То есть, рассчитывать на полноту тестирования методом «incredible machine» (интересно, ранее кто-нибудь использовал этот термин в таком контексте?), увы, нельзя. Детальные тесты отдельных функций он не отменяет.
Спасибо за внимание.
Автор: Антон Соболев
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/testirovanie/259428
Ссылки в тексте:
[1] ERP-системой OpenPapyrus: https://github.com/papyrussolution/OpenPapyrus
[2] zint: https://github.com/zint/zint
[3] zbar: https://github.com/ZBar/ZBar
[4] libpng: http://www.libpng.org/pub/png/libpng.html
[5] zlib: https://zlib.net
[6] libjpeg: http://www.ijg.org
[7] Источник: https://habrahabr.ru/post/331230/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.