Сравнение изображений и визуальное тестирование для настольных приложений Windows и C# с использованием WinAPppDriver
Пожалуйста, помогите в выборе инструмента для тестирования наложения водяных знаков / изображений. Прозрачность может быть 0%, это не должно быть проблемой.
Тестируемое приложение представляет собой настольное приложение WPF в Windows, автотесты написаны на Winappdriver + C#, теперь похоже, что мне нужно сделать снимок экрана определенного элемента и сравнить фактическое изображение с идеальным образцом по маске.
Тестируемый продукт представляет собой видеокамеру с возможностью вставки логотипа / водяного знака и / или дополнительной информации (дата / имя / адрес) на изображение и видео. Задача - автоматически проверить правильность вставленного логотипа и правильность вставленных деталей в изображение / видео (размер, цвет, если логотип был зеркальным после вставки или что угодно, если имя было введено неверно...).
На данный момент я думаю об использовании OpenCV или Sikuli. Я знаю, что у Appium было что-то подобное, но с моим драйвером это, вероятно, не будет работать.
Также непонятно, как и что можно тестировать с видео. Просто взять один кадр наугад и протестировать его как картинку?
Большое спасибо за вашу помощь и предложения!
1 ответ
Возможно, это не полный ответ на ваши вопросы, но несколько слов о том, как работает Sikuli, и что может быть недостатком, если я правильно понимаю ваши потребности. Прежде всего, Sikuli использует OpenCV для внутренних целей, вызываяImgproc.matchTemplate()
функция. В Sikuli нет особого контроля над этим, но вы можете установить минимальную оценку сходства, которая варьируется от 0 (все будет совпадать) до 1 (точное сравнение пикселей). Если вы собираетесь использовать его для шаблонов, созданных с помощью видео, вам нужно быть где-то посередине. Сказав это, я не уверен, какое качество сравнения вы хотели бы получить, поэтому не уверен, будет ли само по себе минимальное сходство.
Другая мысль - интегрировать саму OpenCv lib в ваш код и использовать его напрямую. Это непростая задача, и может потребоваться некоторое базовое понимание методов обработки изображений.