Что самый убедительный путь состоит в том, чтобы потребовать формализованного поблочного тестирования?

Это связано с добавлением дополнений, чтобы удовлетворить ограничениям выравнивания. Уравнение структуры данных влияет как на производительность, так и на правильность программ:

  • Недопустимый доступ может быть жесткой ошибкой (часто SIGBUS).
  • Неравномерный доступ может быть мягкой ошибкой. Либо исправлено в аппаратном обеспечении, либо для снижения производительности. Или исправлено путем эмуляции в программном обеспечении, для серьезной деградации производительности. Кроме того, атомарность и другие гарантии параллелизма могут быть нарушены, что приводит к незначительным ошибкам.

Вот пример использования типичных настроек для процессора x86 (все используемые 32 и 64-битные режимы):

struct X
{
    short s; /* 2 bytes */
             /* 2 padding bytes */
    int   i; /* 4 bytes */
    char  c; /* 1 byte */
             /* 3 padding bytes */
};

struct Y
{
    int   i; /* 4 bytes */
    char  c; /* 1 byte */
             /* 1 padding byte */
    short s; /* 2 bytes */
};

struct Z
{
    int   i; /* 4 bytes */
    short s; /* 2 bytes */
    char  c; /* 1 byte */
             /* 1 padding byte */
};

const int sizeX = sizeof(struct X); /* = 12 */
const int sizeY = sizeof(struct Y); /* = 8 */
const int sizeZ = sizeof(struct Z); /* = 8 */

Можно минимизировать размер структур путем сортировки (например, структура Z в приведенном выше примере).

ВАЖНОЕ ЗАМЕЧАНИЕ: В стандартах C и C ++ указано, что выравнивание структуры определяется реализацией , Поэтому каждый компилятор может выбрать выравнивание данных по-разному, что приводит к разным и несовместимым макетам данных. По этой причине при работе с библиотеками, которые будут использоваться разными компиляторами, важно понять, как компиляторы выравнивают данные. Некоторые компиляторы имеют параметры командной строки и / или специальные #pragma операторы для изменения настроек выравнивания структуры.

9
задан not-bob 23 September 2008 в 12:43
поделиться

12 ответов

Я использую Знатока с плагинами Surefire и Cobertura для всех моих сборок. Фактические тестовые сценарии создаются с JUnit, DbUnit и EasyMock.

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

Идентификация Данных тестирования DbUnit является большой для загрузки данных тестирования для Ваших модульных тестов.

При записи Тестов я использую JUnit для создания тестовых сценариев. Я пытаюсь записать сам документирующий тестовые сценарии, но буду использовать Javadocs для комментария чего-то, что не очевидно.

При отслеживании и Предоставлении доступа к Результатам Доступными я интегрирую поблочное тестирование в свой цикл сборки Знатока с помощью Безошибочного плагина, и я использую плагин Corbertura для измерения покрытия, достигнутого теми тестами. Я всегда генерирую и публикую веб-сайт включая отчеты Surefire и Cobertura как часть моей ежедневной сборки, таким образом, я вижу то, что привели к сбою/передали тесты.

4
ответ дан 4 December 2019 в 13:51
поделиться

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

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

После того как Вы убедили своих поддерживающих разработчиков, убедите управление вместе.

4
ответ дан 4 December 2019 в 13:51
поделиться

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

2
ответ дан 4 December 2019 в 13:51
поделиться

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

Как большинство сред мейнфреймов у нас было три области, разработка, Гарантия качества и Производство. Программисты разработали в разработке и единице, протестированной там, и после того как они закончили и были рады, что единица была перемещена в среду QA (с тестом и документами результатов), где это была система, протестированная специализированным штатом QA. Разработка к миграции QA была формальным шагом, который произошел в течение ночи. Однажды QA'ed код был перемещен в Производство - и у нас было очень немного ошибок.

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

Извлечение подходящих точек -

  1. Репутация кодера, связанная с доставкой ошибки бесплатный протестированный код
  2. Значительные издержки, связанные с движущейся протестированной единицей, кодируют к следующему уровню, таким образом, мотивация, чтобы не повторить это и получить его в правильный первый раз.
  3. Тестирование системы, выполненное различными людьми к поблочному тестированию - идеально другая команда.

Я уверен, что Ваша среда будет отличаться, но принципалы могли бы быть переводимы.

2
ответ дан 4 December 2019 в 13:51
поделиться

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

Что касается управления необходимо подчеркнуть, сколько времени потрачено впустую из-за ядерного взрыва, который происходит, когда необходимо внести изменение в кодовую базу X, который не находится под тестом.

Многие разработчики не понимают, сколько они осуществляют рефакторинг, не удостоверяясь, что они сохраняют поведение через всю систему. Для меня это - самое большое преимущество для поблочного тестирования и TDD, по-моему.

  1. Изменение требований к программному обеспечению
  2. Программное обеспечение изменяется для удовлетворения требованиям

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

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

Что касается того, когда к тесту записи на коде greenfield, я должен был бы защитить как можно больше. Проведите время, определяя поведения, что Вы хотите из своего тестирования системы и тестов записи первоначально выразить те высокоуровневые конструкции. Модульные тесты могут прибыть, поскольку мысли кристаллизуют.

Надеюсь, это поможет.

1
ответ дан 4 December 2019 в 13:51
поделиться

Образование и/или сертификация.

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

1
ответ дан 4 December 2019 в 13:51
поделиться

Существует большая разница между убеждением и требованием.

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

Думайте дважды прежде, чем создать и осуществить правила. Разработчики способны преодолевать их.

1
ответ дан 4 December 2019 в 13:51
поделиться

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

0
ответ дан 4 December 2019 в 13:51
поделиться

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

0
ответ дан 4 December 2019 в 13:51
поделиться

Напомните своей команде или другим разработчикам, что они - профессионалы, не любители. Работавший для меня!

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

0
ответ дан 4 December 2019 в 13:51
поделиться

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

0
ответ дан 4 December 2019 в 13:51
поделиться

Запишите набор их и продемонстрируйте, что поблочное тестирование улучшило Вашу производительность и качество Вашего кода. Без некоторого доказательства иногда люди не будут полагать, что это стоит того.

0
ответ дан 4 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: