Как стать автором
Обновить

29 июля: первый митап Х5 по тестированию

Время на прочтение 2 мин
Количество просмотров 1K
Блог компании X5 Tech Тестирование IT-систем *IT-стандарты *

Приглашаем всех на первй митап Х5 по тестированию. Он пройдет 29 июля в онлайн-формате. Поговорим про разные виды тестирования, затронем актуальные темы, полезные всем членам команды — от тестировщика и разработчика до менеджера проекта и аналитика. Эксперты из Х5 Group, Home Credit Bank и Райффайзенбанк поделятся опытом и будут рады ответить на ваши вопросы.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

Экстремальное программирование, знакомство с Behavior Driven Development и RSpec

Время на прочтение 4 мин
Количество просмотров 40K
Тестирование IT-систем *

Теория


Для начала, давайте разберемся, что же такое Behavior Driven Development(в дальнейшем BDD) и чем данная техника отличается от Test-Driven Development(в дальнейшем TDD)

Разрабо́тка че́рез тести́рование (англ. test-driven development) — техника программирования, при которой модульные тесты для программы или её фрагмента пишутся до самой программы (англ. test-first development) и, по существу, управляют её разработкой. Является одной из основных практик экстремального программирования.
Читать дальше →
Всего голосов 65: ↑55 и ↓10 +45
Комментарии 36

RSpec. Часть #1: создаем тесты для модели

Время на прочтение 3 мин
Количество просмотров 37K
Ruby on Rails *
Как и обещал, я начинаю цикл статей, на тему RSpec.

В этой статье, я постараюсь, подробно рассказать, как писать тесты для моделей в Ruby on Rails. Если вы уже знакомы с rspec_on_rails, поправьте и дополните меня, если что то не так. Помните, что я изучаю Rspec вместе с вами и могу где то ошибаться.
Читать дальше →
Всего голосов 20: ↑16 и ↓4 +12
Комментарии 12

ALT.NET, Питер, Четверг, 19 марта, 19-00, Компьютерная академия SoftJoys

Время на прочтение 1 мин
Количество просмотров 878
.NET *
Не трудно догадаться, что многие разработчики стремятся к совершенствованию в своём любимом деле (разве нет?). Многие из вас постоянно слышат о новых для себя технологиях и методологиях разработки программного обеспечения, однако, не все находят время и стимул для того, чтобы ознакомиться с ними (примером тому являются методологии TDD, BDD, DDD, ORM, DSL, AOP, Design Patterns и т.д., а так же сопутствующие им инструменты).
Читать дальше →
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 3

Третья встреча Петербургской группы ALT.NET

Время на прочтение 1 мин
Количество просмотров 740
.NET *
Третья встреча Петербургской группы ALT.NET, посвященная разработке под ASP.NET MVC, пройдет в четверг, 2го Апреля в 19:00.
Читать дальше →
Всего голосов 5: ↑3 и ↓2 +1
Комментарии 0

Пример практики BDD при работе со Specter Framework

Время на прочтение 4 мин
Количество просмотров 2.3K
.NET *
specter-log Specter – инфраструктура для составления объектно-поведенческих спецификаций для .NET. Он предоставляет возможности для обеспечения разработки, руководствуясь поведением системы (BDD), требуя от разработчиков написания исполняемой спецификации для объектов перед написанием самих объектов. Технически это ни чем не отличается от разработки по средствам тестирования (TDD), хотя различия в форме написания снимают психологический барьер для написания “тестов” для кода, которого ещё не существует. Есть множество проектов для различных платформ, реализующих данную идею (К примеру RSpec для Ruby, NSpec для .NET. Подробнее о средах здесь).
Specter использует возможности мета-программирования языка Boo (CLR .NET) для написания неплохо читаемых спецификаций.
Читать дальше →
Всего голосов 18: ↑15 и ↓3 +12
Комментарии 6

BDD с помощью Cucumber

Время на прочтение 3 мин
Количество просмотров 104K
Ruby *
Если вы привыкли сначала писать код, а потом его тестировать, то с BDD такой подход совсем не уместен. Сила BDD в том, что он помогает вести разработку начиная со стадии оформления ТЗ. Для BDD это список свойств (фич), который уместно писать вместе с заказчиком.

Но самое главное, что по этому же списку происходит автоматическое тестирование проекта. Инструмент тестирования (в нашем случае это Cucumber) методично пройдет по вашему перечню и дотошно проверит реализацию каждой фичи.
Читать дальше →
Всего голосов 34: ↑30 и ↓4 +26
Комментарии 21

Языки предметной области Domain-Specific Languages (DSL)

Время на прочтение 1 мин
Количество просмотров 2.6K
.NET *

Что это?


Это некоторая форма компьютерных языков, разрабатываемых для специфичной предметной области. Это то, что позволяет вам (разработчикам ПО) лучше взаимодействовать с носителями “доменных знаний”. А так же позволяет более лаконично оформлять бизнес-логику. Это то, что представляет собой, к примеру, SQL, Linq, многое из синтаксиса Ruby On Rails.
Читать дальше →
Всего голосов 18: ↑10 и ↓8 +2
Комментарии 3

Bug Driven Development

Время на прочтение 1 мин
Количество просмотров 3.1K
Чулан
Разработка основанная на багах. Баги поступают от клиентов, от тестировщиков. Баги поступают даже от своей собственной программы, когда мы начинаем деБАЖить (deBUG). Где выход и что делать. Одна из таблеток — TDD.

см. видеокаст — rutube.ru/tracks/2366112.html

Интересно узнать ваше мнение на такой способ разработки. Так же дайте отзыв по качеству и компановке материала, чтобы в следующий раз было лучше :)
Всего голосов 5: ↑2 и ↓3 -1
Комментарии 6

Храните ваши клятвы; Отношения с Node

Время на прочтение 2 мин
Количество просмотров 1.2K
Node.JS *
Перевод
Клятвы могут быть прекрасны. Алексис Селлир, сыскавший славу за разработку «LESS» (и «less.js»), начинает становиться звездой Open Source, выпустив в свет Vows, — каркас для разработки на Node.JS, управляемой асинхронным поведением.

image
Читать дальше →
Всего голосов 36: ↑20 и ↓16 +4
Комментарии 23

Эволюция юнит-теста

Время на прочтение 5 мин
Количество просмотров 27K
TDD *
Много слов сказано о том, как правильно писать юнит-тесты, и вообще о пользе TDD. Потом ещё и какое-то BDD замаячило на горизонте. Приходится разбираться, что из них лучше и между ними какая разница. Может, это и есть причина, почему большинство разработчиков решили не заморачиваться и до сих пор не используют ни того, ни другого?

Коротко: BDD — это дальнейшее развитие идей TDD, стало быть, его и надо использовать. А разницу между TDD и BDD я попробую объяснить на простом примере.

Рассмотрим 3 ревизии одного юнит-теста, который я нашёл в одном реальном проекте.

Попытка номер №1


Первая версия этого юнит-теста была такой:
Читать дальше →
Всего голосов 88: ↑84 и ↓4 +80
Комментарии 68

PHP + BDD = Behat, или сказ о чудо-библиотеке

Время на прочтение 8 мин
Количество просмотров 38K
PHP *
Из песочницы
Каждый, кто всерьез занимался разработкой на Ruby, знает про замечательный гем Cucumber. Вкратце — это библиотека для автоматизированного тестирования, заточенная под BDD. Подробнее можно почитать в топике хабраюзера dapi, а еще лучше посмотреть подкаст от Райна Бэйтса. Основная прелесть «огурца» состоит в том, что он позволяет писать тесты на понятном человеку языке, и даже не обязательно английском. Выглядит это так:

Feature: Addition 
  In order to avoid silly mistakes 
  As a math idiot 
  I want to be told the sum of two numbers 

  Scenario: Add two numbers 
    Given I have entered 50 into the calculator
      And I have entered 70 into the calculator
     When I press add
     Then The result should be 120 on the scree

Благодаря Cucumber я подсел на BDD на рельсах. Но вот на PHP, с которым приходится работать основную часть времени, отношения с BDD как-то не сложились. И в первую очередь из-за отсутствия достойного инструментария. Но однажды судьба завела меня на страницу библиотеки Behat (написанной, кстати говоря, хабраюзером everzet). И на меня свалилось счастье…
Читать дальше →
Всего голосов 39: ↑36 и ↓3 +33
Комментарии 42

Rails: Хватит отмазываться, начинаем BDD-ить!

Время на прочтение 9 мин
Количество просмотров 31K
Разработка веб-сайтов *
Из песочницы

Кто здесь?


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

11:24:21 PM Michael: ну хз, надо пробовать
11:24:24 PM Michael: наверное так лучше
11:24:27 PM Michael: даже я думаю наверняка
11:24:36 PM Michael: но пока меня че-то останавливает
11:24:38 PM Michael: лень наверное :)

Знакомо? «Не хочется разбираться? Нет времени?» Тогда читаем дальше. В статье расскажу, как настроить свое любимое рельсовое окружении на разработку с подходом BDD и начать новую жизнь (опционально).
Поехали!
Всего голосов 88: ↑77 и ↓11 +66
Комментарии 38

BDD: Адаптация языка Gherkin для русскоязычных проектов в Asp.Net

Время на прочтение 5 мин
Количество просмотров 30K
Разработка веб-сайтов *
Из песочницы
Я напишу, как можно адаптировать популярный язык написания тестов Gherkin для русскоязычных проектов без использования сторонних библиотек, а также поделюсь своим опытом использования этого подхода.
Читать дальше →
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 8

Ciklum Minsk hosts WP7/Silverlight User Group Meeting

Время на прочтение 1 мин
Количество просмотров 1.2K
Блог компании Ciklum
28 мая белорусское сообщество Silverlight / Windows Phone разработчиков соберется в нашем минском офисе.

Организаторы стремятся сделать первую встречу интересной и плодотворной, поэтому приглашают разработчиков, имеющих опыт работы с Silverlight Windows Phone, XNA технологиями, кто готов участвовать в дискуссиях, представлять своё видение проблем и т.д.
Читать дальше →
Всего голосов 23: ↑17 и ↓6 +11
Комментарии 6

Установка и настройка функционального тестирования в Symfony2 с помощью Behat и Mink

Время на прочтение 6 мин
Количество просмотров 15K
TDD *
Из песочницы
Идея о том, что веб-приложения написанные на PHP нуждаются в тестировании, не нова и постепенно входит в повседневную практику разработчиков. PHPUnit стал стандартом тестирования PHP приложений, в том числе и в новом фреймворке Symfony2. В установке из symfony-standard в AcmeDemoBundle для тестирования контроллера используется именно он1. Я хочу рассказать о альтернативном пути тестирования функционала, с применением Behat и Mink, и описать подробности процесса установки и тестирования.
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 33

Request spec in Action

Время на прочтение 7 мин
Количество просмотров 5.7K
Ruby on Rails *
Тестирование стало неотъемлемой частью любой разработки программного продукта, будь то приложение под настольный компьютер, мобильное устройство или web. Уже никто не отрицает важность это этапа и последствий, которые принесет его отсутствие. Среди них большое время на проверку каждого элемента (страницы), и неожиданные сюрпризы в поведении продукта, увеличение затрат на исправление программы. Принцип написания тестов достаточно прост – «желтый цвет», «красный цвет», «зеленый цвет», рефакторинг. Где желтый цвет – это не созданный тест (pending), красный цвет – не прошедший тест, а зеленый – системе работает как надо.

Для каждого вида программирования, существует множество типов тестирования. Но есть и общие моменты, присутствующие везде. Так как основной род моей работы является создание web приложений под ROR, поговорим про особенности тестирования данных приложений.

Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 17

Шаблоны проектирования при разработке под Android. Часть 4 — Сохранение данных. Domain Model, Repository, Singleton и BDD

Время на прочтение 10 мин
Количество просмотров 15K
Разработка под Android *
Сразу хочу сказать, что в статье я не буду описывать как надо работать с Data Provider-ом. Это можно найти и в документации и в многочисленных статьях в интернете.
Здесь я расскажу про шаблоны проектирования Domain Model, Singleton, Repository, про подход Behavior Driven Development (BDD) и как я их использовал в своей программе.

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

Например, в моей программе предметная область состоит из данных расписания, заданного в виде нескольких будильников, для будильника можно задать дни недели и время, а также признак «будильник включен». Так же есть несколько алгоритмов, например получить будильник, который сработает следующим и дату и время его срабатывания. Поскольку будильник может дремать, получается что у одного будильника есть несколько срабатываний с разными действиями: первое срабатывание, дремание, и последнее дремание, когда кнопка дремать уже не доступна. Поэтому есть еще алгоритм поучения ближайшего абсолютного времени и действия.
Так же есть алгоритмы для создания нового будильника и редактирования/удаления существующих.

То есть в моей предметной области есть данные в виде нескольких будильников и несколько алгоритмов, которые реализуют логику предметной области.

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

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

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

Такой подход называется Behavior Driven Development. Его достоинство в том, что я могу тестировать модель в терминах предметной области, то есть в модульных тестах я имитирую обычное поведение пользователя. Благодаря тому, что это реализовано через механизм модульных тестов, я перед каждым релизом могу эти тесты прогнать и быть уверенным, что моя программа программа нормально отрабатывает основные действия пользователя.

Если бы я использовал отдельный класс для редактирования/сохранения будильников и отдельный класс для вычисления ближайшего будильника, то я конечно бы протестировал их по отдельности, но не смог бы проверить их вместе и не смог бы проверить основные действия пользователя.
Читать дальше →
Всего голосов 25: ↑22 и ↓3 +19
Комментарии 2

Codeception — тестирование по-новому

Время на прочтение 4 мин
Количество просмотров 85K
PHP *
PHP очень популярный язык программирования, но тестирование в нем, это скорее прерогатива экспертов, а не жизненная необходимость. Неужели это от того, что PHP-разработчики поголовно быдло-кодеры? Я считаю, что нет. Скорее всё от того, что системы тестирования порой излишне усложнены. А тесты, наоборот, должны были предельно просты: легко читаться, писаться, отлаживаться, и конечно же, быстро выполняться. Мое виденье того как это можно воплотить в PHP вылилось в проект под названием Codeception.

С ним тесты для ваших веб-приложений могут выглядеть так:
<?php
$I = new TestGuy($scenario);
$I->wantTo('create new blog post');
$I->amOnPage('/blog/posts');
$I->click('Create new post');
$I->fillField('Title','Codeception, a new way of testing!');
$I->fillField('Text','Codeception is new PHP full-stack testing framework.');
$I->click('Send');
$I->see('Congratulations, your post is successfully created!');


Согласитесь, такой тест понятен без дополнительных комментариев.
А теперь самое интересное: этот код без всяких изменений может быть выполнен как функциональный тест в фреймворках symfony, Symfony2,Zend Framework, а также в браузерном эмуляторе Goutte и даже через Selenium. Таким образом, вам предлагается единый интерфейс для написания функциональных тестов практически для любого сайта.
Читать дальше →
Всего голосов 75: ↑70 и ↓5 +65
Комментарии 68

Приезжай в Харьков и отожги вместе с нами на Ciklum Mobile Субботнике и iPhoneDevCamp 2012

Время на прочтение 3 мин
Количество просмотров 1.5K
Блог компании Ciklum
Вы не поверите, но начало 2012 года началось для нас жаркой зимой! Все дело в том, что мы, в Сиклум, ежемесячно проводим около 60(!) как внутренних, так и внешних мероприятий для разработчиков, таких как тематические Сиклум Субботники, Хакатоны, кемпы и т.д.

Обмен опытом и знаниями, живые дискуссии и неформальное общение — вот цель таких мероприятий, на которые, кстати говоря, может прийти любой разработчик. И представьте себе, такой формат мероприятий пришелся по душе многим в разных городах в Украине! Например, недавно мы провели самый первый .NET Субботник в Виннице, а также очередной .NET Субботник в Харькове, поддержали DOU STARTUP MIXER и Drupal Cafe в Киеве.

11 февраля 2012 в рамках Мобильного Сиклум Субботника пройдет и iPhoneDevCamp 2012, который все так долго ждали! Таким образом, суббота в нашем харьковском офисе будет очень насыщенной. По нашей замечательной традиции, мы открыты к тем, кто хочет выступить. Так, на Мобильный Сиклум Субботник мы пригласили зубров мобильной разработки, отчаянных борцов за чистоту кода и ярых яблочников.

Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 5