Screen2Log
Screen2Log — скринкастер, адаптированный для тестировщиков и обычных пользователей.
Contents
Зачем нужен скринкастер?
Особенно обычным пользователям?
С тестировщиками более-менее понятно, нетривиальное ручное тестирование отличается от простого простукивания тривиальных тест-кейсов, когда баги так и лезут в мешок.
Оно скорее похоже на долгую утомительную рыбалку, или патрулирование, когда неясно, где искать добычу/врагов, попадутся ли они, когда, и как оно будет выглядеть.
И когда, наконец-то, оно попадается (клюет! что-то мелькнуло в поле видимости…), то всплывает куча проблем:
- баг долго оформлять — а это сбивает настрой, поэтому гуру 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 (теоретически, все настройки должны и так правильно выставится, но мало ли что):
Выберите ffdshow для декодирования H264:
Убедитесь, что ему разрешено генерировать thumnailы для AVI-видео (остальное по вкусу):
Screen2Log
Опционально, но очень рекомендую (особенно, если у вас большой монитор, по крайней мере не маленький 10" нетбук):
- Скачать http://bazaar.launchpad.net/~stanislav-fomin/screen2log/trunk/view/head:/install/install.reg
- Запустить его (загрузить в реестр) дабл-кликом через explorer или командой:
regedit install.reg
Это сделает большие иконки, для папок с типом видео. Выберите папку для хранения скринкастов, и очень рекомендую, зайти в ее свойства и выставить ей тип видео (если вы запускали install.reg, то у видео будут большие иконки, это очень удобно), и выставить также тип видео для подпапок:
Ну и затем,
- скачайте http://bazaar.launchpad.net/~stanislav-fomin/screen2log/trunk/view/head:/bin/screen2log.exe
- и положите его куда вам угодно screen2log.exe
Запускайте его с консоли, из той папки, в которую надо писать скрин-логи. Ну или сделайте ярлык.
На самом деле, при каждом запуске, Screen2Log проверяет, что на рабочем столе есть ярлык для него, и создает его, устанавливая рабочий каталог в соответствии с тем, с которым его запустили, и также создает или обновляет ярлык «screenlogs», в который прописывает текущий каталог для скринкастов.
Т.е. если вы хотите сменить место записи скринкастов — вам просто нужно запустить Screen2Log из другого рабочего каталога.
Остановить утилиту просто — закройте окно с ним крестиком или нажмите «CTRL-C»
Ну и в любое время, даже, когда Screen2Log не запущен, вы можете хоткеем (или ярлыком «screenlogs») открыть папку, где структурировано по времени («Дата→Час→Нарезанные интервалы») разложены экранные ролики, и если вы установили тип видео и большие иконки, как мы рекомендовали выше, то вы увидите что-то вроде:
Т.е. элементарным скроллингом внутри папки-часа легко найти нужный момент (когда произошела проблема), а далее, либо 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
- координаты нижнего правого угла
Отсуст
- x1
- x1-coord of recorded area
l x2=x2 x2-coord of recorded area
y1=y1 y1-coord of recorded area y2=y2 y2-coord of recorded area
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
Проблемы?
Проблемы с использованием → 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