среда, января 25, 2012

+3 Презентации по теме «Спецификация через пример» (Specification by example)

Сергей Шишкин: Specification by Example and a journey towards it

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


Steve Rogalsky: Moving towards zero defects with Specification by Example

Эта презентация содержит хорошие примеры спецификации с примерами. Есть несколько хороших слайдов описывающих сам процесс.

Specifications For Enterprise Testing

На мой взгляд, это самая лучшая презентация найденная сегодня. Слайды информативны. Описывают проблемы обычного процесса разработки ПО. Показывают какое решение предлагает Specification By Example. Показывают сам процесс внедрения и работы по Спецификации через пример. И содержат несколько полезных ссылок на существующие инструменты, помогающие в работе со Specification by Example.

воскресенье, января 22, 2012

Специализированный поиск по Test Automation

Я уверен, что многие из нас, братьев и сестер автоматизаторов, нередко вбивали в строку поиска Google такие фразы как test automation framework, selenium или даже ui, подразумевая UI Test Automation, но, получали не совсем релевантные результаты от Google.

Организация Automated Testing Institute, недавно представила новый пользовательский поиск Google специализированный по поиску материалов по автоматизации тестирования:
Google Automation




И действительно, вводя запрос «ui» – мы получаем материалы по UI Test Automation, а вводя в запрос Cucumber – первой ссылкой будет доклад нашего земляка:
Dima Kovalenko: Selenium and Cucumber
И без всяких левых огурцов в поисковой выдаче!

пятница, января 20, 2012

Gojko Adzic: Long term value of acceptance tests

Еще один доклад Гойко Аджича про тесты, их поддержку и решения проблемы между новыми изменениями в коде и поддержки изменений в тестах.


Long term value of acceptance tests from JavaZone on Vimeo.

вторник, января 17, 2012

Сова-тестировщик

Обзор Specification by Example - как техники сбора требований

Докладчик


Василий Нетахата


Бизнес аналитик
UBS
http://www.linkedin.com/profile/view?id=6384617

Краткое описание доклада

  1. Specification by example – преимущества и уместность использования инструмента;
  2. Взаимосвязь Бизнес примеров, требований и приемочных тестов;
  3. Acceptance criteria – как точка общего понимания для бизнеса и технических специалистов.

Видео:

Specification by Example from Dmitry Zhariy on Vimeo.

понедельник, января 16, 2012

Challenging requirements - Gojko Adzic

Gojko Adzic (Гойко Аджич) – это тот человек, которого можно и послушать и посмотреть и почитать. В этом посте я хочу поделиться видео его выступления, где он рассказывал о необходимости докопаться выяснить истинную проблему заказчика. Заказчики – это люди бизнеса. Они знают, как заработать деньги, но очень плохо разбираются в IT. Так почему же они обычно не спрашивают нас как лучше решить их бизнес-проблему, а приходят к нам с уже готовым решением?
Об этом и многом другом Гойко Аджич рассказывает в своем зажигательном докладе.

Challenging requirements - Gojko Adzic from devtraining.ee on Vimeo.


И, на сайте Gojko Adzic http://gojko.net/ вы можете найти значительное количество статей и презентаций.

пятница, января 06, 2012

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

Мултямедия (подкасты, слайды, презентации)
  • Англоязычный подкаст Dot Net Rocks вышел с участием Jim Holmes. В которым Джим рассказывает о своих трудовых буднях автоматизации тестирования Jim Holmes Tests Everything 
  • На 22-м дне своего блог-марафона по тестированию, Jim Holmes пишет занимательный пост о том, как наладить продуктивную работу в команде и как тестирование помогает и разработчикам и QA на примере из собственного опыта: 31 Days of Testing—Day 22: Why Collaboration Matters (A Real World Example)

Размышлизмы и практика
  • Сводная статья о способах управления исследовательским тестированием: There are Plenty of Ways to Manage Exploratory Testing. В блоге автора каждый из подходов расписан более детально. 

Сообщество (интриги, сплети, таблоиды, эпатаж):
  • Алексей Лупан эпатировал весь мир тестирования своим постом: Не задави в себе подростка, в котором он рассуждает о пользе и необходимости сообществ тестировщиков и о том, что если бы не Канбан, то им бы и поговорить не было о чем. 
  • И на бушующей волне креатива Алексей выдал не менее интересный пост о том, как тестировщику найти работу: Работу ищите до обрящизма
  • Наталья Руколь  мыслетрекнула мотивирующую статью о том Как сделать тестирование интересным?.  По ходу чтения статьи, я не удержался чтобы мотивирующие не протроллить Наталью на запись видокаста по этой теме.  Ее ответ был многозначителен, но, скорее всего положительным. 

вторник, января 03, 2012

WatiN, Selenium и IsDisplayed

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

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

Пока что я правильного решения не нашел. Но, куда копать знаю.
Первое что пришло на ум, это реализовать проверку стиля display и visibility для элемента. И в последствие оказалось, что стиль, например, для visibility может быть visible, hidden и… inherit…
А inherit означает что нужно спросить родительский элемент о его стиле, и если и тот поморозится ответить, и скажет что inherit, то приодеться подниматься по дереву DOM все выше и выше.
В общем, код расширения для класса Element получился следующий:

public static string GetElementVisibility(Element element)
        {
            string visibilityProp = element.Style.GetAttributeValue("visibility");
            if (element.Style.GetAttributeValue("visibility").Equals("inherit", StringComparison.OrdinalIgnoreCase))
            {
                return GetElementVisibility(element.Parent);
            }
            else
            {
                return visibilityProp;
            }
        }


        public static bool ExistsAndVisible(this Element element)
        {
            bool elementExists = element.Exists;
            if (elementExists)
            {
                bool hasStyleDisplayNone = element.Style.Display.Equals("none", StringComparison.OrdinalIgnoreCase);
                string visibilityProp = GetElementVisibility(element);
                bool hasStyleVisibilityHidden = visibilityProp.Equals("hidden", StringComparison.OrdinalIgnoreCase);

                elementExists = !hasStyleDisplayNone && !hasStyleVisibilityHidden;
            }
            return elementExists;
        }

На сколько я понял, автор библиотеки WatiN Extensions тоже сталкивался с подобной проблемой, и предложил следующею реализацию, которая, к сожалению, не подходит в моем случае.
ElementExtensions:

public static bool IsVisible<TElement>(this TElement element, bool assert = false, bool assertExpectedValue = true) where TElement : Element
        {
            var result = element.Style.Display.ToLower() != "none";

            if (result && Settings.MaxVisibilitySearchScope > 0)
            {
                var parent = element.Parent;

                for (var i = 0; i < Settings.MaxVisibilitySearchScope; i++)
                {
                    if (!result || parent == null)
                    {
                        break;
                    }

                    result = parent.Style.Display.ToLower() != "none";
                    parent = parent.Parent;
                }
            }

            if (assert)
            {
#if !Xunit
                Assert.AreEqual(assertExpectedValue, result, string.Format("Element of type '{0}' is {1}visible", typeof(TElement).Name, assertExpectedValue ? "not " : string.Empty));
#else
                Assert.True(assertExpectedValue == result, string.Format("Element of type '{0}' is {1}visible", typeof(TElement).Name, assertExpectedValue ? "not " : string.Empty));
#endif
            }

            return result;
        }

И, сегодня я нашел, что Selenium умеет определять состояние отображения элемента страницы.

Код нашел, но теперь нужно найти, откуда он был сгенерирован:

воскресенье, января 01, 2012

Рекомендация: ifttt.com: If this that that и wordnik.com

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

If This Then That (ifttt)

Я давно заметил, что делаю множество мелких рутинных действий, отбирающих у меня множество времени. К примеру, после того как я опубликую эту заметку, я должен создать новый твит с ссылкой на пост в blog.zhariy.com. Я захожу на погодные сайты, чтобы посмотреть будет ли завтра дождь/снег, или мне приходится читать огромную RSS ленту нескольких крупных сайтов просто чтобы найти публикации с определенными словами.
Как оказывается, множество таких рутинных операция я могу автоматизировать при помощи сервиса: ifttt.com


С помощью удобного и простого интерфейса создаются нужные триггеры, на срабатывание которых можно завязать множество самых различный действий. Более подробно о сервисе можно прочитать в следующей заметке: If This Then That (ifttt). Мэшап для связывания веб-сервисов

Wordnik
wordnik.com – это словарь с определениями английских слов и словосочетаний по самый популярным словарям с показом искомых слов в примерах, твитах и картинках.
Слова можно добавлять в списки и прослушать их произношение.
Я понимаю, что подобных сервисом множество, но именно этот я нахожу удобным.