2010-05-03 3 views
2

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

Теперь мои вопросы (вопросы) касаются:
1. Как вы можете мотивировать вас написать хорошие модульные тесты? (для устаревшего кода)
2. Важно ли мотивировать ваших коллег в написании модульного тестирования?
3. Как работодатель, как вы можете мотивировать своих сотрудников писать письменные тесты?

ответ

4

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

+0

Хмм очень похоже на ситуацию, в которой я нахожусь! ^^ особенно факт, что знание о базе кода звучит очень familier:] +1 – Bas

6

Люди получают мотивацию из-за ПРЕИМУЩЕСТВ. Люди не хотят делать то, что они считают, БОЛЬШЕ работы. Единичное тестирование означает МЕНЬШЕ. Это означает, что выходить с девушками больше. Это означает, что вы получаете больше, потому что вам не нужно каждую ночь кодировать до 11 вечера. Это означает, что вы собираетесь отдыхать больше. Это означает, что быстрее создавать программы для людей, которые не заинтересованы в том, чтобы закладывать.

Я обнаружил, что, когда я начал делать TDD (еще в 2002 или 2003 году), это было немного странно ... но даже за несколько дней я начал замечать огромные преимущества в производительности.

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

Очевидно, что стоимость этого увеличивается, чем больше ваш проект. Благодаря масштабным проектам это абсолютная находка в отношении экономии времени.

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

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

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

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

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

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

Во всяком случае, это моя коммерческая подача на TDD. ВЫГОДЫ!

+0

... до тех пор, пока модульные тесты имеют смысл и, по сути, охватывают все особые случаи. Иногда эти особые случаи станут очевидными во время разработки. Так что вам придется вернуться к этому тесту и расширить его :) – Thorarin

+0

+1 Тестирование устройства означает, что вы получите больше LOL –

+0

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

1

Как работодатель, как вы можете мотивировать своих сотрудников письменно на хорошие модульные тесты?

  • Имейте показатели производительности, оценивающие как блок тестового покрытия кода и блок качества теста в соответствии с решением каким-то надежный процессом (рецензирование?)

  • Есть очень четкое представление о много-discussed- на-SO преимущества хорошего модульного тестирования (например, улучшение затрат на техническое обслуживание, сокращение количества ошибок, простое/безопасное рефакторинг/повторная реализация).

  • Имейте культуру тестирования. Нет выпусков/проверок кода без новой/измененной функциональности. Основные обзоры, включающие обзоры тестов. Испытательные случаи являются частью требований/спецификаций.

Важно, чтобы мотивировать свои коллега в модульном тестировании пишущего?

  • Да. Единичное тестирование не очень простое, особенно хорошее, добросовестное модульное тестирование. И выгоды не мгновенные по сравнению с расходами. Поэтому люди склонны скучать по нему, если они не принуждаются политикой, очень убедительно убежденными примерами или промытыми мозгами культурой. Идеально все 3.