Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
GUI Automation testing - вопросы обработки окон
Наша компания в настоящее время пишет инструмент автоматизации тестирования GUI для компактных рамочных приложений. Мы изначально искали много инструментов, но ни один из них не был подходящим для нас.
С помощью этого инструмента вы можете записывать тестовые случаи и группировать их вместе в наборы тестов. Для каждого тестового набора генерируется приложение, которое запускает application-under-test и имитирует ввод данных пользователем.
В целом инструмент работает нормально, но поскольку мы используем дескрипторы окон для моделирования пользовательского ввода, вы не можете сделать очень много вещей. Например, мы не можем получить имя элемента управления (мы просто получаем заголовок).
Еще одна проблема, связанная с использованием дескрипторов окон, - это проверка наличия изменений. В данный момент мы имитируем щелчок по элементу управления и в зависимости от результата узнаем, перешло ли приложение на следующий шаг.
Есть ли другой (более простой) способ делать такие вещи (например, очередь сообщений или что-то еще)?
Интересная проблема! Я давно не занимался низкоуровневым (думаю, Win32) Windows программированием, но вот что я бы сделал.
Используйте именованный канал и попросите ваше приложение прослушать его. Используя этот именованный канал в качестве средства связи, реализуйте действительно простой протокол, с помощью которого вы можете запросить приложение для имени элемента управления с учетом его HWND или других полезных вещей. Убедитесь, что протокол достаточно богат, чтобы обеспечить достаточный обмен информацией между вашим приложением и тестовой платформой. Убедитесь, что тестовая платформа не дает слишком много "special behavior" от приложения, потому что тогда вы действительно не будете тестировать функции, а скорее ваш тестовый фреймворк.
Вероятно, есть более элегантные и крутые способы реализовать это, но это то, что я помню с самого начала, используя только простые вызовы Win32 API.
Другой подход, который мы реализовали для нашего продукта на работе, заключается в записи пользовательских событий, таких как щелчки мыши и ключевые события в сценарии событий. Это должно быть достаточно богатым, чтобы вы могли заставить приложение воспроизвести его, искусственно вводя эти события в очередь сообщений, и заставить его вести себя так же, как это было, когда вы впервые записали сценарий. Вы в основном имитируете пользователя при воспроизведении сценария.
Кроме того, вы можете записать любое важное состояние (документ пользователя, настройки, иерархию элементов управления GUI и т. д.).), один раз, когда вы записываете сценарий, и один раз, когда вы его воспроизводите. Это дает вам два набора данных, которые вы можете сравнить, чтобы убедиться, например, что все остается тем же самым. Это решение дает вам тесты, которые нелегко изменить (вы должны повторно записать, если ваш GUI изменяется), но которые обеспечивают потрясающее регрессионное тестирование.
(EDIT: это также потрясающий инструмент QA во время бета-тестирования, например: просто попросите ваших пользователей записать свои действия, и если произойдет сбой, у вас есть хороший шанс легко воспроизвести проблему, просто воспроизведя сценарий)
Удачи вам!
Карл
Если автоматизированный инструмент тестирования GUI обладает знаниями о фреймворке, в котором написано приложение, он может использовать эту информацию для создания лучших или более продвинутых сценариев. TestComplete , например, знает о VCL и WinForms Борланда. Если вы тестируете приложения, построенные с использованием Windows Presentation Foundation имеет расширенную поддержку для этой сборки .
использования NUnitForms . Я использовал их с большим успехом для однопоточных и многопоточных приложений, и вам не нужно беспокоиться о ручках и тому подобных вещах
Вот некоторые сообщения о NUnitForms, которые стоит прочитать
NUnitForms и не удалось DragDrop Регистрация-проблема MTA vs STA
Скомпилированное приложение exe GUI тестирование с NUnitForms
Я наконец нашел решение для связи между тестирующим приложением и application-under-test: управляемым шпионом . Это в основном приложение .NET, построенное поверх ManagedSpyLib.
ManagedSpyLib обеспечивает программный доступ к элементам управления Windows Forms другого процесса. Для этого он использует оконные крючки и файлы сопоставления памяти.
Спасибо всем, кто помог мне добраться до этого решения!