Вы должны быть уверены в том, что ваш код работает

Вы должны быть уверены в том, что ваш код работает

Как узнать, работает ли ваш код? Легко. Протестируйте его. Потом протестируйте еще раз. Протестируйте слева направо, потом справа налево. А теперь еще и сверху вниз!

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

Какая часть кода должна тестироваться этими автоматизированными модульными тестами? Мне действительно нужно отвечать на этот вопрос? Весь код! Весь. Без исключения.

Скажете, я предлагаю 100 % тестовое покрытие кода? Ничего подобного. Я не предлагаю, а требую. Каждая написанная вами строка кода должна быть протестирована. Точка.

Может, это нереалистично? Почему? Вы пишете код, потому что ожидаете, что он будет выполняться. Если вы ожидаете, что код будет выполняться, то вы должны знать, что он работает. А знать это можно только в одном случае – по результатам тестирования.

Я являюсь основным автором и исполнителем проекта с открытым кодом FitNesse. На момент написания книги размер FitNesse достиг 60K строк, 26 из которых содержатся в 2000+ модульных тестах. По данным Emma, покрытие этих 2000 тестов составляет около 90 % кода. Почему не выше? Потому что Emma видит не все выполняемые строки! По моей оценке, степень покрытия намного выше. Составляет ли она 100 %? Нет, 100 % – асимптотический предел.

Но ведь некоторые части кода трудно тестировать? Да, но только потому, что этот код был так спроектирован. Значит, код нужно проектировать с расчетом на простоту тестирования. И для этого лучше всего написать тесты сначала – до того кода, который должен их пройти.

Этот принцип используется в методологии разработки через тестирование (TDD, Test Driven Development), которая будет более подробно описана в одной из следующих глав.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Глава 7. Вы уверены , что ваш банк безопасен , не правда ли ?

Из книги Искусство вторжения автора Митник Кевин

Глава 7. Вы уверены, что ваш банк безопасен, не правда ли? Если вы хотите защитить вашу систему от «дурака», то всегда найдется один такой, изобретательность которого вы и предвидеть не могли. Юхан Даже зная о том, что многие организации не предпринимают необходимых мер по


Совет 40. Классы функторов должны быть адаптируемыми

Из книги Эффективное использование STL автора Мейерс Скотт

Совет 40. Классы функторов должны быть адаптируемыми Предположим, у нас имеется список указателей Widget* и функция, которая по указателю определяет, является ли объект Widget «интересным»:list<Widget*> WidgetPtrs:bool isInteresting(const Widget *pw):Если потребуется найти в списке первый указатель на


До какой степени мы должны быть догматичными?

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

До какой степени мы должны быть догматичными? Список, представленный ниже, включает все свойства, кажущиеся существенными для создания высококачественного ПО ОО-методом. Наш список может показаться бескомпромиссным и даже догматичным. Какие заключения следует делать,


Должны ли исключения быть объектами?

Из книги MySQL: руководство профессионала автора Паутов Алексей В

Должны ли исключения быть объектами? Фанатики объектной ориентации (многие ли из тех, кто открыл красоту этого подхода, не рискуют стать его фанатиками?) могут критиковать представленный механизм за то, что исключения не являются гражданами первого сорта в программном


13. Ресурсы должны быть во владении объектов

Из книги Искусство вторжения автора Митник Кевин

13. Ресурсы должны быть во владении объектов РезюмеНе работайте вручную, если у вас есть мощные инструменты. Идиома С++ "выделение ресурса есть инициализация" (resource acquisition is initialization — RAII) представляет собой мощный инструмент для корректной работы с ресурсами. RAII позволяет


Глава 7. Вы уверены , что ваш банк безопасен , не правда ли ?

Из книги Удвоение продаж в интернет-магазине автора Парабеллум Андрей Алексеевич

Глава 7. Вы уверены, что ваш банк безопасен, не правда ли? Если вы хотите защитить вашу систему от «дурака», то всегда найдется один такой, изобретательность которого вы и предвидеть не могли. Юхан Даже зная о том, что многие организации не предпринимают необходимых мер по


Основные разделы, которые должны быть на главной странице

Из книги Цифровой журнал «Компьютерра» № 160 автора Журнал «Компьютерра»

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


Быть или не быть Microsoft Office для Linux Максим Плакса

Из книги Цифровой журнал «Компьютерра» № 162 автора Журнал «Компьютерра»

Быть или не быть Microsoft Office для Linux Максим Плакса Опубликовано 13 февраля 2013 Слух о предстоящем выходе версии Microsoft Office для Linux появился 5 февраля. Об этом якобы проговорился автору сайта Phoronix один из сотрудников Microsoft во время проходившего в Брюсселе


Здравствуй, племя незнакомое, или Почему инопланетяне должны быть похожими на нас? Владимир Комен, генеральный директор WIT Company

Из книги IT-безопасность: стоит ли рисковать корпорацией? автора Маккарти Линда

Здравствуй, племя незнакомое, или Почему инопланетяне должны быть похожими на нас? Владимир Комен, генеральный директор WIT Company Опубликовано 25 февраля 2013 Наряду с круглой датой — 50-летием первого полёта человека в космос — проходили мероприятия


Резюме: Аутсорсинговые системы должны быть защищены

Из книги Инфобизнес за один день автора Ушанов Азамат

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


6. Варианты оплаты, которые должны быть на вашем сайте

Из книги Цифровой журнал «Компьютерра» № 202 автора Журнал «Компьютерра»

6. Варианты оплаты, которые должны быть на вашем сайте Если у вас на сайте предусмотрен наложенный платеж, простая оплата с помощью банка для физических и юридических лиц, webmoney, системы Робокасса и РБК-money, то у вас есть все возможные способы оплаты. Ваш клиент не


Если можем — не значит должны! Как выкрали рассказы Джерома Сэлинджера и обязана ли информация быть свободной? Евгений Золотов

Из книги Цифровой журнал «Компьютерра» № 220 автора Журнал «Компьютерра»

Если можем — не значит должны! Как выкрали рассказы Джерома Сэлинджера и обязана ли информация быть свободной? Евгений Золотов Опубликовано 03 декабря 2013 Наука без морали погибнет. Эти слова принадлежат советскому академику Дмитрию Лихачёву,


Желаете знать свою ДНК? А вы уверены? Евгений Золотов

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

Желаете знать свою ДНК? А вы уверены? Евгений Золотов Опубликовано 10 апреля 2014 Каждый прорыв в науке и технике не только открывает новые перспективы, но и ставит новые вопросы нравственного плана. Вспомните, как мучились учёные, подарившие людям


Значения атрибутов должны быть в кавычках

Из книги Идеальный программист. Как стать профессионалом разработки ПО автора Мартин Роберт С.

Значения атрибутов должны быть в кавычках В языке HTML значения атрибутов должны быть заключены в кавычки, только если в значение входят пробелы или специальные символы. Но в языке XHTML это недопустимо: все значения должны заключаться в кавычки. Например, в теге <td>,


Вы не уверены в том, что обещание можно выполнить

Из книги автора

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