Screen2Log

From Wiki4Intranet
Jump to: navigation, search

Screen2Log — скринкастер, адаптированный для тестировщиков и обычных пользователей.

Зачем нужен скринкастер?

Особенно обычным пользователям?

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

Оно скорее похоже на долгую утомительную рыбалку, или патрулирование, когда неясно, где искать добычу/врагов, попадутся ли они, когда, и как оно будет выглядеть.

И когда, наконец-то, оно попадается (клюет! что-то мелькнуло в поле видимости…), то всплывает куча проблем:

  • баг долго оформлять — а это сбивает настрой, поэтому гуру exploratory testing требуют отдельных штурманов-регистраторов, пока «снайпер» занимается охотой, не выходя из своего боевого транса.
  • трудно точно описать, особенно если оно уже прошло → это чисто психофизиология, уже через пару минут нельзя с 100% уверенностью утверждать, что это было («врет как очевидец™»).
  • ну и наконец, разработчики/подрядчики/техподдержка может просто не верить, если ваш случай редок («It works on my machine!™»).

А в что касается обычных пользователей… то можно сказать, что вне зависимости от желания, мы все сейчас тестировщики, по факту использования, увы, различных софтин и сервисов. Причем в отличие от штатных тестировщиков, у которых более-менее налажен контакт с разработчиками, от рядовых пользователей девелоперы часто ограждены

  • либо «эффективной» техподдержкой, из трех уровней индусов или дебилов в колл-центре, прорваться сквозь которых, убедив, что ты не ламер, и проблема вызвана не только твоими кривыми руками, может только очень упорный боец,
  • либо «эффективным» пофигизмом.

Прорвать и то и другое часто помогает лишь очевидная демонстрация, которая, в случае игнорирования, может быть угрозой репутации продукта.

Решение очевидно — да, нужно записывать экран, и уметь это показать-переслать и т.п.

Это также поможет вам в случае конфликтов пользования финансово-торговыми сервисами (например, Ebay глючит при оплате, вы не можете оплатить выигранный лот, и автоматически становитесь виновным), ну и вообще.

А кроме ужасов, компьютер часто является источником радости (lulzов), и скринкастер поможет вам запомнить такие веселые моменты, как эпикфейлы каких нибудь понтовых сайтов («deface сайта минобороны», «детское порно на сайте телеканала», «падение яндекса»…), ну и прочие, редкие события. Причем к скринкасту доверия больше, чем с скриншоту, который совсем легко подделать.

Зачем нужен еще один скринкастер?

Ведь тысячи их! Платных и бесплатных! C веселым GUI! И даже предлагающие загрузку в интернет на свои сервисы!

И мы пробовали многие из них. Платные и бесплатные. У нас в компании есть site license на один из неплохих вариантов, в доводке которого я принимал активное участие (слал авторам кучу баг-репортов и фича-реквестов).

И все же сел делать собственный велосипед.

Во-первых, законы Гейзенберга и Паркинсона-Мерфи неумолимы — все интересное/опасное, баги, сбои, измены, ДТП, и прочий криминал, обычно происходят ровно тогда, когда на это никто не смотрит и не снимает. Записывать надо начать до! Т.е. по-уму, надо писать постоянно.

Если писать непрерывно в один файл, как делают почти все отсмотренные скринкастеры, то

  • либо получается большой жирный файл, который никуда не переслать, не приаттачить к багу и т.п., если не занятся видеомонтажем — вырезанием и т.п. А надо то быстро! Не выходя из режима «exploratory testing»! Баг репорт должен быть мгновенным и убедительным!
  • либо не получается ничего — падает не только софтина, но и скринкастер (или система целиком, BSOD), и все накрывается раком.

Плюс:

  • Скринкастер может существенно тормозить вашу нормальную работу. Да, регистрация это неплохо, но работа-то важнее.
  • Записывать экран надо с точностью до пискеля, в мутной картике нет смысла. Это можно настроить почти во всех скринкастерах выбором правильного кодека. Но не всегда. И не во всех. И это отдельный геморрой.
  • Лень. Лень изучать интерфейсы какой-то дополнительной софтины. Удивительно, но факт, сейчас это один из основных тормозов использования чего-бы то ни было.
  • Нужна некоторая автоматическое структурирование базы записей, ибо часто то, что это проблема, осознается гораздо позже, и нужно иметь эффективный доступ к записям, без перебора файлов («screencast-1.avi», «ыsometesting-12.avi» и т.п.)

Решение

Предлагаемое решение: скринкастер без интерфейса:

  • только кнопка «Вкл» — запуск программы
  • и «Выкл» — закрыть окно крестиком, по Ctrl-C, или просто убив процесс любым способом.

Будучи запущенным, он пишет в рабочий каталог (откуда его запустили), экран:

  • непрерывно
  • нарезая на куски заданного размера (разумные варианты где-то: 30сек, 1мин), это будет весить от 400K в разрешении 1280×800×5fps, до 5MB в 1920×1200×12fps, в любом случае, это вполне нормальный уровень аттачмента к письму или багу, можно быстро передать по Skype и т.п.
  • автоматически создавая временную структуру каталогов и файлов:
yyyy-mm-dd\hh\yyyy-mm-dd-hh-mm-ss.avi
  • работает с самым низким приоритетом, понижая записываемый fps (для большинства программ, если вы только не тестируете шустрые игры или видеоплееры — это не очень критично), лишь бы не мешать.

Доступ же к базе записанных скринкастов:

  • автоматический, по hotkey, или вызову ярлыка — работает, даже когда скринкастер выключен.
  • вообще говоря, просто открывается стандартный интерфейс просмотра папок с видео, который, в Windows 7, с выставленным размером Extra Large Icon, суперудобен, для того, чтобы даже не запуская видео, найти нужный слот-отрывок — достаточно вспомнить «примерно когда это было?» и проскроллировать каталог этого часа с крупными Thumbnailами — прекрасно видно, где и что происходило.
  • После нахождения нужного отрывка (или несколько), их можно
    • простой пользователь — обычным drag-and-drop-ом перетащить в форму аттачмента письма или бага.
    • продвинутый пользователь зажмет «Shift», и в контекстном меню объекта в Explorere появится пункт «Copy as path»…

Инсталляция

x264vfw

Установите кодек x264, 32 битную версию (даже, если у вас Win764bit):

Это нужно для кодирования видео.

K-Lite Codec Pack

Теоретически, можно использовать другой pack кодеков, включающих ffdshow, или поставить ffdshow отдельно, но пока этот вопрос плотно не исследовал.

Скачать K-Lite Codec Pack в соответствии с битностью ваших виндов. 64bit или 32bit.

При инсталляции выберите для надежности Advanced Mode (теоретически, все настройки должны и так правильно выставится, но мало ли что):

K-Lite Codec Pack installation. Advanced Mode.png

Выберите ffdshow для декодирования H264:

K-Lite Codec Pack installation. FFDSHOW 4 H264.png

Убедитесь, что ему разрешено генерировать thumnailы для AVI-видео (остальное по вкусу):

K-Lite Codec Pack installation. thumnailы для AVI-видео.png

Screen2Log

Опционально, но очень рекомендую (особенно, если у вас большой монитор, по крайней мере не маленький 10" нетбук):

regedit install.reg

Это сделает большие иконки, для папок с типом видео. Выберите папку для хранения скринкастов, и очень рекомендую, зайти в ее свойства и выставить ей тип видео (если вы запускали install.reg, то у видео будут большие иконки, это очень удобно), и выставить также тип видео для подпапок:

Customize Folder for Video.png


Ну и затем,

Запускайте его с консоли, из той папки, в которую надо писать скрин-логи. Ну или сделайте ярлык.

На самом деле, при каждом запуске, Screen2Log проверяет, что на рабочем столе есть ярлык для него, и создает его, устанавливая рабочий каталог в соответствии с тем, с которым его запустили, и также создает или обновляет ярлык «screenlogs», в который прописывает текущий каталог для скринкастов.

Т.е. если вы хотите сменить место записи скринкастов — вам просто нужно запустить Screen2Log из другого рабочего каталога.

Остановить утилиту просто — закройте окно с ним крестиком или нажмите «CTRL-C»

Ну и в любое время, даже, когда Screen2Log не запущен, вы можете хоткеем (или ярлыком «screenlogs») открыть папку, где структурировано по времени («Дата→Час→Нарезанные интервалы») разложены экранные ролики, и если вы установили тип видео и большие иконки, как мы рекомендовали выше, то вы увидите что-то вроде:

Screen2Log ScreenLogs.png

Т.е. элементарным скроллингом внутри папки-часа легко найти нужный момент (когда произошела проблема), а далее, либо drag-and-dropом, либо (как показано на рисунке) «SHIFT+правая клавиша мыши» и через контекстное меню «Скопировать как путь», приаттачиваем нужный файл, к почте, или баг-трекеру.

Да, хоткей по умолчанию немного дикий — «CTRL-ALT-SHIFT-L», но его можно поменять в настройках ярлыка «screenlogs».

Успехов!

Настройки

Если запустить утилиту, она вам перечислит вам доступные опции:

Usage: screen2log.exe [fps=fps] [slotsecs=slotsecs] [x1=x1] [x2=x2] [y1=y1] [y2=y2] [width=width] [install_shortcuts=<on/off>]
  fps=fps               wanted FPS
  slotsecs=slotsecs             Seconds per timeslot
  x1=x1                 x1-coord of recorded area
  x2=x2                 x2-coord of recorded area
  y1=y1                 y1-coord of recorded area
  y2=y2                 y2-coord of recorded area
  width=width           Target width of screen log
  install_shortcuts=<on/off>            Install shortcuts to desktop

Разберем их подробней.

По умолчанию, утилита записывает все доступные экраны (лучше захватить все, чем пропустить важное). Но если вы специально тестируете на втором (или наоборот) первом мониторе, то можно задать область записи, параметрами

x1, y1
координаты верхнего левого угла
x2, y2
координаты нижнего правого угла

Если опустить какой-то параметр или задать его равным нулю, то он не будет ограничивать тот «полный экран». Т.е. (допустим, разрешение основного монитора 1920x1200)

  • при x2=0, y2=0 будет записан весь экран
  • при x1=1920 будет записываться то, что «справа» от вашего 24" монитора, например второй монитор.
  • при x2=1920 — только основной экран.


width
Если вы хотите сделать грубый рескейлинг при записи. Например, у вас большой монитор 1920×1200, можно задать width=960, и уменьшить размер экрана в 4 раза. Height вычисляется автоматически, чтобы сохранить aspect ratio.

Это может быть полезно:

  • Уменьшить размер роликов:
    • Экономия места
    • Удобней просматривать их тем, у кого мониторы меньше
    • Т.е. при багрепортах и т.п., когда scale качества достаточно.
  • Запись видео — когда точность пикселей не важна, а вот FPS нужно побольше.

Но алгоритм scalingа грубый, для терпимых искажений желательно чтобы он был как-то кратен исходному размеру (т.е. уменьшать ровно в 2/3/4 раза).


fps
Целевое число фреймов в секунду. Больший FPS не значит, что FPS будет гарантировано больше — реальный FPS утилита пишет в процессе работы. В целом, для записи работы с софтом обычно достаточно 4-5fps, если надо записывать видео → 12fps.
slotsecs
Сколько секунд на слот (отдельный файл). Все это зависит от удобства — меньше секунд → меньше файлы, возможно удобней аттачить к баг-репорту. Но при этом возможно придется аттачить несколько файлов. Ну и наоборот.
install_shortcuts
По умолчанию, при каждом запуске, screen2log создает shortcut на рабочем столе,
  • указывающий на ту версию, которой его вызвали (например, если вы вызвали новую версию, или куда-то переложили утилиту)
  • с теми параметрами, с которыми его вызвали (геометрия, fps, и т.п.). Таким образом запоминаются последние настройки.

Но если указать «install_shortcuts=off», то этого не будет.

Проблемы?

Проблемы с использованием → mailto:stas-fomin@yandex.ru

Исходники

FAQ

  • Если запустить Screen2Log на машине, на которую зашли по RDP-сессии, а потом минимизировать окно, то ничего не записывается. WTF?

Это свойство RDP-протокола, подающаяся как фича (экономия трафика). Есть хак над компом, с которого вы запускаете RDP-сессию: создать в его реестре DWORD параметр RemoteDesktop_SuppressWhenMinimized равный 2 под веткой

HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client

или соответственно

HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client