Pull to refresh
  • by relevance
  • by date
  • by rating

gTest и

Lumber room
Написал недавно пост про " По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт занчнеия, в кокам пряокде рсапожолены бкувы в солве..."?
Очень меня заинтересовало — правда это или нет, а тут еще захотелось gTest поизучать и заодно попрактиковаться в Программировании через тестирование, так что написал я программку, которая таким вот образом коверкает слова.
И действительно, это правило отлично работает — тексты, исковерканные моей программой, достаточно свободно читаются.
Кому интересно самому поиграться, могут скачать программу тут:
ScrambleStrings.rar — там можно вставить любой текст в верхний EditBox и нажать на «Создать». Получившийся текст можно скопировать в буфер обмена кнопкой «Копировать» и вставить куда хочешь.

Подробности реализации для программистов...
Total votes 5: ↑4 and ↓1 +3
Views 523
Comments 3

Анти-паттерны Test Driven Development

Website development *
Translation
Я надеюсь, что как грамотный разрабочик, вы имеете представление о unit-тестировании и сделаете себе в голове пару мысленных отметок о том, чего надо избегать при написании тестов. Знакомьтесь:

Лжец (The Liar)

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

Читать дальше →
Total votes 111: ↑109 and ↓2 +107
Views 18K
Comments 64

Unit тесты и наследование

Lumber room
При разработке unit тестов в Visual Studio часто хочется создать какой-то базовый клас для тестирования базовой лоники. Например у нас есть такой класс: [TestClass]
public virtual class PersonTestBase
{

[TestMethod]
public void GetNameTest()
{
//...
}
}
и его класс наследник: [TestClass]
public class CustomerTest: PersonTestBase
{
[TestMethod]
public override void GetNameTest()
{
base.GetNameTest();
}
}

Плюсы такого подхода:
  • полная поддержка визуальных средств Visual Studio (Test List Editor);
  • простота реализации.
Минусы:
  • избыточность кода;
  • создание наследника является по сути copy&paste.
Сразу необходимо заметить, что PersonTestBase и CustomerTest должны находится в одной сборке, иначе тесты в PersonTestBase работать не будут — это ограничение unit тестов. Подробнее смотрите в msdn. Кроме описанных в msdn способов можно поступить так: создаётся два проекта: BaseTests и CustomTests;в проект CustomTests добавляются необходимые файлы из BaseTests таким образом: Project -> Add Existing Item -> Выбираем необходимые файлы -> Add As Link.Таким образом физически файлы находятся в разных проектах, но при компиляции необходимые классы оказываются в одной сборке. Теперь пришло время изменить наш CustomerTest. [TestClass]
public class CustomerTest: PersonTestBase
{
[TestMethod]
public override void CustomerTestMethod()
{
//...
}
}

Мы добавили новый, специфический для Customer, метод и удалили переопределения метода из базового класса, т.к. его функциональность нас полность устраивает. Что мы из этого получили:
  • фактически, в классе у реализоано 2 тестовы метода: один перешел из базового класса и один мы реализовали сами.
  • Visual Studio Test List Editor говорит что у нас только один тетовый медов — метода из бащового класс не отображается и, соответственно, не запускается.
Обидно, но не смертельно. На помощь нам приходит штатная утилита MSTest, которая решает все, или почти все, наши проблемы.Плюсы такого метода:
  • мы избавились от минусов предыдущего метода;
Минусы:
  • нету интеграции с Visual Studio.
Total votes 8: ↑3 and ↓5 -2
Views 1.2K
Comments 3

Непопулярные аспекты тестирования

IT systems testing *

Непопулярные аспекты тестирования


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

Я соглашаюсь с тем, что данная статья распространяется на условиях CC-NC-BY
Total votes 47: ↑42 and ↓5 +37
Views 1.1K
Comments 29

Оптимизация процесса создания unit-тестов

Programming *.NET *C *
Всем привет! Хабраюзер shai_xylyd написал статью про аспекты тестирования, где им были рассмотрены некоторые понятия и ценности TDD. В частности, он упомянул очень интересный способ создания первичных юнит-тестов — когда функциональный код пишется совместно с кодом юнит-теста, чем меня очень заинтриговал.

Дело в том, что я (как программист), нахожусь в состоянии переходного процесса между «классической» разработкой и разработкой test-driven, поэтому всякими способами ищу возможности упростить и сделать более естественной последнюю. После пары приседаний, сразу включиться в методику shai_xylyd не сумел. Начал переписку с автором статьи, где он натолкнул меня на мысль подойти к решению с математической точки зрения. Идея в том, чтобы воспользоваться функциональным пространством среды программирования и «разложить» написание юнит-теста на составляющие. После чего сделать выводы.
Немного математики, а потом пример
Total votes 22: ↑18 and ↓4 +14
Views 4.3K
Comments 17

PHPUnit Developer

Lumber room
У нас на фирме в гостях сегодня Sebastian Bergmann — автор PHPUnit проводит курс юного test driven разработчика. Если вдруг кто-то давно хотел задать ему вопрос, пишите.
Total votes 4: ↑4 and ↓0 +4
Views 933
Comments 7

FireUnit: Javascript Unit Testing Extension

Lumber room
Юнит-тесты это то, на что никогда нет времени. А если есть время, то нет желания. И наконец, если есть время и желание, то обязательно найдется какой-нибудь засранец, который найдет, как забрать твое время и отобьет всякое желание что-либо делать вообще… Да, заказчику тяжело объяснить что такое юнит-тесты и зачем они нужны. Но тем не менее, хочу сделать небольшой обзор нового плагина для Firefox, который позволяет юнит-тестить ваш джаваскрипт. Если быть совсем точным, то это расширение для Firebug – излюбленного инструмента javascript-разработчиков.
Итак, те кто не владеет теорией юнит-тестирования идут учить матчасть, а с остальными мы рассмотрим простейшие юнит тесты:

// Простой true/false юнит-тест
fireunit.ok( true, "Тест пройдет успешно!" );
fireunit.ok( false, "Тест будет провален!" );
// Сравниваем две строки и показываем разницу
// если строки отличаются между собой
fireunit.compare(
"Ленивый программист чистит зубной щеткой унитаз.",
"Ленивый программист уронил зубную щетку в унитаз",
"Это одинаковые строки?"
);
// Сравниваем две строки, используя регулярные выражения
fireunit.reCompare(
/Ленивый программист .* унитаз./,
"Ленивый программист уронил зубную щетку в унитаз.",
"Сравниваем две строки, используя регулярные выражения."
);
// Отображаем результаты тестов
fireunit.testDone();

Читать дальше →
Total votes 23: ↑19 and ↓4 +15
Views 273
Comments 5

Mobile JUnit существует

Lumber room
Так сложилось, что наша контора пишет на J2ME много и давно, но никогда не пользовалась unit-тестами. А я, прочитав несколько зажигательных статей на Хабре, проникся светлыми идеями unit-тестов и захотел хотя бы попробовать. Мои коллеги пожали плечами и заявили, что JUnit всё равно не заработает на J2ME, да и вообще, как тесты-то прогонять? На мобилке? В результате, у меня всё получилось, хотя и пришлось повозиться.
Как это было
Total votes 6: ↑5 and ↓1 +4
Views 358
Comments 6

Unit тестирование в ASP.NET MVC Framework-е

Lumber room
В свое время делая доклад по ASP.NET MVC Framework я заметил, что данный framework дает возможность разработчиком использовать TDD практики при разработки и тут же получил вопрос, что такое TDD, почему и как именно ASP.NET MVC Framework дает эти самые возможности.

Ответ на вопрос
Total votes 3: ↑2 and ↓1 +1
Views 1K
Comments 0

Поддержка nUnit в asp.net mvc проектах

Lumber room
После установки Asp.net mvc framework ставится ряд template в VS студию. И теперь например при создании проекта «asp.net mvc Web application», в самом начале есть возможность выбрать какой именно test framework используется для разработки. Но к сожалению там всего один пункт для выбора. Уже сейчас есть возможность установить кучу расширений. Так как я для разработки использую nUnit, то найти такой «плагин», было бы не плохо.

Качаем небольшой архив с двумя шаблонами:
  • NUnitDemo
  • NUnitAndRhinoMocks

В архиве находим либо NUnitDemo.zip либо, NUnitAndRhinoMocks.zip и NUnitAndRhinoMocks.reg и NUnitDemo.reg.
Копируем их в "\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Test\1033\"
Далее запускаем «devenv /setup».
Теперь при создании проекта можно дополнительно выбрать еще несколько шаблонов.
Total votes 2: ↑2 and ↓0 +2
Views 429
Comments 0

.NET и Unit-тестирование: TestCaseAttribute (NUnit 2.5)

Lumber room
Заглянув на официальный сайт NUnit, обнаружил интересную новинку в версии 2.5 этой замечательной библиотеки.

Тестировать методы на различных входящих данных стало очень удобно:

[TestCase(12, 3, 4)]
[TestCase(12, 2, 6)]
[TestCase(12, 4, 3)]
[TestCase(12, 0, 0, ExpectedException = typeof(System.DivideByZeroException),
TestName = “DivisionByZeroThrowsExceptionType”)]
[TestCase(12, 0, 0, ExpectedExceptionName = “System.DivideByZeroException”,
TestName = “DivisionByZeroThrowsNamedException”)]
public void IntegerDivisionWithResultPassedToTest(int n, int d, int q)
{
Assert.AreEqual(q, n / d);
}

К сожалению если Вы запускаете тесты через решарпер, пока эта функциональность не для Вас. Пока это работает только если запускать тесты непосредственно через сам NUnit (консольный или gui).

официальная документация
Rating 0
Views 813
Comments 0

Переезд с SimpleTest на PHPUnit

Lumber room
Предыстория: одна из критических частей кода проекта покрыта юнит тестами основаными на фреймворке SimpleTest. В связи с переходом на PHPUnit необходимо было адаптировать существующие тесты под новый тестовый фреймворк.
Причем необходимо было оставить работающими тесты как в режиме SimpleTest, ну и заставить их работать в PHPUnit. Код самих тестов, естественно, один и тотже.

Было выделено три ключевых момента где есть различия между SimpleTest и PHPUnit:
  • 1. Запуск тестов
  • 2. Используемые методы проверки и наследование
  • 3. Обработка результатов тестирования

Читать дальше →
Total votes 14: ↑9 and ↓5 +4
Views 708
Comments 6

Инструментарий: NBehave

Lumber room
NBehave

Библиотека для .NET, которая реализует концепцию behavior-driven development (BDD), которая по сути являеться надстройкой над test-driven development (TDD), с хорошо всем знакомым NUnit во главе.

Рано или поздно всем разработчикам приходиться писать \ менять unit тесты. Как правило, спустя месяц / год разработчик уже не помнит какой тест, что проверяет и как он это делает. Ещё хуже, если сотни тестов достаються Вам в наследство, даже понять, что именно проверяет тест не всегда просто. А если над проектом работает команда аналитиков которые хотят проверить работу логики, но при этом не знают языка программирования?

И тут на белом коне появляеться NBehave, его задача — облегчить сопровождение и поддержку unit тестов и предоставить «не программистам» возможность протестировать логику.
Читать дальше →
Total votes 4: ↑3 and ↓1 +2
Views 642
Comments 4

ASP.NET MVC: модульное тестирование маршрутов

.NET *
imageМодульное тестирование (unit test) очень важная часть современной разработки программного обеспечения. При тестировании web-приложений разработчики стараются охватить все аспекты работы приложения от получения запроса до выдачи результата. При разработке проектов с помощью ASP.NET MVC одним из таких моментов является механизм маршрутизации. Тестирование маршрутов обычно приносило немало головной боли, заставляя разработчика писать много сопутствующего кода. В этой заметке я покажу как используя пару инструментов можно упростить тестирование маршрутов до минимума.
Читать дальше →
Total votes 42: ↑28 and ↓14 +14
Views 3.9K
Comments 6

Best working practices versus жизнь

Lumber room
Мною замечено что люди, последнее время, все чаще стали очень категоричны: нужно создавать юнит-тесты для всего(XP TDD), валидный CSS превыше всего(W3C validity), standup-митинг нужен даже с уборщицой(Scrum)…

Здесь я предлагаю Вам порассуждать на тему Best working practices versus жизнь!
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Views 250
Comments 37

О модульном тестировании на C++ и о CxxTest

IT systems testing *
Совсем недавно в ходе разработки одного проекта передо мной встала задача поиска удобного средства для написания юнит-тестов на C++. К каким результатам привело моё исследование подробнее в этой статье.
Поехали.
Total votes 20: ↑19 and ↓1 +18
Views 54K
Comments 29

Асинхронное программирование — тестирование событий

.NET *
Иногда приходится писать тесты для событий, и делать это неудобно – очень быстро начинают плодиться дополнительные методы и поля. О том, как тестировать события в C# я и хочу рассказать.

Читать дальше →
Total votes 26: ↑16 and ↓10 +6
Views 2.8K
Comments 7

JetBrains WebIDE — публичная сборка #500

PHP *
Квест «идеальное IDE для PHP» продолжается :) За прошедшую с предыдущей сборки неделю стали доступны две наиболее востребованые фичи — PHPUnit и FTP, ну и конечно мы постарались исправить как можно больше ошибок.

IDE
— начальная версия поддержки удаленных хостов — пока что только FTP upload. (Планируется: открытие удаленного проекта, автосинхронизация, SFTP/SSL/всякие cloud storage). Находится в меню Settings — Deploy&Run.
— Новые удобные закладки (F11)

PHP
— начальная версия поддержки PHPUnit (пока только локальный запуск)
— добавлено выведение типов для переменной в «foreach(...)», элемента массива «array[...]» и тернарного оператора "?:"
— добавлены поиск использований (Ctrl-Alt-F7) и переименование (Shift-F6) для глобальных переменных
— исправлены поиск использований и переименование для статических членов класса
— исправлены различные ошибки форматирования кода и комментариев

Загрузка Анонс

FTP PHPUnit
Total votes 51: ↑41 and ↓10 +31
Views 1.1K
Comments 117