
суббота, декабря 22, 2012
Насколько подробными должны быть мануальные тесты?

понедельник, декабря 17, 2012
Visual Studio: Макрос для замены пробелов на символы подчеркивания
Имена тестов более читабельны, если написаны через подчеркивание:
При_вводе_2_плюс_2_в_результате_должно_быть_4()Нежели если они написаны в CamelCase
ПриВводе2Плюс2ВРезультатеДолжноБыть4()Но, замена пробелов на символы подчеркивания может оказаться весьма болезненным и трудоемким занятием.
Как я дел это раньше:
- Писал строку текста в Ворде, для того чтобы не допускать тупых афрографических ашибак
- Копировал строку в Visual Studio
- Использовал стандартный поиск и замену по выделенному тексту. Это лишний диалог, на который я тратил лишнее время.
Теперь я нажимаю Alt+1 – и пробелы заменяются на подчеркивания.
Код макроса можно взять тут: Visual Studio Macro for BDD Naming
И видео о том, как добавить новый макрос в Visual Studio:
воскресенье, декабря 16, 2012
Confet&QA: Мой доклад про создание читабельных отчетов для автоматизации тестирования на .NET/C# + Webdriver + Gallio Icarus/MbUnit + BDDfy
Я хочу еще раз сказать спасибо Организаторам этой замечательной онлайн конференции – конфетки. Спасибо участникам, за ваши вопросы, на которые я отвечал в живую и на форуме software-testing.ru.
Мой доклад посвящен инструментам, помогающим сделать результаты прогона автоматизации более наглядными. Это Gallio + MbUnit, которые позволяют не только создавать и запускать тесты, но и создавать красивые отчеты после прохода автоматизации, записывать видео встроенными средствами и много другое.
Я рассказал о BDDfy – фреймворке, позволяющим писать тесты в более понятном и читабельном аля BDD-стиле. Именно в этом фреймвоке я нашел решение тех проблем, которые у меня возникали со Specflow.
Но, на счет Gallio Icarus не обошлось и без полезной ложки дёгтя.
Перечитайте нашу переписку на форуме автоматизаторов с товарищем apetrovskiy. Александр очень хорошо расписывает возможные проблемы с Gallio и варианты их решения.
Ресурсы:
Gallio Icarus: http://gallio.org
BDDfy – фреймворк для БыДиДификации кода :)
Страница проекта на Github:
http://teststack.github.com/TestStack.BDDfy/
Описание на английском:
http://www.mehdi-khalili.com/bddify-in-action/introduction
И еще больше докладов с Конфетки в поиске по Ютубу.
суббота, декабря 15, 2012
XMLStarlet утилита для редактирования XML файлов из командной строки
Наконец-то нашел!
Зачем?
Решения
Я пишу скрипты на языке Perl, если необходимы более тонкие преобразования и работа с XML файлами. Для конфигурации билда перед запуском авто-тестов, у меня также есть подобные поиски и замены в файлах конфигурации на C#. Но, все это как-то заточено под конкретные файлы, и создавать универсальное решение не хотелось, но пришлось бы…
Пришлось бы, если бы я не нашел замечательный инструмент XMLStarlet, который позволяет редактировать, валидировать, запрашивать данные из XML фала через командную строку.
Со всеми возможностями инструмента я еще не разобрался, да и не надо пока. Главное, что я нашел, как заменить значения строки подключения к базе данных. А делается это так:
xml ed -u "configuration/connectionStrings/add[@name='SqlServerDb']/@connectionString" -v "Data Source=SQL2008;Initial Catalog=testdb93;User ID=admin;Password=admin;MultipleActiveResultSets=True;" My.Database.config
Создав несколько bat-файлов, я теперь могу быстро переключать приложение на разные базы данных.
Домашняя страница XMLStarlet
Страница загрузки
З.Ы: Внутри архива есть хорошее руководство пользователя
вторник, декабря 11, 2012
Given When Then в баг репортах
Кстати, интересно, а какая собственно разница между требованием, тест-кейсом и баг-репортом?
Требование описывает позитивный сценарий работы системы, ту возможность, которую приложение предоставляет пользователю.
"У пользователя должна быть возможность сложить два числа в калькуляторе"Приёмочный тест-кейс описывает пример такого сложения. В нем может быть предусловие, есть шаги (действия) и проверка, которую также можно назвать постусловием, описывающим то, как что конкретно и как должно изменится.
четверг, ноября 22, 2012
RamDisk – делаем всё быстрее!
пятница, ноября 16, 2012
Devnology Podcast 034 - Gojko Adzic
вторник, ноября 06, 2012
О чем я расскажу на Test Automation Days
Только сейчас, многие из нас, автоматизаторов, пытаются как-то использовать паттерн PageObject для того, чтобы и сделать код тестов понятней, и держать "все локаторы в одном классе". Буквально только сейчас люди начинают использовать некоторые преимущества объектно-ориентированного программирования. То есть применять то, чем программисты активно пользуются уже более 20-ти лет. И если они используют эти техники такой продолжительный срок – значит в этом что-то есть!
Так почему бы на не взять все самое лучшее? Все то, что заставит нас писать меньше кода, но, при этом покрывать больше функционала приложения.
Например, есть ли чего общего между страницей регистрации нового пользователя и формой обратной связи? И там и там есть некоторые ожидаемые поля. И там и там некоторые поля обязательны. Можем ли мы спросить у каждой страницы "А дай-ка мне список своих текстовых полей" и, получив список, – проверить каждое.
И все это одним участком кода? И код проверки будет единым для всех страниц, а для каждой страницы будет генерироваться отдельный тест. Но, только не путем копи-паста, а путем наследования.
Я покажу, как для каждой существующей страницы приложения прогнать целый набор тестов, а выполнятся, будут только лишь те, которые поддерживаться самой страницей.
Хорошо. Предположим, на страницу была добавлена фича "Если форма не сохранена и пользователь закрывает страницу – приложение должно известить о несохраненных изменениях". Сколько кода нужно написать, чтобы проверить эту фичу для 50-ти страниц в приложении?
Я покажу, как добавить 50 таких тестов, произведя изменения всего лишь в одном в файле.
Если интересно – приходите на мой доклад "За пределами PageObject" на конференции Test Automation Days, которая состоится в Киеве 9-го февраля 2013-го года.
вторник, октября 23, 2012
Шапка тестировщика
Буквально на прошлой неделе, я закончил одно интереснейшее задание по тестированию. Суть была в том, что наш Аппликейшн позволял расширить свою функциональность посредством плагинов.
В самом начале, мне, а это бывает не часто, досталась хорошая документация с детальным описанием протокола работы Аппликейшена с плагином.
Кроме того, был даже отдельный пример реализации такого плагина. И, скорее всего, для того чтобы «протестировать» функциональность, мне достаточно было убедиться в том, что код примера компилируется и работает. Но, в тот момент у меня и сомнений не возникало, что этот код плагина не работает, а в правильной работе той функциональности, которая вызывала методы плагина – сомнения были.
Шапка программиста
Я решил примерить на себя «шапку программиста» и реализовать тестовой плагин с нуля, не копируя код примера.
Для этого, в начале, я написал модульные тесты, которые бы эмулировали функциональность Аппликейшена, и вызывали нужные методы согласно протоколу. А сами методы отдавали необходимые данные, которые читались из внешнего файла. И данные, и вызовы – все это было покрыто модульными тестами. Кроме того, я добавил логирование вызовов методов плагина в отдельный лог, и при помощи тестов, еще даже не подключая плагин к Аппликейшену, я уже был доволен тем, что все работает так, как я хочу.
Шапка тестировщика
Но, тут я понял, что шел по пути наименьшего сопротивления, думая лишь о позитивных сценариях. А как же негативные? А что если вопреки протоколу работы, будут вызваны методы в другой последовательности? А почему у меня два похожих метода возвращают одинаковые значения? Но, эти вопросы я задал себе только после того, как надел «шапку тестировщика».
Проверки последовательности вызовов я реализовал в самом плагине с последующим выводом ошибок в лог. А возвращаемые тестовые данные я сделал уникальными для каждого варианта.
После того, как я впервые подключил тестовый плагин, мне нужно было поправить проект всего лишь один раз, потому что я не учел одну незначительную конфигурационную ошибку. После – все заработало как я хотел. Я был доволен своей работой. Мне удалось протестировать новую функциональность в достаточном объеме, чтобы быть уверенным в ее работоспособности.
И я нашел две ошибки. Первая была в том, что в определенной конфигурации, файлы источника данных удалялись Аппликейшеном. Эту ошибку можно было найти еще на стадии «шапки программиста».
Но, потом оказалось, что в другой конфигурации, Апликейшен вызывал не тот метод плагина, который был должен вызвать согласно спецификации. И нахождению этой ошибки я благодарен «шапке тестировщика», надев которую я сделал возвращаемые данные уникальными для каждого метода, и добавил проверки на вызов методов плагина согласно протоколу.
Выводы
Я думаю, многих из нас немного злят те случаи, когда после допиливания одной функциональности, отваливается тот функционал, который стоял в паре кликов. И даже особо не напрягаясь, можно найти новую блестящую ошибку JavaScript или ошибку от сервера.
Возникают мысли «ну как же ЭТО можно было не заметить?». А можно, если вдруг программист забыл надеть «шапку тестировщика». И причин тут может быть целая масса: от личных проблем – до проблем на производстве, авралов, невнимательности.
Да, так повелось, что большинство тестировщиков ходят в своих шапках, а программисты в своих. А людей, которые примеряют обе – не так уж и много. Но, это значит лишь то, что людям, владеющим навыком ношения «шапки программиста» все больше и больше будут нужны люди, владеющие «шапкой тестировщика»
четверг, октября 04, 2012
WebDriver: отладка CSS селекторов в Internet Explorer
Есть такие странные сайты, которые сейчас, в 2012 году, извините за слово, поддерживают только Internet Explorer 4 и выше. (пример 1, пример2, пример3).
При автоматизации таких сайтов, возникает проблема: как можно быстро убедится в том, что новый CSS селектор работает, не запуская тесты?
Как оказалось, в Internet Explorer такая функциональность по отладке CSS селекторов – есть.
Достаточно в IE Developer Tools (F12) в поле поиска задать селектор после символа “@”:
@a[onclick*='Home/login.asp']
вторник, сентября 18, 2012
Цитаты про тестирование
"Я вижу резолвленные баги но не ощущаю ожидаемого результата"
© наш QA
Лежали всем офисом.
http://juick.com/MaEcTPo/1230654
Писать тесты — это как писать код. Только тесты.
http://juick.com/V1ncE/1857174
Тем кто считает, что юнит тесты не могут работать с базой: если вы тестируете связку человек+лопата, и знаете, что лопата в порядке, а тест падает. Где будете искать ошибку?
http://juick.com/korchasa/1425218
В который раз сталкиваюсь с заблуждением "тесты == автоматизированные тесты". Если вы проверяете результаты работы своих скриптов, то вы уже тестируете. А уж автоматизировать этот процесс или нет, второй вопрос.
http://juick.com/korchasa/1232004
Блин, без BDD я не знаю, что сейчас надо сделать. о_о
http://juick.com/neFormal/1857653
"Humans make mistakes; programs (if coded correctly) do not." — Rails 3 in Action.
Интересно, время подтвердит эту гипотезу?
http://juick.com/wyldrodney/1854703
Тестирование и правда облегчает жизнь. Причем невероятно сильно. =)
http://juick.com/demiazz/1450005
Меня тут спросили, как я пошучу над коллегами первого апреля. А у нас какбе релиз. Первого. А я какбе тестер. Столько клевых идей!
А как бы пошутили вы?
http://juick.com/kisinkaito/602452
Узнал сегодня в институте 3 главных правила тестирования программы: 1) Тестирование легко начать, но сложно закончить. 2) С ростом числа обнаруженных ошибок увеличивается вероятность обнаружения новых. 3) Никогда не тестируйте свою программу сами. Пусть за вас её тестирует другой программист.
До сих пор не верится, что лектор говорил это на полном серьезе. Хотя с этими пунктами тяжело поспорить.
http://juick.com/ubuntard/521783
Памятка по приоритетам для QA:
blocker/highest — падение игры, нерабочая основная механика, ошибки, приводящие к невозможности дальнейшего игрового прогресса
critical/high — баг основной механики, нерабочая вторичная механика, ошибки, приводящие к невозможности дальнейшего игрового прогресса без перезапуска
major/normal — баг вторичной механики, ошибки визуализации или анимации, ошибки сохранения прогресса с предыдущей сессии
minor/low — ошибки позиционирования элементов, нелогичность поведения, перепутанные картинки/звуки
trivial/lowest — орфография(её проверяют в последний момент сразу всю), пожелания/заметки
Для багтрекеров с раздельными полями "важность" и "приоритетность"(например, mantis) это всё относится только к "важности", "приоритет" выставляется дополнительно в зависимости от пожеланий менеджмента.
Потеря душевного равновесия — побочный эффект работы куа инженера.http://juick.com/estet/507684
Багзилла как зеркало души тестировщика...http://juick.com/estet/97844
суббота, сентября 15, 2012
Между (QA) Quality Assurance, (QC) Quality Control и тестировщиками – разницы нет
Нас, тестировщиков, по-прежнему продолжают называть – QA (Quality Assurance), хоть и многие из нас с пеной у рта доказывают, что QA – это не человек, а процесс. Что мы тестировщики, не пишем код, а, следовательно, не можем обеспечить его качество. Это возможно только косвенно, путем предоставления информации о текущем качестве продукта и другими, но опять же, косвенными методами.
Но, все равно нас продолжают так называть. Все говорят «отдали в QA». Нам нужен новый QA.
Не видите разницы между QA, QC и тестировщиками?
Так значит и между:
Программистами, разработчиками и кодерами;
HR’ами и рекрутерами;
Менеджерами, начальниками и руководителями;
Тимлидами и скрам мастерами;
Эникейщиками и сисадминами – разницы тоже нет!
- Quality Assurance
- Quality Assistant
- Quality Analyst
- Quality Auditor
- Quick Assistance (support)
- Quality A…
среда, сентября 12, 2012
Как твитнуть из Google Формы. Руководство-детектив
– И да, и нет. Гугл-форма была началом его пути, но в твиттере он оказался благодаря рецепту в http://ifttt.com в котором все элементы rss ленты одного из блогов на Blogger попадают в твиттер
– Стоп, а кто тогда опубликовал этот пост с хомяком в Blogger (http://dztwitter.blogspot.com/)?
– Известно, что в настройках Blogger можно разрешить публикацию через email. И по горячим следам, мы выяснили, что этот хомяк запостился именно так. Это можно настроить вот здесь:
Настройки -- Электронная почта и мобильные устройства
– Значит хомяка прислали по имейлу… Хм… странно, кто же способен на такое?
– На это способна обычная Гугл-форма, в которой есть пользовательский скрипт привязаный к событию отправки формы. Как только новая форма отправляется – запускается вся цепочка: на специальный почтовый адрес для публикации в блоггер – отправляются данные формы. Ifttt читает RSS блога – и постит новые элементы в твиттер.
Добавить новый пользовательский сценарий в Google Forms можно через Tools - Script Editor
В самом редакторе необходимо ввести следующий код, и привязать его к триггеру отправки формы. Это делается через меню Resources – Current Script Triggers.
Вот и все. Вот так хомяк случайно попал в форму, прошел по десятку серверов и оказался в твиттере.
– Но, зачем использовать гугл формы для хранения Хомяков?
– Дело в том, что Властелину Хомяков очень удобно парсить данные Google Docs для создания готового для публикации HTML с собранными ссылками. Но, Властелин очень хотел, чтобы при добавлении новой ссылки, она сразу же попадала в твиттер. А копи-пастить руками каждый раз Властелин не хотел, потому что он очень ленивый.
Кроме того, многие люди используют Google Forms для регистрации даже на очень большие конференции. А мгновенного автоматического подтверждения регистрации у многих нет.
Но, теперь то вы знаете, что это вполне реализуемо.
function onFormSubmitted() { var sheet = SpreadsheetApp.getActiveSheet(); var rows = sheet.getDataRange(); var numRows = rows.getNumRows(); var values = rows.getValues()[numRows-1]; // Последняя запись message = values[1] + ": " + values[2] + " " + values[4]; MailApp.sendEmail("dzhariy.!!!SALT!!!@blogger.com", "", message); }
вторник, сентября 11, 2012
Бесплатные Вебинары по Selenium Webdriver с самого начала
![]() |
Tarun Kumar, автор Вебинаров по Selenium |
Обучение ведется на английском языке, но, произношение тренера четкое и будет понятным для русскоязычных слушателей.
Инструкция для просмотра:
- Зайдите на страницу трейнингов: http://www.seleniumtests.com/p/free-selenium-training.html Выберете интересующий вебинар – вы перейдете по ссылке на советующий пост
- В посте найдите ссылку на anymeeting и перейдите на этот сайт
- На странице ввода пароля, введите – seleniumpassword
- Имя и почту можно указать любые
Выглядеть это должно так:
На странице тренингов вы можете подписаться на следующие вебинары.
Все права на упомянутые материалы принадлежат их автору – Tarun Kumar. При возникновении вопросов – свяжитесь с ним лично.
среда, августа 15, 2012
Гик-пост непонимание. Работа в Windows
Я реально не понимаю людей, которые не пользуются Far Manager. Работа с командной строкой для них кажется сущим адом.
Я не понимаю людей, которые включают UAC и выставляют почти самый высокий уровень защиты. Это реально еще мало кого спасало от вируса, а лишних кликов –прибавляет.
Я не понимаю людей, которые не могут выучить те 9 программ, которые можно быстро запустить через [Windows]+R: appwiz.cpl, services.msc, winword, excel, mspaint, notepad, inetmgr, eventvwr.msc . Угадайте, что каждая из них запускает?
Я не понимаю тех людей, которые для запуска Windows Task Manager жмут Ctrl+Alt+Del и выбирают его из меню, вместо нажатия Ctrl+Shift+Esc
понедельник, июля 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 файлов
День *.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
Бат-файлы позволяют комбинировать полезные команды, как кирпичики Лего, при этом обеспечивая их взаимодействие.
Например, за один клик, я могу:
- Выкачать последнюю версию исходиников проекта из системы контроля версий
- Сбилдать исходники при помощи msbuild
- Обновить 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 страниц. Да вы можете прочитать ее уже сегодня вечером.
Скачать (бесплатно без смс и регистрации :) книгу можно со страницы автора.
суббота, июля 07, 2012
Юмор в тестировании
- Менеджер проекта – это человек, который считает, что 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:
- Удобный
- Позволяет редактировать параметры кодирования видео
- Позволяет записывать регионы
Минусы:
- Ограничение: бесплатно можно записать только 10 минут, но этого вполне хватает для записи воспроизведения багов (делая паузы при записи где это необходимо)
Плюсы FFmpeg + Screencapturer
- Бесплатный без ограничений
- Потребляет (субъективно) меньше системных ресурсов
- Преобразовывает видео в нужный формат уже во время записи видео
- Позволяет задать множество параметров
Минусы:
- Сложен в настройке, но используя VirtualDub или WinFF, можно упростить процесс подбора командной строки
CamStudio плюсы:
- Пишет как полный экран, так и регионы
- Удобен в использовании
- Нет ограничений. Бесплатный.
Минусы:
- Не поддерживает расширенную настройку сжатия видео. Для сжатия вам придется использовать тот же VirtualDub/FFmpeg/WinFF либо другой софт
- Субъективно съедает больше ресурсов системы при записи видео
Редактирование видео и добавление аннотаций после записи:
В данный момент, я использую Windows Movie Maker. Не все устраивает, но лучшей альтернативы я еще не нашел.
Аннотирование видео в момент записи:
Epic Pen – замечательный инструмент. Позволяет рисовать на рабочем столе прямо во время записи, так что процесс аннотирования происходит в реальном времени, и вы не тратите время на пост-обработку
Ну, и скриншоты
Greenshot – мой выбор. Простой, бесплатный инструмент со всеми необходимыми возможностями.
среда, мая 02, 2012
Бесплатный Microsoft Expression Encoder 4 для записи багов
Я ни в коем случае не отказываюсь от дальнейшего использования Сamstudio для записи скринкастов продолжительностью более 10 мин.
четверг, апреля 26, 2012
Мега полезный и интересный доклад: Advanced Web Debugging with Fiddler
Сегодня я посмотрел мега полезный доклад Mehdi Khalili: Advanced Web Debugging with Fiddler.
Если Вы еще не с Fiddler, или использовали из всего его функционала только табу «Inspectors» – я настоятельно рекомендую посмотреть этот доклад.
Мехди делится множеством полезных советов по использованию инструмента. И говорит, что Fiddler’ом пользуются даже домохозяйки, далекие от IT и тестирования. Да, да… для накрутки рейтинга в Веселых Фермах :)
Более детально о докладе можно прочитать тут:
http://www.mehdi-khalili.com/advanced-web-debugging-with-fiddler
Кому понравился этот доклад, давайте устроим небольшой флэшмоб, и твитним что-то следующего характера:
Спасибо / Spasibo / Thanks @MehdiKhalili for your great presentation on Advanced Web Debugging with Fiddler mehdi-khalili.com/advanced-web-d…
— dzhariy (@dzhariy) April 25, 2012
Только не думайте что я уж такой крутой автор-опенсорщик, нет, в основном это были форки чужих репозиториев. В любом случае, процесс удаление одного репозитория очень болезненный. На видео видно как это происходит.
Для экономии кучи времени, я решил полуавтоматизировать этот процесс при помощи Fiddler.
среда, апреля 25, 2012
ATDD и Specification by Example с примерами на Java
Очень классная презентация, речь в которой идет о процессах ATDD, Specification by Example, рассматриваются примеры автоматизации, в том числе паттерн PageObject. Рассматривается инструмент отчета по тестированию Thucydides и многое другое.
http://irishdev.com/Home/Events/614-Thucydides--Web-Testing-for-Devs.html
среда, апреля 11, 2012
Скринкаст (запись рабочего стола) при помощи ffmpeg под Windows
Такая видеозапись может рассказать больше лога + из видео можно сделать скриншоты для бага.
Прикрутить эту возможность к своим автотестам я планирую в ближайшее время, а пока хотел бы поделится информацией, как же все таки записать скринкаст при помощи ffmpeg.
Во-первых, необходимо скачать сам 32-битный FFmpeg http://ffmpeg.zeranoe.com/builds
Затем установить Microsoft Visual C++ 2010 SP1 Redistributable Package (x86): http://www.microsoft.com/download/en/details.aspx?id=8328 И самый важный ингредиент: виртуальный драйвер устройства для захвата экрана: http://sourceforge.net/projects/screencapturer
А теперь просто запускаем команду:
ffmpeg -f dshow -i video=screen-capture-recorder -r 24000/1001 -q 1 out.avi
И вуаля, после того как вы завершите выполнение команды, в файле out.avi будет находиться запись всех действий на рабочем столе.
Так можно даже игрушку записать без особых тормозов:
P.S.: Скринкасты мануальных тестов я записываю при помощи CamStudio и конвертирую при помощи WinFF.
Англоязычные посты по этой теме:
FFmpeg, Screencast Windows (источник)
воскресенье, апреля 08, 2012
Бесплатный онлайн курс для начинающих и продолжающих тестировщиков
А парадокс в том, что на родине и на просторах СНГ о нем очень мало кому известно. Конечно, же, есть узкие круги форума govorimpro.us… но, по-моему это незаслуженно мало.
Почему я так считаю? Очень просто. У Михаила есть бесплатный онлайновый курс для начинающих тестировщиков, прослушав который, на мой взгляд, уже можно искать первую работу хоть в Украине, хоть в России, хоть в Штатах.
Ссылка на курс по тестированию ПО:
Онлайн курсы/школа тестировщиков программного обеспечения
УЧЕБНЫЙ ПЛАН:
- Введение: История возникновения профессии, в чем ее суть, наш курс
- Тестирование Graphic User Interface в Windows и ВЕБ приложениях
- Учебный проект: ResumeBuilder. Спецификация, тестирование Graphic User Interface, bug reports
- Учебный проект: ResumeBuilder. Функциональное тестирование, Bug Reporting rules
- Bug Tracking Databases: Elementool. bug reporting form; creating custom views; bug life cycle
- Документация в тестировании ПО. Тест План, Тест кейс, Тест Дизайн.
- Учебный проект Energy-Telecom: требования, назначение, GUI и функциональное тестирование
- Energy-Telecom project: Testing WEB forms
- Американское резюме - формат, структура, типичные ошибки при написании
- Сопроводительное письмо и вопросы на собеседовании
Мое любимое видео:
вторник, апреля 03, 2012
CukeUp!: Matt Wynne on Refuctoring Your Cukes
Именно эту проблему поднимает Matt Wynne в своем докладе Refuctoring Your Cukes и дает полезнейшие советы, как применяя простые практики ре-Fuck-торинга сохранить свое рабочие место.
CukeUp!: Matt Wynne on Refuctoring Your Cukes from Dmitry Zhariy on Vimeo.
Refuctoring Your Cukes
Cucumber aims to help business stakeholders and developers collaborate more effectively. That's great if you care about helping your project succeed, but what about the rest of us who just want to hang on to our damn jobs? In this talk you'll learn how to use Mortgage-Driven Development (MDD) to destroy the readability and value of your Cucumber tests, so that you can protect your position as the only person who understands what the system does
Source: http://skillsmatter.com/podcast/agile-testing/refuctoring-your-cukes
Более подробно о докладе: CukeUp!: Matt Wynne on Refuctoring Your Cukes
понедельник, апреля 02, 2012
Specification by Example: A love story (Alister Scott)
http://kondoot.com/videos/224a1105b17
Слайды этого и других докладов находятся здесь:
https://github.com/watir/watir-bazaar/wiki/Presentations
А ценность доклада в том, что Алистер показывает какие ошибки допускают люди на ранних стадиях создания спецификации с примерами. Допустим, в некотором австралийском интернет магазине решили добавить фичу связанную с бесплатной доставкой товаров. Что должно получится я не знаю, но вижу то, что поведение системы более чем детально расписано:
(Осторожно, многобукофф. Если вы не хотите это читать, прошу проскроллить досюда)
Feature: Beautiful Tea Shipping
Scenario: Free shipping in Australia
Given I am on the Beautiful Tea homepage
When I search for ‘Byron Breakfast’ tea
Then I see the page for ‘Byron Breakfast’ tea
When I add ‘Byron Breakfast’ tea to my card
And I select 10 as the quantity
Then I see 10 x ‘Byron Breakfast’ tea in my card
When I select ‘Check Out’
And I enter my country as ‘Australia’
Then I see the total including GST
And I see that I am eligible for free shipping
Scenario: No free shipping outside Australia
Given I am on the Beautiful Tea homepage
When I search for ‘Byron Breakfast’ tea
Then I see the page for ‘Byron Breakfast’ tea
When I add ‘Byron Breakfast’ tea to my card
And I select 10 as the quantity
Then I see 10 x ‘Byron Breakfast’ tea in my card
When I select ‘Check Out’
And I enter my country as ‘New Zealand’
Then I see the total without GST
And I see that I am eligible for free shipping
Scenario: No free shipping in Australia
Given I am on the Beautiful Tea homepage
When I search for ‘Byron Breakfast’ tea
Then I see the page for ‘Byron Breakfast’ tea
When I add ‘Byron Breakfast’ tea to my card
And I select 1 as the quantity
Then I see 1 x ‘Byron Breakfast’ tea in my card
When I select ‘Check Out’
And I enter my country as ‘Australia’
Then I see the total including GST
And I see that I am not eligible for free shipping
С трудом дочитав это до конца, я понял, что есть какая-то разница между Австралийцами и Новозеландцами. И то, что Австралийцы не хотят доставлять своим соседям из Новой Зеландии чай ‘Byron Breakfast’ на халяву. Дискриминация просто налицо. Кроме того, оказывается что мне, жителю Австралии, бесплатная доставка положена, только если я закажу 10 упаковок чая ‘Byron Breakfast’.
И не положена, если я закажу одну упаковку. А если 5?
Кроме того, мне абсолютно непонятно, почему я должен платить некий GST, а эти ссс… соседи из Новой Зеландии его не платят. А что если я сделаю заказ из Украины? Я буду платить этот GST? (фиг его знает, что это такое, напридумывают тут аббревиатур)
Но исправленный пример для той же самой фичи просто открывает глаза:
Feature: Beautiful Tea Shipping CostИ мне, как человеку с улицы, как-то стает более ясна общая картина задуманной фичи.
Scenario: Calculate GST status and shipping rate
- Australian customers pay GST
- Overseas customers don’t pay GST
- Australian customers get free shipping for orders $100 and above
- Overseas customers all pay the same shipping rate regardless of order size
Given the customer is from <customer’s country>Examples:
When the customer’s order totals <order total>
Then the customer <pays GST>
And they are charged <shipping rate>
customer’s country pays GST order total shipping rate Australia Must $99.99 Standard Domestic Australia Must $100.00 Free New Zealand Must Not $99.99 Standard International New Zealand Must Not $100.00 Standard International Zimbabwe Must Not $100.00 Standard International
Во-первых из заголовка я понимаю, что есть некоторые законы, которые заставляют платить этот GST только австралийцев. Во-вторых… ну какой нафиг чай? Речь вообще идет о сумме заказа. Заказал на 100 баксов и более – получи бесплатную доставку, если ты австралиец. Заказал на 10 баксов – плати за доставку.
В первом варианте описания фичи было откровенное нечитабельное месиво из чая, кнопки Check Out, GST и австралийцев. За деревьями не видно леса. Второй вариант короче, но четко описывает фичу и дает хорошие примеры. Теперь нам не нужно переписывать тест-кейсы всякий раз когда цена на чай падает.
Кроме того, я уверен что автоматизировать тестирование этой фичи теперь стало еще проще по сравнению с предыдущем вариантом.