Тулзы ручного тестировщика приложений на базе Windows

Моё лицо, когда не удается найти причины появления очередного блокера
Я занимаюсь тестированием десктоп приложений на базе Windows и в данный момент слежу за качеством одной отечественной ММОРПГ. Со временем я оброс некоторыми тулзами, позволяющими улучшить процессы ручного тестирования. В данной статье не хочу трогать полноценную автоматизацию (зависящую от ЯП, игрового движка и желания куашника лезть в эти дебри), а больше рассказать про ПО, которым я сам пользуюсь и которое не так часто всплывает в подобных темах (зачастую упор на мобилках и вэбе).
Virtual Box
Когда использовать: инсталляционное тестирование.
По данным Steam на апрель 2021 наиболее популярной ОСью является Windows 10 64 bit (92.38%). Следом за ней идут Windows 7 64 bit (2.33%) и Windows 8.1 64 bit (1.08%). Среди языков наиболее популярные: английский (39.27%), упрощенный китайский (18.83%) и русский (11.18%). Если с языками в рамках одной ОСи и можно поиграться, то иметь несколько разных ОСей на одной машине и переключаться между ними, прогоняя тесты, – удовольствие, скажем честно, на любителя.
Здесь нам и приходят на помощь средства виртуализации, где имхо самым простым и удобным будет Virtual Box. Позволяет прямо здесь и сейчас раскатать несколько образов систем разных разрядностей, языков, объемов ПЗУ и ОЗУ. Создать клон виртуальной машины или сделать снимок системы, к которому можно откатываться после прогона тестов. Образы виртуального диска можно копипастить и использовать на разных физических машинах. Из минусов, в виртуалку не прокинуть видеокарту, в Virtual Box данного функционала попросту нет. link_virtualbox
NetBalancer и Tmeter
Когда использовать: стресс тестирование.
То, что замечательно работает при 500 Мбит, может быть абсолютно неюзабельным при 1 Мбит. Как проводить подобные тесты? Можно, конечно, понизить пропускную способность сетевой карты средствами windows, урезав, скажем, значение до 10 Мбит и поиграть с дуплексом. Или потыкаться в настройках роутера. Но хочется все же более точных цифр и статистики.
Решение для богатых — NetBalancer. Решение для чуть менее богатых – Tmeter. Оба приложения позволяют редактировать скорость всего трафика или выставить ограничения на конкретный процесс, задавать правила и фильтры, отображать кол-во полученных и посланных байт в риалтайме. Оба выводят виджет с графиками, имеют приятный интерфейс и гибкую настройку.
Преимущество, на мой взгляд, у NetBalancer`а – есть возможность выбрать запущенное приложение и сохранить всю его статистику по трафику с указанием времени. Но да, за него придется немного забашлять разрабам. Tmeter бесплатный, но со статистикой у него похуже: подробного и посекундного сбора у него нет, только общие цифры. Небольшая оговорка: следует помнить, что все эти проверки синтетические и могут отличаться от реальных условий.
link_netbalancer и link_tmeter
AutoHotKey
Когда использовать: когда угодно.
Простейшая автоматизация рутинных процессов. Как быстро заполнять поля или отправить в игровой чат тысячу сообщений нажатием одной кнопки? Или воспроизвести последовательность действий, не прожимая кучу кнопок? Ответ — быстрый и ч0ткий AutoHotkey. link_ahk Например, можно зафиксировать шаблон баг репорта с заранее подготовленным форматированием:
При нажатии сочетания клавиш ctrl+shift+v поле будет выглядеть так:

Если не лень, можно заморочиться и писать целые сценарии, кликая мышью по координатам и нажимая различные клавиши/сочетания клавиш (но мы же понимаем, что это такое и лучше юзать нормальную автому).
Process monitor и DebugView
Когда использовать: когда угодно/анализ данных для баг репорта.
Допустим, вы запускаете игру и ловите синий экран смерти. С чего начать диагностику? Безусловно, пойдем изучать журнал windows и тыкать клиентские логи приложения. Но в дополнение к этому я бы выделил сразу две тулзы: Process monitor и DebugView. Первая выводит список всех процессов с указанием времени, позволяет сохранить их в табличку в csv/xml. Быстро, просто и удобно. Вторая перехватывает и выводит на экран, либо сохраняет в файл, вызовы OutputDebugString и DbgPrint, которые изначально заложил в код разработчик. Обычно применяется в том случае, когда проблема невоспроизводима на машине разработчика, а встроенный логгер по какой-либо причине неприменим (напр., по причине падения приложения или его отсутствия). Разработчик обильно обкладывает проблемное место отладочной печатью и отправляет приложение тестировщику, который воспроизводит ошибку и возвращает логи обратно — через несколько итераций проблема обычно находится. (за корректировку описания спасибо @AndreyDmitriev) link_prmonitor и link_debugview
MSI Afterburner
Когда использовать: когда угодно/нагрузочное тестирование.
Как быстро понять, привели ли изменения в проекте к улучшению производительности и увеличению кол-ва кадров в секунду? А если бы еще можно было подключить к этой программе свои скрипты – так вообще была бы сказка. Ну так есть такое! MSI Afterburner. Можно вывести на экран не просто кол-во кадров, а всю инфу с нагрузкой на железо (ОЗУ, ЦПУ, ГПУ, ̶М̶Г̶У̶). А также поиграться с настройкой видюхи! Вольтаж, память, регулировка скорости вентиляторов и кучу всякого разного. Еще раз отмечу, что MSI Afterburner позволяет запускать сторонние приложения на свои события. Так, например, я делаю питонячим скриптом скрины экрана в местах, где ФПС значительно проседает. link_msiab
Intel Graphics Perfomance Analyzers
Когда использовать: когда графическое приложение в конкретном месте безбожно тормозит.
Не совсем для всех и каждого. Приложение подойдет для мониторинга производительности программ с упором на графическую составляющую. Включает в себя целый список программных средств: GPA System Analyzer, Frame Analyzer, Trace Analyzer. Позволяет запустить прилажку, поставить ее на «паузу», захватить фрейм, собрать по нему объемную информацию и передать на анализ, скажем, техартистам, которые уже и будут заниматься оптимизацией. Еще никогда процесс сбора подобной информации не был так прост. Кому захочется почитать подробнее, вот хорошая статья на русском. link_intel_gpanalyzers
Самописные тулзы
Когда использовать: когда угодно.
Не хотел трогать автоматизацию, но считаю, что стоит упомянуть о самописных тулзах, которые можно использовать каждый день и на всех этапах тестирования. Отправка запросов, работа с БД, парсинг json`ов, анализ любых внутренних данных – в свои тулзы можно запихнуть все, что нужно и все, что угодно. Вариаций может быть масса. Я же использую Python и библиотеку pysimplegui, у которой есть отличный cookbook с примерами. А с помощью auto-py-to-exe легко и просто гуишка упаковывается в исполняемый файл.
Отладочные команды для куа отдела – это, конечно, круто. Но GUI оболочка под них (какой бы она не была) зарекомендовала себя как инструмент не только для куа, но и для ГД, арта, звука, продюсеров и других отделов. Конечно, можно попросить сделать это прогеров и потратить их время, но можно сделать все это и самостоятельно.
Разумеется, это не полный список, но и время у всех нас не резиновое. Скидывайте в комментарии ваши рабочие инструменты, интересно почитать, где и что можно усовершенствовать и дополнить. И спасибо за внимание!
Tmeter как пользоваться
Несмотря на то, что уже есть более свежая (и более мощная) версия TMeter, использовалась версия 2.84, поскольку она настолько free, что позволяет создавать больше трех фильтров подсчета трафика, а это несомненный плюс. Итак, начнём.
1. Надо подобрать сетевой адаптер, который поддерживает режим promiscuous, позволяющий прослушивать все пакеты, приходящие на физический коннектор адаптера. У меня хорошо в этом режиме работали D-Link DFE-538TX 10/100 Adapter и Realtek RTL8139(A) PCI Fast Ethernet. Кроме того, если нужно считать трафик всех компьютеров в сети, а не только тот, который проходит через выбранный адаптер, нужно позаботиться о том, чтобы все подсчитываемые интерфейсы были присоединены именно в ХАБ, а не КОММУТАТОР. Об этом можно прочитать в help TMeter, раздел «Планирование установки TMeter». Можно использовать даже 10-мегабитный коммутатор (если, например, считаем трафик ADSL). На моём примере считался трафик пула выделенного нам ADSL-провайдером МТУ адресов xx.yy.qq.zz с маской 255.255.255.248. В хаб были воткнуты сетевые адаптеры, на которых были назначены адреса из этого пула (один из адресов принадлежал компьютеру с TMeter). Трафик всех этих адаптеров считался.
2. ОС, на которой всё будет работать, не критична. У меня работала W2k Pro Rus SP4 со всеми хотфиксами. Устанавливаем TMeter 2.84. В процессе установки все послушно подтверждаем (в том числе установку драйвера WinPcap). Перегружаемся.
3. Запускаем TMeter. Из выпадающего списка выбираем сетевой адаптер, воткнутый в сеть xx.yy.qq.zz. Идём в меню Трафик\Редактирование фильтров. жмем добавить фильтр. В поле «Название» вводим «Исходящий МТУ», выбираем цвет графика, нажимаем кнопку «Добавить правило». Адрес источника выбираем «Определённый диапазон адресов» (и заносим первый и последний из пула xx.yy.qq.zz) либо «Определённая IP подсеть» (в этом случае заносим туда любой IP из пула xx.yy.qq.zz и маску этого пула, в нашем случае 255.255.255.248). Адрес назначения указываем «Любой IP адрес». Галочку Mirrored снимаем (в этом случае наш трафик будет отображаться выше горизонтальной оси). Если галочку Mirrored оставить, то «обратный» трафик (у которого адреса источника и адреса назначения противоположны заданным) будет располагаться ниже горизонтальной оси. Тип протокола (эти типы, кстати, описаны и заданы в файле protocols.txt, который находится в папке TMeter) в выпадающем списке выбираем «Любой IP протокол» (соответствует первой строке «0 IP» файла protocols.txt). Ставим галочку «Включить протоколирование», указываем «Протоколировать в файл», указываем полный путь до файла лога, куда будут писаться счётчики (у меня путь был D:\Program Files\TMeter\Log\mtu_out001.txt, кавычки для путей с пробелами не нужны). Жмем ОК.
4. Добавляем ещё фильтр «Входящий МТУ». Там всё то же самое, только меняются местами адреса источника и назначения, и указывается путь к другому файлу лога (D:\Program Files\TMeter\Log\mtu_in001.txt). Этот второй фильтр можно было и не создавать, если бы стояла галочка Mirrored в первом фильтре.
5. Жмём ОК в окне «Редактирование набора фильтров», и снова попадаем в консоль TMeter. Жмём на кнопочку с дискеткой (Запись фильтров файл), указываем имя файла для нашего вновь созданного набора фильтров (у меня было d:\Program Files\TMeter\filters\mtu001.tmf).
6. Выбираем меню Разное\Опции. Если у вас трафик ADSL, есть смысл для визуализации на закладке «График» поставить максимальную скорость 64 КБайт/сек. Далее на закладке «При запуске программы» ставим галку «Прочитать фильтры из этого файла», указываем путь до нашего файла фильтров (C:\Program Files\TMeter\filters\mtu001.tmf). Ставим галку «Начать сбор пакетов автоматически». На закладке «Журнал приложения» на всякий случай ставим галку «Записывать журнал приложения в файл» и указываем путь до файла журнала (у меня C:\Program Files\TMeter\Log\tmeter_log.txt).
7. Жмём кнопку «Начать сбор сетевых пакетов». Всё, минимальная настройка завершена.
Кроме того, можно сделать ещё несколько замечаний. В нашем примере для начала сбора статистики хотя бы нужно залогиниться (и под админом, пожалуй, если логи пишутся на NTFS) и щёлкнуть по ярлычку TMeter. Если мы хотим, чтобы всё работало и без этого, то можно:
а) прописать TMeter в автозагрузку под учётной записью, с которым устанавливали TMeter и настраивали набор фильтров.
б) Попробовать настроить задание на время запуска «При старте компьютера».
в) Запустить TMeter как службу.
Нас больше всего интересуют варианты а) и в), поскольку каждый из них имеет свои достоинства — вариант a) позволяет наблюдать через консоль за трафиком и в случае необходимости подстраивать правила фильтров, а вариант в) полностью автоматический, позволяет начать и продолжить сбор трафика даже при полном сбросе или пропадании/восстановлении питания, но зато не позволяет через консоль наблюдать за трафиком, а для изменения фильтров надо останавливать службу TMeter и запускать консоль. Если с вариантом а) всё и так понятно, то рассмотрим поподробнее, как использовать вариант в), т. е. как запустить TMeter как службу. В help по TMeter использовалась для этой цели утилита FireDaemon, но она стала платной. Наш способ запуска лучше и универсальнее.
TMeter
TMeter — это законченное средство для организации совместного доступа в интернет, содержащее в себе такие механизмы как файрволл, NAT, DNS, трафик шейпер (ограничение скорости).
Версия 10.0 программы TMeter содержит очередные новые возможности. Среди них — возможность учета трафика по имени пользователя терминал-сервера. Не секрет, что в последнее время корпоративные сети широко применяют службы терминалов для сокращения издержек. Вследствие особенности технологии служб терминалов, учет трафика на пограничных шлюзах реализовать невозможно без дополнительных средств аутентификации пользователей. TMeter 10.0 «прозрачно» решает проблему учета трафика и пользователи не испытывают никаких неудобств с выходом в Интернет.
Другая новинка TMeter 10.0 — возможность учета трафика по приложениям (процессам). Теперь используя TMeter, можно совершенно точно определить сколько «потребляет», к примеру, приложение Skype или торрент-клиент. Более того, трафик приложений можно не только считать, но и ограничивать. Например, можно разрешить доступ в Интернет только браузеру Mozilla Firefox что уменьшит риск утечки данных хранящихся на вашем компьютере. Можно сказать, что программе TMeter стали присущи черты персонального файрволла, причем бесплатная редакция (Freeware) позволяет в полной мере использовать TMeter в этом качестве.
Программа распространяется в бесплатной редакции (Freeware) допускающая использование не более трех фильтров для учета трафика и в коммерческих редакциях (Standard, Business и Premium) доступных за дополнительную плату. Ценообразование коммерческих версий TMeter строится в зависимости от максимального количества доступных фильтров, отличие их от бесплатной версии — только в числе фильтров.
Введение
TMeter — программа для Microsoft Windows, основной целью которой является подсчет сетевого трафика. Также является комплексным Интернет-шлюзом и включает в себя следующие основные возможности: файерволл, NAT, DNS, трафик-шейпер (ограничение скорости трафика), URL фильтрация. Служит для распределения, учёта и контроля доступа в Интернет на предприятиях, в частных и провайдерских сетях. Управление программой осуществляется через графический интерфейс.
Описание
Принцип работы заключается в перехвате службой TMeter всех сетевых пакетов (при помощи специального драйвера сбора пакетов tmeter.sys), которые направляются от сетевого адаптера в стек TCP/IP Microsoft Windows (MSTCP) и наоборот — от MSTCP в сетевой адаптер. Таким образом, каждый сетевой пакет гарантированно поступает на обработку в набор фильтров программы TMeter. Помимо захвата трафика с сетевых адаптеров локального компьютера, TMeter поддерживает сбор трафика с удаленных маршрутизаторов по протоколу CISCO Netflow v.5. Набор фильтров (список фильтров) — ключевое понятие в TMeter, содержащее в себя логику обработку сетевых пакетов.
Фильтр TMeter
Фильтр TMeter — это модуль включающий в себя следующие компоненты:
- Набор правил. Срабатывание хотя бы одного правила в фильтре ведет к срабатыванию фильтра в целом
- Два 64-битных счетчика посланных и принятых байт
- Трафик шейпер предоставляющий возможность ограничения скорости пакетов, попавших в фильтр
- Коллектор пакетов при помощи которого можно получить агреггированный лог-файл сетевых пакетов попавших в фильтр
- Коллектор запросов веб-запросов (HTTP) для создания списка URL-адресов на основе сетевых пакетов попавших в фильтр
- Настройки лимита по трафику, после превышения которого возможно блокирование трафика или ограничение скорости
- Расписание работы фильтра
- Настройки обнуления счетчиков
Создание отчетов по трафику
По-умолчанию, TMeter создает отчеты по трафику в файле формата XML. Отчеты в формате XML можно смотреть как при помощи специальной программы, входящей в комплект TMeter, так и при помощи обычного Интернет-браузера, поддерживающего XSLT-форматирование. Кроме того, имеется возможно настроить запись счетчиков в практически любую базу данных через механизм ADO.
Файрволл
Принцип работы встроенного файрволла заключается в блокировании соединений TCP и UDP, инициатором которых не является защищаемый программой TMeter хост. При этом возможно создания списка исключений, которые будут разрешать входящие соединения извне.
Встроенный в TMeter механизм NAT позволяет предоставить доступ в Интернет другим компьютерам локальной сети через единственный внешний IP адрес. Реализация механизма NAT в TMeter позволило решить одну из важных задач — учет «чистого» трафика NAT-маршрутизатора (т.е. без учета трафика клиентов из локальной сети). Таким образом, если за компьютером-шлюзом, на котором установлен TMeter и который считает Интернет-трафик для всей домашней или офисной сети, организовано отдельное рабочее место, то теперь появилась возможность учета Интернет-трафика этого рабочего места с помощью одного фильтра. Механизм NAT в TMeter не требует особых адресов для локальной сети, скрытой за NAT (в отличие от реализации NAT в операционных системах Microsoft Windows XP, Windows Vista, в которых внутренний интерфейс должен обязательно иметь адрес 192.168.0.1).
Контентная фильтрация
TMeter содержит в себе возможность URL Filtering (URL Фильтрация) позволяющая создавать «черные» и «белые» (но как создатьбелый список нигде не написано) списки URL-адресов, а также части URL-адресов (например, ограничить доступ к ресурсам типа *.avi, *.mp3, *.exe и т.п.). При этом, URL фильтрацию можно применять как ко всем фильтрам (имеется ввиду понятие «Фильтр TMeter» о котором речь шла выше) сразу, так и в выборочным фильтрам.
Аутентификация пользователей
В среде, где IP-адреса назначаются динамически при помощи DHCP или существует большой риск подмены статических IP-адресов, можно применять аутентификацию пользователей. При этом список пользователей необходимо предварительно создать в Консоли Управления TMeter, а на каждую клиентскую машину установить «легкий» Агент Авторизации TMeter. Такая схема позволит учитывать трафик или контролировать доступ в Интернет по имени пользователя, что позволит снизить угрозу возникновения неприятностей, связанных со сменой IP-адресов у пользователей. В случае, если пользователю установлен лимит по трафику, то при его превышении Агент Авторизации известит его соответствующим сообщением. Поддерживается два режима аутентификации пользователей — собственный режим или режим Active Directory.
Учет трафика пользователей терминал-сервера Windows
Учет трафика пользователей терминал-сервера имеет определенные сложности, поскольку все пользователи выходят в Интернет под единственным IP адресом и в заголовке пакета IP отсутствует информация о том, какому именно пользователю он принадлежит. TMeter предлагает здесь эффективное решение, которое позволяет решить указанные проблемы. Однако необходимо, чтобы программа TMeter была установлена непосредственно на терминал-сервере.
Учет трафика по приложениям (процессам)
TMeter включает в себя возможность учета трафика по приложениям (процессам). Используя TMeter, можно совершенно точно определить сколько «потребляет», к примеру, приложение Skype или торрент-клиент. Более того, трафик приложений можно не только считать, но и ограничивать. Например, можно разрешить доступ в Интернет только браузеру Mozilla Firefox что уменьшит риск утечки данных хранящихся на вашем компьютере.
Редакции
Программа распространяется в бесплатной редакции (Freeware) допускающая использование не более трех фильтров для учета трафика и в коммерческих редакциях (Standard, Business и Premium) доступных за дополнительную плату. Ценообразование коммерческих версий TMeter строится в зависимости от максимального количества доступных фильтров, отличие их от бесплатной версии — только в числе фильтров.
Производитель
Разработкой TMeter занимается компания Trafficreg Software офис которой находится в г.Волгограде.