Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Моки и стабы

.NET
Существует категория классов, которые тестировать весьма просто. Если класс зависит только от примитивных типов данных и не имеет никаких связей с другими бизнес-сущностями, то достаточно создать экземпляр этого класса, «пнуть» его некоторым образом путем изменения свойства или вызова метода и проверить ожидаемое состояние.

Это самый простой и эффективный способ тестирования, и любой толковый дизайн отталкивается от подобных классов, которые являются «строительными блоками» нижнего уровня, на основе которых затем уже строятся более сложные абстракции. Но количество классов, которые живут в такой «изоляции» не много по своей природе. Даже если мы по нормальному выделили всю логику по работе с базой данных (или сервисом) в отдельный класс (или набор классов), то рано или поздно появится кто-то, кто эти классы будет использовать для получения более высокоуровневого поведения и этого «кого-то» тоже нужно будет тестировать.

Но для начала давайте рассмотрим более типичный случай, когда логика по работе с базой данных или внешним сервисом, а также логика обработки этих данных сосредоточена в одном месте.
Читать дальше →
Всего голосов 43: ↑38 и ↓5 +33
Просмотры70.9K
Комментарии 14

Юнит-тестирование в Qt

Тестирование IT-системПрограммированиеQt
Tutorial

gollum подметил что в тексте картинки есть ошибка

Салют, хабр! Как дела?

Хотел немного подучится чему-то. Искал на хабре в хабе «Qt Software» хоть какой-то пост про юнит-тестирование в Qt. Не нашел. Тут я расскажу базовые вещи про юнит-тестирование на Qt (не ожидайте могучего шаманства). На самом деле, юнит-тестить в Qt довольно просто. Что бы узнать как это делать, приглашаю читать дальше.
Читать дальше →
Всего голосов 35: ↑31 и ↓4 +27
Просмотры63.9K
Комментарии 21

test.it — тестирование JavaScript или мой велосипед с вложенностью и подробным выводом

Тестирование IT-системJavaScript
Tutorial
Внимание! В статье содержатся примеры работы до релизной (до v1.0.0) версии библиотеки.
Скоро выйдет ещё одна статья. Эта только в качестве ознакомления. Всю необходимую для использования библиотеки информацию можно получить в README и комментариях в коде.


Картинка для привлечения внимания:
test.it habrahabr
Я — начинающий веб-разработчик. И не так давно мне захотелось научиться работать так, как это делают настоящие программисты.
Под этим я понимал 3 основных элемента:
  1. Использование системы контроля версий.
  2. Грамотное комментирование кода.
  3. TDD или хотя бы простое юнит-тестирование кода.

Для первого пришлось освоить азы git, и создать свой первый репозиторий на github. Для второго выбрал JsDoc, из-за которого пришлось перебраться с notepad++ на sublime text (только там был соответствующий плагин).
А вот с третьим, неожиданно для меня, возникли серьёзные трудности.
с которыми я решил бороться велосипедом
Всего голосов 41: ↑37 и ↓4 +33
Просмотры18.3K
Комментарии 55

Вышел test.it v1.1.0 — что дальше?

Тестирование IT-системJavaScriptTDD
Добрый день хабр.
Вчера вышла версия 1.1.0 test.it — фреймворка для тестирования js кода.
Он, наконец, обзавёлся функционалом, отсутствие которого делало его неполноценным:
  • Асинхронные тесты/группы
  • Запуск отдельных тестов/групп
А так же прочими мелочами.

картинка для привлечения внимания
Кто не любит много слов — Сайт на котором можно увидеть код в действии, GitHub, Wiki
ченджлог c подробностями и небольшой опрос
Всего голосов 8: ↑7 и ↓1 +6
Просмотры4.6K
Комментарии 12

Почему изучать TDD трудно и что с этим делать. Часть 1

ПрограммированиеTDD
Из песочницы
От переводчика: так сложилось, что в русскоязычном интернете мало информации о TDD и в основном описываются механические действия разработчика. Главному же – идее – уделяется совсем мало внимания. Эта статья является попыткой восполнить этот пробел. Важно отметить, что она не для тех, у кого нет времени на тесты, и тем более не для тех, кто не осознает важность слабосвязанной архитектуры. Статья (оригинал) адресована тем, кто делает или собирается сделать первые шаги в TDD.
Читать дальше →
Всего голосов 43: ↑25 и ↓18 +7
Просмотры32.8K
Комментарии 65

Автотесты без боли

Блог компании i-Free GroupРазработка веб-сайтовТестирование IT-систем
imageПривет Хабра!

Я не буду предлагать вам очередной модный фреймворк для тестов, а просто покажу подход к тестам и документации, который использую в проектах, разрабатываемых в i-Free. Возможно, вам понравится, и вы начнете организовывать проекты таким же образом или укажите мне на явные проблеммы.

Многие веб-разработчики не любят писать тесты, и я не исключение. Но тесты уменьшают количество багов и если ваше приложение становится все больше и больше, от тестов вам не уйти. К тому же в мелких компаниях я часто встречал джуниоров, которые вообще предпочитают писать код в текстовых редакторах (это увеличивает количество ошибок, т.к. редакторы не проверяют код). Как же начать потихоньку использовать тесты без боли и страданий?! Выход есть — подключить автотесты.

Суть поста на картинке слева. Это то, чего мне раньше не хватало в повседневной работе. Хотелось иметь инструмент, которым можно очень просто потыкать в код и сделать общее заключение о его живучести и пригодности.
Читать дальше →
Всего голосов 17: ↑12 и ↓5 +7
Просмотры18.2K
Комментарии 4

Полуавтоматическая регистрация юнит-тестов на чистом С

Ненормальное программированиеТестирование IT-системC
После прочтения книги Test Driven Development for Embedded C я начал знакомство с миром юнит-тестирования с фреймворка cppUtest. Не в последнюю очередь потому, что в нем свеженаписанный тест регистрируется и запускается самостоятельно. За это приходится платить — использованием C++, динамическим выделением памяти где-то в глубинах фреймворка. Может быть, можно как-то попроще?
Совсем недавно я узнал о минималистичном фреймворке minUnit, который умещается всего в 4 строчки.
Читать дальше
Всего голосов 13: ↑13 и ↓0 +13
Просмотры7.8K
Комментарии 15

Авто-регистрация тестов на С средствами языка

Ненормальное программированиеТестирование IT-системTDDC
Тестирование в CСравнительно недавно была статья «Полуавтоматическая регистрация юнит-тестов на чистом С», в которой автор продемонстрировал решение задачи с использованием счётчиков из Boost. Следуя этому же принципу, была предпринята (успешная) попытка повторить данный опыт уже без использования Boost из соображения нелогичности наличия в проекте на C зависимости от Boost, да ещё и в таком небольшом объёме. При этом в тестах присутствовали вспомогательные директивы препроцессора в большом количестве. И всё бы так и осталось, но практически на завершающей стадии был найден альтернативный способ регистрации, который позволяет полностью избавится от дополнительных действий. Это C89-решение для регистрации тестов и чуть более требовательное к системе сборке решение для регистрации наборов тестов.
Каким образом
Всего голосов 22: ↑21 и ↓1 +20
Просмотры8.1K
Комментарии 19

LoveQA митап на РИТ++

Блог компании BadooТестирование IT-систем
Всем привет! Через неделю, 22 мая, в рамках РИТ-Фестиваля, пройдет серия бесплатных митапов.

Хотим пригласить всех, кому интересно послушать про автоматизацию тестирования, на наш LoveQA Meetup.
Нам тоже было бы интересно пообщаться с коллегами из других компаний, ответить на вопросы и узнать, как устроено тестирование у вас.

Мы в Badoo собрали для вас 3 совершенно новых доклада, которые еще не звучали на других конференциях.

  • «Эволюция php code coverage в Badoo», Илья Агеев, Head of Q/A department.
  • «Внедрение Docker в процесс разработки демонов», Константин Карпов, Q/A engineer.
  • «Юнит-тесты: от общего к частному», Александр Свинцов, Q/A Team Lead

Где? Когда? А выступить можно?
Всего голосов 14: ↑14 и ↓0 +14
Просмотры3K
Комментарии 0

Видео с LoveQA митапа

Блог компании BadooТестирование IT-систем
Спешим поделиться видео с нашего LoveQA митапа, который в этом году мы проводили на РИТ-Фестивале. Если у вас есть вопросы к докладчикам, то ждем их в комментариях. Мы обязательно ответим!

1. «Эволюция php code coverage в Badoo», Илья uyga Агеев, Head of Q/A department.




Читать дальше →
Всего голосов 20: ↑18 и ↓2 +16
Просмотры8.5K
Комментарии 2

Sinon.js — mock-библиотека для JavaScript

Блог компании ua-hosting.companyJavaScriptПрограммирование
Sinon.js — это mock-библиотека для JavaScript, которую можно использовать с любым тестовым фреймворком. Она предоставляет функции для эмуляции и проверки требуемого поведения в JavaScript. В библиотеке представлено три вида тестирования с spy, stub и mock. В данном посте мы рассмотрим документацию по API Sinon.js вместе с кратким введением в концепцию методов данной библиотеки.


Читать дальше →
Всего голосов 23: ↑19 и ↓4 +15
Просмотры32.5K
Комментарии 5

Как статический анализ может дополнять юнит-тестирование на примере NUnit

Блог компании PVS-Studio.NETC#
PVS-Studio and NUnitДовольно часто при обсуждении средств статического анализа для C# проектов программисты пишут о том, что в этом нет необходимости, потому что с помощью юнит-тестирования они отлавливают большинство ошибок. Я решил проверить, насколько хорошо протестирован один из самых известных юнит-тест фреймворков — NUnit, и посмотреть найдёт ли там что-нибудь наш анализатор.
Читать дальше →
Всего голосов 32: ↑25 и ↓7 +18
Просмотры5K
Комментарии 8

Рефакторинг последовательных проверок в Mockito с помощью fluent-интерфейсов

Java

У статических методов есть одна мощная, но и в то же время весьма нежелательная особенность: их можно вызвать из любого места в коде, не особо имея возможность регламентировать порядок их вызова. Зачастую такой контроль очень важен, но иногда порядок не имеет очень большого смысла. Например, осуществлять проверки в юнит-тестах часто можно не в очень строгом порядке. И чтобы гарантировать, что в тестируемом юните выполенены все проверки, в Mockito существует всё тот же статический метод verifyNoMoreInteractions(...). Иногда можно по ошибке вызвать такой метод ещё до последнего verify(...) и потом с огорчением наблюдать "красный" тест. Но что если переложить заботу о порядке выполнения проверок на сам компилятор?


Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры5.6K
Комментарии 8

«Керосинка» против «Патриотов»: как американские военные программисты научились правильно округлять

Блог компании PVS-StudioТестирование IT-системОтладкаПромышленное программирование
11 февраля 1991 года Patriot Project Office получил израильские данные о дефекте в ракетной системе Patriot. Они нашли, что если система работает 8 часов, она начинает мазать на 20%. Они прикинули, что после 20 часов работы система начинает промахиваться настолько, что перестанет быть способной захватывать, отслеживать и поражать баллистические ракеты. Американские военные не приняли во внимание всю важность открытия, заявив, что система предназначена для портативных и краткосрочных защитных операций и что никто никогда не будет использовать систему больше 8 часов.

16 февраля был выпущен Bug Fix, но чтобы его внедрить во все единицы боевой техники, требовалось время, ибо война.

21 февраля военные выпускают указание, что система не должна работать «долго». Военные не уточнили сколько длится «долго».

25 февраля в Дахране (Саудовская Аравия) в казарму в гости к американцам прилетела баллистичекая ракета "керосинка" (она же Р-17, она же Scud). 28 убито 96 ранено, потому что ЗРК «Патриот» промахнулся из-за программной ошибки.

26 февраля Bug Fix был доставлен в Дахран.



Читать дальше →
Всего голосов 100: ↑92 и ↓8 +84
Просмотры37.6K
Комментарии 29

Трагедия стопроцентного покрытия кода

Блог компании Productivity InsideTDDТестирование веб-сервисовТестирование мобильных приложенийТестирование игр
Перевод
Забавно, как всё меняется. Пятнадцать лет я свято придерживался принципов TDD (разработка через тестирование, или, как её раньше называли, подход test-first) или уж по крайней мере того взгляда, что разработчикам следует писать юнит-тесты. Но в последнее время я всё чаще говорю не «Это нужно затестить», а «Зачем вы писали этот тест?».

Читать дальше →
Всего голосов 103: ↑96 и ↓7 +89
Просмотры32.9K
Комментарии 138

Юнит-тесты. Быстрый старт – эффективный результат (с примерами на C++)

Блог компании ТензорТестирование IT-системПрограммированиеC++Управление разработкой


Вместо вступления


Всем привет! Сегодня хотелось бы поговорить о том, как просто и с удовольствием писать тестируемый код. Дело в том, что в нашей компании мы постоянно контролируем и очень ценим качество наших продуктов. Еще бы – ведь с ними ежедневно работают миллионы человек, и для нас просто недопустимо подвести наших пользователей. Только представьте, наступил срок сдачи отчетности, и вы тщательно и с удовольствием, используя заботливо разработанный нами пользовательский интерфейс СБИС, подготовили документы, еще раз перепроверили каждую циферку и вновь убедились, что встречи с вежливыми людьми из налоговой в ближайшее время не будет. И вот, легким нажатием мыши кликаете на заветную кнопку «Отправить» и тут БАХ! приложение вылетает, документы уничтожаются, жарким пламенем пылает монитор, и кажется, люди в погонах уже настойчиво стучат в двери, требуя сдачи отчетности. Вот как-то так все может и получиться:
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры23.5K
Комментарии 14

Модульное тестирование интерфейсов в Headless Chrome. Лекция Яндекса

Блог компании ЯндексJavaScriptИнтерфейсыТестирование веб-сервисов
Чтобы непрерывно улучшать большие клиентские интерфейсы, нужна мощная система автотестов. Разработчик Яндекса Дмитрий Андриянов dima117 кое-что про это знает — пару месяцев назад он поделился своим опытом на Я.Субботнике в Нижнем Новгороде.


— Сегодня я расскажу, как мы в Директе пишем модульные тесты на веб-интерфейс. Мы в целом посмотрим, чем тесты на интерфейс отличаются от других тестов. Рассмотрим два подхода к написанию тестов: с помощью Selenium и с помощью Headless-браузеров. И в конце покажу инструмент, который мы написали в Директе для запуска тестов в Headless Chrome.
Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Просмотры12K
Комментарии 13

Советы по созданию приложений к окончанию набора в Школу мобильной разработки Яндекса

Блог компании ЯндексРазработка мобильных приложенийРазработка под Android
Tutorial
Уже очень скоро завершится набор в Школу мобильной разработки, которая традиционно пройдет в Москве. Упор в ней будет сделан на практические занятия — командные мини-хакатоны, в которых помимо написания кода нужно будет принимать решения, разбираться с возникшими спорными вопросами и заниматься долгосрочным планированием. Помогать студентам — каждой команде индивидуально — будут ребята из Яндекса. Более подробно о предстоящей школе можно почитать здесь. Мы закончим принимать заявки 6 мая в 23:59 по московскому времени, а пока ещё есть время на выполнение заданий, мы решили разобрать прошлогодний вариант. Вы узнаете, какие ошибки часто допускают начинающие разработчики и чему следует уделить внимание при написании кода вашего первого приложения.



Традиционно задание построено так, чтобы мы могли обратить внимание на разные аспекты разработки. К ним относится архитектура приложения, стабильность, производительность, верстка, удобство использования. Все составляющие одинаково важны: даже идеально причесанный и разложенный на слои код с большой вероятностью не пройдет отбор, если возникнут проблемы в интерфейсе или падения в процессе выполнения базовых пользовательских сценариев. Универсального рецепта приготовления идеального приложения, которое гарантированно пройдёт отбор, нет. Есть множество подходов к разработке и разные варианты построения архитектуры, но одна из составляющих успеха — позитивные пользовательские ощущения. Продукт должен создавать впечатление законченности, независимо от того, сколько в нем полезной функциональности, экранов или элементов.
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Просмотры12.6K
Комментарии 10

Неприятные ошибки при написании юнит тестов

Тестирование IT-системJavaScriptNode.JSТестирование веб-сервисов
На днях я буду делать внутренний доклад, на котором расскажу нашим разработчикам про неприятные ошибки, которые могут возникнуть при написании юнит тестов. Самые неприятные с моей точки зрения ошибки — когда тесты проходят, но при этом делают это настолько некорректно, что лучше бы не проходили. И я решил поделиться примерами таких ошибок со всеми. Наверняка ещё что-нибудь подскажете из этой области. Примеры написаны для Node.JS и Mocha, но в целом эти ошибки справедливы и для любой другой экосистемы.

Чтобы было интереснее, часть из них оформлена в виде проблемного кода и спойлера, открыв который, вы увидите, в чём была проблема. Так что рекомендую сначала смотреть на код, находить в нём ошибку, а затем открывать спойлер. Решения проблем указано не будет — предлагаю самим подумать над ним. Просто потому, что я ленивый. Порядок списка не имеет глубокого смысла — просто это очерёдность, в которой я вспоминал про всякие реальные проблемы, которые доводили нас до кровавых слёз. Наверняка многие вещи покажется вам очевидными — но даже опытные разработчики могут случайно написать такой код.

Читать дальше →
Всего голосов 34: ↑32 и ↓2 +30
Просмотры9.5K
Комментарии 14

Типичные ошибки при написании юнит-тестов. Лекция Яндекса

Блог компании ЯндексРазработка мобильных приложенийРазработка под AndroidБраузерыТестирование мобильных приложений
Если освоить небольшой список типичных ошибок, возникающих при написании юнит-тестов, то можно даже полюбить писать их. Сегодня руководитель группы разработки Яндекс.Браузера для Android Константин kzaikin Заикин поделится с читателями Хабра своим опытом.


— У меня доклад практический. Надеюсь, он вам всем принесет пользу — и тем, кто юнит-тесты уже пишет, и тем, кто только думает писать, и тем, кто пробует, и у кого не получилось.
Читать дальше →
Всего голосов 42: ↑36 и ↓6 +30
Просмотры19.3K
Комментарии 32
1