Press "Enter" to skip to content

Unit testing: How to get your team started — FunFunFunction #2


Ноябрь 2000 г.
Национальный институт рака Анна Мэсси
в серии противоаварийной терапии
программное обеспечение планирования, созданное несколькими данными
международные системы
ошибка компании вычисляет
дозировка для пациентов, подвергающихся радиации
терапия, программное обеспечение позволяет излучать
терапевта, чтобы нарисовать на экране
размещение металлических экранов, называемых блоками
предназначен для защиты здоровой ткани от
излучение
однако программное обеспечение позволяет врачам
использовать для щитовых узлов
и врачи хотят использовать пять
врачи понимают, что они могут обмануть
используя все пять блоков, как
один большой блок с отверстием в середине
но то, что врачи не понимают,
что программное обеспечение дает разные
ответы в зависимости от того, в каком направлении
отверстие сильно затягивает его в одном направлении
и рассчитывается правильная доза
это в другом направлении и программное обеспечение
рекомендую мудрые необходимые
воздействие по меньшей мере восьми пациентов
врачи , которые юридически обязаны
дважды проверить вычисления компьютеров
от руки обвиняются в убийстве, поэтому давайте
говорить об модульном тестировании, как и большинство из вас
программное обеспечение, которое я пишу, не может убить
люди, но также, как и большинство из вас, люди
полагайтесь на программное обеспечение, которое я пишу I
полагаться на программное обеспечение других
время в моей повседневной жизни
когда программное обеспечение, на которое я полагаюсь
иногда ломается, когда он ломается
это просто раздражает, иногда это
действительно действительно расстраивает и разрушает мою
весь день, а иногда и
я потерял работу и фактически сделал меня
терпят неудачу на вещи в в школьной работе
ваше программное обеспечение, вероятно, не контролирует
радиационный экран, но ваше программное обеспечение помогает
люди и помощь людям важны
поэтому в качестве программистов нам нужно
качество нашей серии программ
Команда, я работаю в действительно много
тестирование различными способами и
они все хорошо , но я хотел бы
потратьте это видео на один
конкретный тип тестирования единицы измерения и
команда, в которой я работаю сегодня, пишет блок
тесты тестирования модулей являются частью того, как мы работаем
и для нас это получилось очень хорошо
однако в большинстве команд, которые я работал
мы не записали модульные тесты и
Самое смешное, что в этих командах наиболее
из нас или , по крайней мере , многие из нас хотели
написать единичные тесты, но тогда мы не
моя нынешняя группа тестирования подразделения сделала это
мои бывшие неспециализированные группы тестирования не
это то, что это видео об этом
видео делится на три практических
шаги, которые, как я думаю, заставили мою команду
модульные тестеры Я потрачу всего
видео в деталях на каждом шагу I
не покажет код, но будет
красивые рисунки три шага
одна сторона, которая совершает, должна быть единицей
мы будем говорить о том, как важно
это то, что ваша команда
простое правило, если коммит не имеет
юнит — тесты не вдаваться в
репозиторий, я также расскажу о том, как
убедите свою команду в совершении этого
шаг для обучения с обязательным просмотром кода
мы поговорим о том, как вы можете использовать
обязательный обзор кода для обучения каждому
другие — к блочным испытаниям, шаг 3
не нарушайте свой код на последнем шаге I
расскажет о том, как вы можете
отделите свой код на единицы, используя два
шаблоны проектирования и силы оружия
давайте погрузимся в первый шаг ,
коммиты должны быть единично проверены всеми в
ваша команда должна согласиться с тем, что с этого момента
на no commit не входит в репозиторий
без этой фиксации
он в идеале проверяет, что вы делаете это на
начале проекта, однако в
Практика, которая почти никогда не бывает
просто нет стимула писать
модульные тесты в начале вашего
спроектировать код настолько мал и
управляемый и симпатичный никто никто не
боюсь, что тестирование кода
действительно трудно продать в тот момент, но позже
это намного проще, когда ваш код имеет
выросли до миллиона линий и четыре
сотни странных краевых дел и всех
перегружены ошибками регрессии, которые
это тот момент, когда вы продаете людей на
модульное тестирование и когда вы делаете ячейку
должен быть ясным и простым, не совершает
без тестов это правило реалистично
легко запомнить, что это однозначно
и это позволяет вам работать в небольших
куски, которые позволяют вам сжать его
мимо любой точки волосы медленно, но
безусловно, придерживаясь
без правил проведет вам систему
и это шаг первый со стороны
что коммиты должны быть проверены на единицу
второй шаг — с обязательным кодом
Тестирование модуля тестирования трудно сделать
эмоционально жесткое модульное тестирование
зубные зубы
он просто не обеспечивает достаточно мгновенного
удовлетворение, чтобы быть естественным для нас, мы
есть мозг обезьяны, и этот мозг
не приспособлен для создания долгосрочного компьютера
архитектуры этот мозг адаптирован для
быстрое приобретение поэтому мы
нужна структура, чтобы держаться
подотчетная структура ореха мои друзья
обязательный код отзыва обязательный код
обзоры сделают чудеса для вашего кода
качество список преимуществ
обязательный обзор кода действительно долго , но
есть много других разговоров и книг и
материал о том , что таким образом я собираюсь сосредоточиться
на одном из них вы можете использовать обязательные
обзор кода, чтобы оставаться приверженным единице
тестирование, и это связано с тем, что
Обзор кода позволяет начать использовать
один простой подлый или чрезвычайно эффективный
трюк, когда вы просматриваете код и
вы немного сомневаетесь, если
тесты на самом деле хорошие
вы можете просто немного портить вещи
бит в коде и посмотреть,
сломать, и если им это не нравится, они должны
то вы просто комментируете фиксацию
говоря, эй, этот код выглядит неплохо
но я мог бы удалить всю эту строку
и тесты все еще проходят, вы могли бы сделать
уверен , что это покрыто тестом как
хорошо , что очень хорошо действенное
обратной связи, и это действительно хороший способ
преподаватели, незнакомые с подразделением
тестирование, как войти в него, это шаг
два преподавателя с обязательным просмотром кода
третий шаг не нарушает ваш код, как только
ваша команда начинает писать модульные тесты для
существующая база кода, которую вы будете запускать
в или огромный в мол , и это
звучит что-то вроде этого, но
этот код слишком сложный для модульных тестов
не паникуйте, это нормально, это происходит
всем
словом комплекс латинский, и это означает
плетеный смешанный комплекс является
напротив другого латинского слова, называемого
симплекс, который означает отдельный или
бок о бок или узлы вы получаете, когда
вы говорите, что ваш код тоже
комплекс, вы на самом деле говорите, что это
не в единицах, а не неудивительно
ваш код должен быть в единицах по порядку
для вас, чтобы проверить его, к счастью для
нас есть хорошо документированные и
проверенные временем образцы дизайна, которые помогут нам
сложить плетеный код в единицы, которые мы
поговорим о двух из них
инъекции и фасады. Начну с
инъекции Я собираюсь описать
проблема, и тогда я собираюсь показать вам
как его решить, используя инъекцию
представьте, что у нас есть система, которая
заказов и платежей, которые мы обнаружили
что наша система выйдет из строя, если банк
мы хотим исправить это, показывая
не удалось подключиться к вашему банковскому сообщению
так что наши клиенты раздражаются
их дерьмовый банк вместо нас мы
также хотите написать модульный тест, чтобы
этот AAG не редкость, его уродливая голова снова
поэтому представьте, что наша система выглядит
это имеет порядок, скажем так,
который мы называем созданием порядка по заказу
вещь в результате вызова create
закажите вещь заказа внутри себя
инстанцирует вещь ненависти , как этого
то заказ будет затем вызывать оплату на
так как в
очередь отправляет запрос платежа на
назад, как сейчас, мы хотим написать
единичный тест, который имитирует банк
возвращая ошибку, один хороший способ
решение это будет подделка , сталкивающихся с
фиктивный платить вещь , которая , в свою очередь , возвращает
ошибка в том, что мы не можем
сделайте это в этой архитектуре
потому что картина создается внутри
заказать вещь и юнит — тесты , которые мы бы
запись не будет иметь возможности получать его
не переходя в предмет заказа и
это пример плетеных кодов там
это блок , который мы хотим проверить заказ
но он плетен вместе с
живопись, и это мешает нам
проверяя порядок вещей отдельно, мы
не может писать модульные тесты для заказа
потому что это не единица, это
на самом деле два блока хорошо сплелись
вместо инстанцировании картины внутри
вещи заказа, которые мы создаем вне
и вводить вставку на заказ, как
это вещь заказа больше не
ответственный за создание платежной вещи
вместо этого теперь он ожидает, что будет
вещь, созданная за пределами
реальный код, мы будем использовать реальную инъекцию
оплачивать вещи, пока блок тесты вместо этого
введи и издеваешься с Пейсли сейчас
когда мы пишем наши модульные тесты мы
может просто рассказать вам,
выбросить ошибку при вызове платежа
например, вводят платные вещи в
порядок , что вместо того , заказав
вещь создает вещь в знак самого себя
мы unbraided инструмент , позволяющий нам
для проверки их как отдельных единиц, и что
это образец инъекции, который мы сейчас
посмотрим на другую проблему, и я
я покажу вам, как его решить
используя фасад, теперь представьте себе аналогичную
сценарий, в котором у вас есть заработная плата и
у вас есть заказ, но картина
это не ваш код, это третий
участник, что картина
компания предоставляет и теперь представьте, что
API-интерфейс для оплаты выглядит так:
сделайте платеж, который вы начнете, пройдя
Конечный URI конечного пользователя API
к методу подключения и API
конечная точка — это то же самое каждый раз, когда
вернет новый объект в соединение
который вы в свою очередь , будет вызывать погасить
метод оплаты хочет защиты
приемлемость, которой вы знаете
устаревший параметр, который всегда должен быть
установите значение true, и он также хочет получить сумму
что, в свою очередь, дает объект ответа
который имеет свойство, называемое успехом
это не лучший API, это не
худший API, это довольно легко назвать, но я
теперь вы хотите приостановить это видео и
Представьте, что вы сбиваете этот API
Вы прошли все же вы должны я
жду горячего, да, пауза, конечно, ты
сделал
нет, ты не подумал, что бы
должны сначала создать макет ответа
объект здесь внизу, то вы
создать макет объекта соединения в
средний с оплатой, которая вернется
демократии и, наконец, создать
макет рисунка с помощью метода подключения, который
возвращает объект фиктивного соединения, когда
подключите этот вызов, который не является ракетой
но это очень громоздко и
вы будете повторять этот код, который
насмешливый танец для каждого теста , и это
очень раздражает, потому что мы не тестируем
здесь мы проверяем
упорядоченная вещь и эти тесты только
заинтересованы в одном, что правильное
сумма передается на оплату и
эффективный способ борьбы с этим является
просто инкапсулируйте весь API за
фасад , чтобы упростить и выровнять его , как
это то, что мы сделали здесь, — это обернуть
вся картина внутри платежа
фасад и фасад гораздо проще
Интерфейс так же , как единственный метод оплаты труда в
этот новый реорганизованный мир вместо
прохождение в платной вещи непосредственно в
вещь заказа, которую мы просто передаем в
фасад, как сейчас, при написании теста
мы просто собираем фасад оплаты вместо
насмехаясь над этим, если бы мы были
насмешливые получки вещи непосредственно каждый
тест должен будет сделать кучу вещей
чтобы отметить платеж, создающий это
объект соединения и т. д., но
API-интерфейс платежного фасада плоский и глупый, поэтому
единственный вызов, который необходимо проверить
mock — это призыв к оплате в этом видео, которое мы имеем
говорили о том, как заставить свою команду
начальное тестирование, о котором мы говорили
три простых вещи, которые вы можете сделать
дизайн, который совершает, должен быть проверен на модуле
преподавать с обязательным пересмотром кода и
не нарушать код
вы видите, что Джексон и Сокс у вас есть
просто смотрел эпизод веселья
функция это еженедельное шоу, где мы
постарайтесь стать более возбужденными и уверенными
о программировании , исследуя старые
мудрость дикие идеи и с удовольствием я
один делает здесь разговор, но шоу
вы можете прокомментировать
ниже и скажите , кто вы и как
вы хотите улучшить как программу, наконец,
и, самое главное, убедитесь, что вы
не пропустите следующий эпизод веселья
функция подписывается на канал или
следуйте за мной на твиттере в MP Jamie, пока
следующий понедельник останется любопытным
Please follow and like us:

Be First to Comment

Добавить комментарий