понедельник, июля 30, 2012

FFmpeg + Screen Capture Recorder мега-быстрая запись видео багов


В итоге моих экспериментов по записи видео воспроизведения багов, я нашел самый быстрый и удобный способ записи полного экрана рабочего стола с практически моментальным созданием видео высокого качества и минимального размера.
Во-первых, скачайте и установите Screen Capture Recorder (домашняя страница проекта).

Во-вторых, создайте bat-файл со следующим содержимым:
Record.bat:
@REM= FFmpeg + screen-capture-recorder Desktop recording
@ECHO OFF
@REM =============== FFmpeg Path ===================================================
set FFMPEG64="C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe" 
set FFMPEG32="C:\Program Files\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe" 

SET FFMPEG=%FFMPEG32%
IF NOT EXIST %FFMPEG64% GOTO NEXT
SET FFMPEG=%FFMPEG64%
:NEXT

@REM ============== GET CURRENT DATE AND TIME =======================================

For /f "tokens=1-4 delims=/. " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a_%%b)
echo %mydate%_%mytime%

@REM =============== Output Dir and filename ========================================

md %mydate%
set output=%mydate%\%mytime%_recording.mp4

@REM =============== Delay 3 pigs. Sorry, pings======================================
TITLE : 2
ping localhost
TITLE : 1
ping localhost
TITLE Started!

@REM =============== Run FFmpeg =====================================

%FFMPEG% -f dshow -i video=screen-capture-recorder -r 12 -q 1  "%output%"
explorer /select,"%output%"

@REM =============== See also: =====================================
@REM =============== http://blog.zhariy.com   ======================
@ECHO ON

Всё! Теперь запустите файл, и наслаждайтесь записью скринкаста под Windows бесплатно open source в mp4, в один клик, привет SEO оптимизации :)


Примечание: При записи видео, я рекомендую отключить Windows Aero и установить «классическую серую» тему Windows. Размер роликов при «классической» схеме может быть в 1,5 – 2 раза меньше.

Как же все-таки люди становятся тестировщиками?


Еще с 9-го класса школы и в колледже я увлекался программированием. Вначале это был Паскаль, потом Делфи, потом Perl, потом C#... Мне было интересно писать собственные программки, в надежде на то, что я когда-нибудь напишу то, чего еще не написано. 

Согласитесь, что в конечном итоге, у программирования есть результат: программа, которая что-то делает. И согласитесь, что по своей сути, программирование очень похоже на резьбу по дереву, лепку из глины, строительство моделей самолётов. Во-первых, интересен сам процесс. Во-вторых – всегда есть вполне осязаемый и материальный результат.
Тестирование. Я не знаю ни одного человека, у которого бы хобби было тестировать софт.
Я уверен, что для программиста, такой диалог был бы волне нормален:
– Вася, выходи на улицу гулять!
– Не м-о-о-гу, мне нужно проект на nodejs переписать
Но, вы хоть когда-нибудь слышали, чтобы ответ тестировщика был:
– Не м-о-о-гу, мне нужно еще пять тесткейсов дописать

Мой путь начался именно с программирования. Так я попал в автоматизацию тестирования, а после – заинтересовался и самим тестированием. И такой путь дает свои плюсы.
Во-первых, мне до сих пор нравится ковыряться в самой системе изнутри. Зная, на чем написано приложение, используется ли база данных, какие технологии использовались; я могу предугадать баги.  И это не интуиция, а простое знание технологии и следование четкой мантре:

«Если у технологии есть сложные, запутанные или рутинные места – там точно нужно искать ошибку».

Приложение состоит на 80% из клиентского JavaScript с кучей формочек – то сто процентов не все формочки правильно инициализируются.  Только знания самой технологии позволяет мне предугадывать баги.  И изучение новых популярных технологий для дальнейшего применения их в своих целях – и есть одно из моих хобби.

Но, для меня остаётся загадкой два вопроса:

Как тестировщики без знаний в программировании могут эффективно тестировать ПО? (Ведь таки многие как раз эффективно и тестируют).

Какими еще путями люди приходят в тестирование и стают классными тестировщиками? В больших городах, понятное дело, есть трейнинговые центы, но ведь не везде!

четверг, июля 26, 2012

Четверг, 26-е Багфиксьня – Международный день *.bat файлов


Четверг, 26-е Багфиксьня – Международный день *.bat файлов
День *.bat файлов –  поистине знаменательная дата для всех тестировщиков планеты.
По традиции, в этот день, счастливые тестировщики создают новые *.bat файлы, автоматизируя свои рутинные действия.

Например, на рабочем столе можно создать файл для запуска вашых любимых приложений, которые вы хотите запустить в один даблклик!
start winword
start outlook
start chrome

Конечно же, *.bat-файлы, или как называют их в народе – батники, сами по себе очень стары, бородаты и ограничены. Но, ведь это всего лишь контейнер для команд!
Утилиту Ffmpeg, которой было записано это видео, я запускаю при помощи файла run.bat, следующего содержания:
ffmpeg -f dshow -i video=screen-capture-recorder -r 24000/1001 -q 1 out.avi

Бат-файлы позволяют комбинировать полезные команды, как кирпичики Лего, при этом обеспечивая их взаимодействие.
Например, за один клик, я могу:

  1. Выкачать последнюю версию исходиников проекта из системы контроля версий 
  2. Сбилдать исходники при помощи msbuild
  3. Обновить SQL-скрипты в базе данных

Все это обеспечивается правильным комбинированием различных команд.

Вам необходимо каждый день выкачивать билд с сервера заказчика? – добавьте в ваш bat-файл команду xcopy (для копирования с сетевой шары) или скачайте и используйте wget или curl для копирования файлов с HTTP/FTP ресурсов.

Ага, вам нужно деинсталлировать приложение перед установкой?
Без проблем. Используйте:
MsiExec.exe /qn /x{GUID вашего приложения} 
Проинсталлировать приложение?
msiexec /I appsetup.msi /qb /log appsetup.msi.log
 Или вы хотите остановить назойливую службу Windows Update, которая так и хочет перезапустить ваш компьютер?
sc stop wuauserv

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

Ну, а автоматизированные тесты вы как запускаете? Вы уже создали отдельный *.bat-файл для этой цели? (Пользователей CI, просьба не тролить это предложение)

пятница, июля 13, 2012

Sql Change Scanner – утилита для отслеживания изменений в таблицах SQL Server


Работая со сложным Enterprise-приложением, сохраняя и удаляя всевозможные сущности приложения, иногда очень полезным бывает отследить, какие таблицы в базе данных были модифицированы.

Простого и удобного для меня средства получения такой информации не было, но, за несколько часов, я создал  инструмент при помощи Perl и двух магических SQL запросов. Тогда утилита была непереносима, потому что мне было действительно сложно убедить людей, что поставить Perl на машину – это круто. А Command Line интерфейс – это еще круче. Я говорил… но, мне не верили.

Sql Change Scanner -- окно приложения

Утилита Sql Change Scanner – как раз и выводит имена таблиц, которые были модифицированы.
Сейчас это переносимое GUI приложение. Написал я его за два вечера,  и вот, сегодня – альфа релиз. Это значит, что «все работает на моей машине».

Скачать последнюю версию, вы можете с гитхаба. Сейчас это версия SqlChangeScanner_v1.0.zip  

Краткая инструкция:
Ограничения: Работает только с SQL Server. Тестировалась на SQL Server 2008

В начале, распакуйте и запустите SqlChangeScanner.exe
Укажите валидный ConnectionString к базе данных. Эту строку соединения вы можете взять из web.config вашего приложения.

Нажмите на кнопку Connect для соединения. Если все нормально, то в логе (Output) не должно быть ошибок.

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

Теперь приложение готово к отслеживанию изменений в базе. Сделайте изменение и нажмите на кнопку Scan еще раз. После завершения процесса, в логе (Output) вы увидите те таблицы, которые были модифицированы.

В данном случае, модификация – это либо удаление, либо изменение либо добавление элемента. Работа Sql Change Scanner основана на подсчете контрольных сумм таблиц, так что сейчас приложение покажет имя модифицированной таблицы, но не скажет, какого именно типа была модификация. Для более тонкой работы, вы можете воспользоваться SQL Profiler.

Критика и баг-репорты – приветствуются.

Короткая видео-демонстрация:

среда, июля 11, 2012

Вредная терминология в тестировании


Навеяно постом Рины Ужевко
Ненавижу терминологию!
Товарищи программисты, все тестировщики думают, что и вы тоже читали эти статьи из Википедии:
http://ru.wikipedia.org/wiki/Тестирование_программного_обеспечения
Перед прочтением этого текста, я настаиваю – ознакомьтесь с материалами Википедии
  • Системное тестирование – это тестирование того, как приложение работает в операционной системе. Например, в Windows XP, Windows 7
  • Интеграционное тестирование – это тестирование, при помощи интеграторов, т.е. тех людей, которые будут устанавливать ваш комплекс ПО заказчику
  • Функциональное тестирование – это тестирование функций. Т.е. тоже самое, что и юнит-тестирование. 
  • Юнит тестирование – это тестирование юнитов, т.е. тоже самое что и функциональное тестирование
  • Модульное тестирование – это тестирование модулей. Это круче чем юнит тестирование. 
  • Тестирование производительности – это тестирование того, что производит приложение. В большинстве случаев, самый полезный продукт – это лог приложения. 
  • Стресс-тестирование – это когда вы ощущаете дискомфорт из-за того, что продукт надо было сдать еще вчера, вы работаете сверхурочно, вам за это не оплачивают, а ваш начальник – чудак. 
  • Тестирование безопасности – тестирование того, что пользователь чувствует себя безопасно, работая с приложением. 
  • Тестирование совместимости – это проверка того, насколько программное обеспечение и пользователь совместимы. Нередко, такое тестирование проводится с привлечением сторонних консультантов-астрологов. 
  • Позитивное тестирование – приносит радость
  • Негативное тестирование – оставляет в душе осадок, как будто туда кто-то плюнул
  • Приёмочное тестирование – выполняется при помощи приемника, например «Приемник престола»  или аналогичного дворянского чина
  • Тестирование при сдаче – проводится в магазине, при покупке ПО. Покупатель тестирует сдачу, выданную продавцом.
  • Регрессионное тестирование – метод запугивания программистов, например:–  Иванываныч, тестировщики говорят, что отрегрессили наше приложение– Будь с ними осторожен, они могут и нас словить и отрегрессить 
  • Статическое тестирование – это когда тестировщик тупо сидит, пялится в монитор и ничего не делает
  • Динамическое тестирование – голодные тестировщики заперты в клетке. Электрические разряды стимулируют их метаться по клетке быстрее. 


вторник, июля 10, 2012

Книга: Краткие основы тестирования программного обеспечения


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

И после прочтения, я хочу вам настоятельно рекомендовать эту книгу к прочтению:

Автор: Артур Коробейник
Краткие основы тестирования программного обеспечения

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

Это всего лишь 100 страниц. Да вы можете прочитать ее уже сегодня вечером.
Скачать (бесплатно без смс и регистрации :)  книгу можно со страницы автора.

суббота, июля 07, 2012

Юмор в тестировании


Перевод замечательного поста: TheSoftware Testing Funny Pages

Кто сказал, что у тестировщиков нет чувства юмора? Я решил сделать небольшую подборку из моих любимых юмористический постов по тестированию. Наслаждайтесь! 

  • Менеджер проекта – это человек, который считает, что 9 женщин могут сделать 1-го ребенка за 1 месяц
  • Координатор проекта на стороне заказчика думает, что одна женщина может сделать 9 детей за 1 месяц
  • Разработчик думает что для того чтобы сделать одного ребенка необходимо 18 месяцев
  • Менеджер по маркетингу считает, что можно сделать ребенка даже если нет ни одного мужчины и ни одной женщины
  • Клиент – это тот человек, который не понимает, зачем ему нужен ребенок
  • Тестировщик всегда говорит своей жене, что это не правильный ребенок


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

  • Ваши любовные письма возвращаются перечёрканные красными чернилами с исправлением орфографических ошибок
  • Когда вы говорите ему, что не будете менять то, что он попросил, он предлагает вам оставить два других недостатка в замен на исправление этого
  • Когда вы спрашиваете его, как вы выглядите в  платье, – он говорит вам всю правду
  • Когда вы говорите ему, что в расставании виноват не он, а вы – он соглашается с вами и приводит четкие аргументы в подтверждение
  • Он не будет менять перегоревшую лампочку – его работа – поставить в известность, а не исправить
  • Он будет вспоминать старые проблемы, которые вы уже давно решили, просто для того, чтобы убедится, что они действительно решены
  • В постели, он будет пробовать совершить неправильный ввод.



Слева: (Читает книгу ISTQB Basic Level): – Не так быстро, Миша, тут написано, что ты должен написать тест кейс перед тем как выполнить его!
Два тестировщика пошли на обед и заказали два напитка, после чего, каждый вытащил по сэндвичу из собственной сумки и они принялись за еду. Владелец заведения был недоволен происходящим и сказал: «Есть собственную еду запрещено в этом заведении!». 

Тестировщики переглянулись, пожали плечами и обменялись сэндвичами. 



Эффективная запись видео воспроизведения багов


Как говорится в пословице «Лучше один раз увидеть, чем не дочитать баг с 15-ю степами». 


Это действительно так.  

Как бы я не старался, как можно лаконичней описать сложные баги  – все равно получается простыня из 15 шагов и 10-ти скриншотов.  А иногда у меня просто не хватает литературного таланта, чтобы описать всю серьезность бага так, чтобы разработчики и менеджеры все это поняли и главное… хотя бы дочитали это до конца.

Для себя я понял, что размазывать описание бага, на более чем 5 шагов – это просто не эффективно. А лучше всего – одна-две лаконичных строчек, например:

Пользователь не может купить Биту в магазине software-testing.ru, потому что страница выдает нечитабельный текст:
«?????????, ????? ???????? ????: �?и�?а �?еал�?ного �?е�?�?и�?ов�?ик�?»

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

Для менеджера понятно, что есть серьезная проблема: пользователь не может купить товар в магазине. И двух текстовых строчек вполне достаточно для того, чтобы назначить баг программисту, ответственному за модуль.

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

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

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

Инструменты

Для записи экрана я уже давно использую два бесплатных инструмента:
Microsoft Expression Encoder 4 и FFmpeg + screencapturer.

Плюсы  Microsoft Expression Encoder 4:

  1. Удобный
  2. Позволяет редактировать параметры кодирования видео
  3. Позволяет записывать регионы

Минусы:  

  1. Ограничение: бесплатно можно записать только 10 минут, но этого вполне хватает для записи воспроизведения багов (делая паузы при записи где это необходимо)

Плюсы  FFmpeg + Screencapturer  

  1. Бесплатный без ограничений
  2. Потребляет (субъективно) меньше системных ресурсов
  3. Преобразовывает видео в нужный формат уже во время записи видео
  4. Позволяет задать множество параметров

Минусы:

  1. Сложен в настройке, но используя VirtualDub или WinFF, можно упростить процесс подбора командной строки


CamStudio плюсы:

  1. Пишет как полный экран, так и регионы
  2. Удобен в использовании 
  3. Нет ограничений. Бесплатный.


Минусы:

  1. Не поддерживает расширенную настройку сжатия видео. Для сжатия вам придется использовать тот же VirtualDub/FFmpeg/WinFF либо другой софт
  2. Субъективно съедает больше ресурсов системы при записи видео 


Редактирование видео и добавление аннотаций после записи: 
В данный момент, я использую Windows Movie Maker. Не все устраивает, но лучшей альтернативы я еще не нашел.

Аннотирование видео в момент записи:
Epic Pen – замечательный инструмент. Позволяет рисовать на рабочем столе прямо во время записи, так что процесс аннотирования происходит в реальном времени, и вы не тратите время на пост-обработку


Ну, и скриншоты
Greenshot – мой выбор. Простой, бесплатный инструмент со всеми необходимыми возможностями.

Демонстрация работы FFmpeg + ScreenCapturer и Epic Pen: