Регистратор событий с графическим интерфейсом и воспроизведение

Мы пишем относительно тяжелый графический интерфейс C # с некоторыми компонентами syncFusion (GUI framework). Я хотел бы добавить возможность ведения журнала клиента, которую QA мог бы позже использовать для воспроизведения клиентских событий, чтобы анализировать ошибки или другой рабочий процесс, который клиент использовал в производстве.

Существует ли такой готовый модуль для записи и воспроизведения всех нажатий клиентских клавиш, событий мыши и т.д.? (Модуль C++ тоже может работать, если его можно легко интегрировать в клиент Windows C#.)

Я также хотел бы использовать сгенерированные журналы для анализа того, какие функции клиента использовались чаще всего и какие функции редко используются, чтобы решить, какие ошибки должны получить приоритет, а какие функции следует удалить/улучшить? Так что в основном я хотел бы, чтобы клиент записывал журнал на локальный диск или по сети обратно на сервер.

Я также несколько беспокоюсь о производительности, некоторое попадание допустимо, но есть идеи, насколько регистрация каждого события ухудшит производительность клиента?

Смысл здесь в том, чтобы регистрировать все клиентские события в рабочей среде, а не проводить тестирование QA как таковое.

Изменить на основе комментариев Айдсмана: после прочтения старое подобное обсуждение, а также Сайт Бенджи выглядит так, как будто этот тип "приборной панели" вызывает большой интерес, но в настоящее время не существует открытого или закрытого продукта или решения. Я разместил вопрос о статусе на сайте Бенджи, но сайт выглядит довольно тихим, никаких ответов с июня. Идеи Бенджи более или менее точно соответствуют тому, что я искал, но, похоже, еще не существует продукта, что довольно удивительно. Я полагаю, что отсутствие существующих продуктов означает, что внедрение такой системы должно быть более сложным, чем я первоначально думал. Буду продолжать искать и надеюсь найти что-нибудь позже.


person Ville M    schedule 06.11.2008    source источник
comment
Если вы сделаете это, подавляющий консенсус по моему предыдущему вопросу ( stackoverflow.com/questions/143681/ ) — убедиться, что пользователи дают разрешение на отправку ЛЮБЫХ данных вернуться к вам.   -  person Adrian Clark    schedule 07.11.2008
comment
Я только сейчас заметил этот комментарий, по какой-то причине шрифт для комментариев крошечный по сравнению с ответами, спасибо за эту ссылку, это определенно относится к тому, о чем я думал. Я прочитаю ответы на ваш вопрос и посмотрю, помогут ли они в моем проекте.   -  person Ville M    schedule 08.11.2008
comment
Нашел эту ссылку в комментариях: benjismith.net/ index.php/2008/06/13/analytics-gui-mockup/ Но, похоже, загрузки нет. Интересно, Бенджи или кто-то еще работает над подобным продуктом? Выглядит именно так, как мне нужно.   -  person Ville M    schedule 11.11.2008


Ответы (3)


Как уже упоминалось другими плакатами здесь, существуют коммерческие продукты, которые делают такие вещи. Если вы хотите написать свой собственный, вам нужно создать то, что называется System Hook DLL. Это можно сделать на C++ довольно просто. Если вы создадите его, вы, вероятно, сможете легко интегрировать его с помощью pinvoke. На самом деле, я бы начал с поиска на pinvoke.net людей, которые уже сделали что-то подобное.

DLL-ловушка позволяет перехватывать все события мыши и клавиатуры. Вы также можете вводить события мыши и клавиатуры. Итак, если вы соедините эти два параметра вместе: перехват = запись и ввод = воспроизведение.

Вот хороший список статей для начала: Code Библиотеки Project Hook

person dviljoen    schedule 16.11.2008
comment
или люди могут использовать этот: msdn.microsoft.com/en-us/magazine /cc163617.aspx Это довольно удобно. - person Jason D; 26.11.2009

Зачем писать код, если можно купить продукт для автоматизированного тестирования графического интерфейса?

person kenny    schedule 06.11.2008
comment
Я добавил это к вопросу: здесь нужно регистрировать всю клиентскую активность в производстве, а не тестировать QA как таковую. Я пытаюсь найти, какие функции используют производственные пользователи. - person Ville M; 06.11.2008
comment
@Ville M, хорошо, теперь очисти после перезаписи. Возможно, вы можете настроить один канал log4net (apache) для использования для захвата клиентского ввода. Воспроизведение, вы бы написали custom. - person kenny; 06.11.2008
comment
log4net звучит как хорошая идея для того, как вернуть журнал с клиента на сервер, но, что более важно, как мне зафиксировать / зарегистрировать все клиентские события? Есть ли общее решение, которое вы можете просто подключить к .net-клиенту, или мне нужно самому написать кучу кода ведения журнала? - person Ville M; 07.11.2008
comment
Ведение журнала настраивается, при этом несколько каналов выходят на разные источники (UDP, SMTP, база данных, xml, трассировка и т. д.). Ознакомьтесь с ним на странице logging.apache.org/log4net/index.html. - person kenny; 07.11.2008
comment
Хорошо, спасибо, я использовал log4J раньше, и это выглядит похоже. Я должен был оставить слово «выход из системы», так как это просто. Что мне нужно, так это модуль, который внедряется в приложение C# и записывает каждое событие для последующего воспроизведения (вроде кейлоггера, но для этой цели QA). Слышали о таком средстве? Ссылка на сайт? - person Ville M; 07.11.2008
comment
Нет, не инструмент. С log4net я представлял себе журнал как поток, в котором вы анализируете форму, щелчки мышью и клавишами и напрямую вызываете события формы. - person kenny; 08.11.2008

Вы слышали о log4net? Я использовал его в небольшом масштабе в одном проекте - он может удовлетворить ваши потребности. Я также провел некоторое исследование методов ведения журналов, ориентированных на аспекты и IoC. Существует некоторое влияние на производительность в зависимости от конкретного метода, но это может упростить обслуживание зарегистрированного кода. Порт Spring.NET для Spring Framework предлагает некоторые параметры для ведения журнала общего назначения на уровне методов. Вы можете использовать некоторую их комбинацию для создания файлов активности «скриптов» и модуля «воспроизведения», который может читать и повторно выполнять зарегистрированные действия в тестовой среде.

person Dave Swersky    schedule 14.11.2008