Если поблочное тестирование является настолько большим, почему больше компаний не делает его? [закрытый]

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

MSDN заявляет, что VirtualQueryEx способен делать такую ​​вещь.

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

103
задан 3 revs 2 April 2009 в 23:30
поделиться

36 ответов

По моему опыту, существует несколько факторов, вовлеченных в это:

  1. управление действительно не понимает то, что поблочное тестирование действительно, или почему оно имеет реальную внутреннюю ценность им.
  2. управление имеет тенденцию более касаться быстрой доставки продукта и (неправильно) рассматривает поблочное тестирование как контрпродуктивное к той цели.
  3. существует неправильное восприятие, что тестирование принадлежит только pervue QA. Разработчики являются кодерами, и не могут тесты записи.
  4. существует общее неправильное восприятие, что управление должно будет потратить деньги, чтобы сделать поблочное тестирование правильно, несмотря на то, что инструменты в свободном доступе. (Существует, конечно, разработчик увеличивают время для рассмотрения, но это не действительно препятствует.)
  5. ответ Will закруглит этот ответ: очень трудно определить значение тестового кода (отредактируйте jcollum)

Естественно, существуют другие факторы, но это, с чем я столкнулся до сих пор.

112
ответ дан 3 revs, 3 users 88% 5 November 2019 в 11:13
поделиться

Я думаю, что часть проблемы - то, что разработчики ожидают, что деловые люди, чтобы иметь то же множество значений и действительно заботиться об ответе на "должны мы модульный тест или нет?". Мы не заставляем одобрение заранее бизнеса использовать высокоуровневый язык, а не ассемблер - это - просто обычно разумный способ сделать работу.

точка, мы являемся единственными, квалифицированными для совершения вызова (который не должен говорить, что у всех нас есть то же знание о теме). Кроме того, даже если Ваша команда, в рамках проводимой политики, не делает поблочного тестирования (или name-your-method-of-the-day), это обычно не означает, что Вы не можете сделать этого.

истина, мы не можем действительно доказать ROI на большей части материала, который мы делаем при слишком прекрасной из гранулярности. То, почему поблочное тестирование сохранено до этого unreasonable/non-typical стандарта доказательства, вне меня...

2
ответ дан Jeff Kotula 5 November 2019 в 11:13
поделиться

Люди ленивы и только принимают изменение при принуждении к.

2
ответ дан 2 revsHunter 5 November 2019 в 11:13
поделиться

Мои 2 цента:

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

Так, это - просто вопрос времени.

существуют дебаты Martin-Coplien, в которых Bob Martin утверждает что:

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

[ http://www.infoq.com/interviews/coplien-martin-tdd]

2
ответ дан robi-y 5 November 2019 в 11:13
поделиться

Если Вы хотите продать всех на тестировании, делают следующее:

  1. Запись набор тестов.
  2. Уведомляют других разработчиков, которые изменяют код и проваливают Ваш тест.
  3. Они исправят свой код.
  4. Теперь можно выпустить без тех конкретных ошибок.

Даже менеджер мог понять это.

2
ответ дан 2 revs 5 November 2019 в 11:13
поделиться

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

В большинстве компаний, которые поставили продукты, существенное подразделение QA было создано с головой QA высшего уровня. Тестирование является феодальным владением команды QA.

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

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

я видел больше интереса и принятия Поблочного тестирования в группах, где QA не был отделен в отдельную функцию задания

2
ответ дан 2 revs, 2 users 94% 5 November 2019 в 11:13
поделиться

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

1
ответ дан David Basarab 5 November 2019 в 11:13
поделиться

Большинство компаний бесполезно. Не тот, что Вы (или I) работаете на, очевидно.

1
ответ дан Roger Lipscombe 5 November 2019 в 11:13
поделиться

Конечно, в идеальном мире, Вы не можете привести доводы против наличия модульного теста.

Однако, пишете ли Вы, модульный тест зависит в ряде вещей:

  • , Как программное обеспечение будет использоваться. Если бы Вы писали программное обеспечение для просто себя, то Вы записали бы модульные тесты?Наверное, нет. Если Вы писали предварительное серийное программное обеспечение, которое будет продано коммерчески, вероятно, да.

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

  • сложность кода: только тестовый код, для которого нужен тест. Для одного метода присвоения переменной строки не нужно тестирование. 50 методов строки с разнообразными путями выполнения, вероятно, делают.

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

и поскольку другие указали, тест только так же хорош как человек, который записал это.

3
ответ дан 3 revs 5 November 2019 в 11:13
поделиться

я пропускаю поблочное тестирование - оно просто делает жизнь легче.

, Который является не , действительно, достаточная причина компании для принятия поблочного тестирования.

достаточная причина А могла бы быть "более дешевой" (и/или, "лучше"): который не столь легко доказать о поблочном тестировании.

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

существует много разработчиков, которые не думают мир модульных тестов: включая некоторых то, кто думает, что другие формы тестирования (например, автоматизированная интеграция/функциональные испытания) могут быть более дешевыми и более ценными, например , Является мной единственный dev, кому не нравятся модульные тесты?

3
ответ дан ChrisW 5 November 2019 в 11:13
поделиться

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

3
ответ дан Shaun Bowe 5 November 2019 в 11:13
поделиться

1) Это твердо
2), Это занимает время
3), очень трудно решить, что значение тестового кода

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

87
ответ дан 3 revs, 2 users 83% 5 November 2019 в 11:13
поделиться

Легко поместить всю вину на “ управление ” Но управление действительно сообщение, Вы к конкретно не делаете какое-либо поблочное тестирование?

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

я думаю, что реальный ответ на Ваш вопрос: поблочное тестирование является действительно трудным, и студенты информатики не обучены ему.

легко, когда Вы пишете свой собственный строковый класс. При тестировании реального продукта Вы сталкиваетесь с проблемами, о которых никто не сказал Вам в слайдах powerpoint:

  • Взаимодействие с пользователем. Половина Вашего приложения является логикой пользовательского интерфейса. Как Вы тестируете его автоматизированным способом, который не ломается, если Вы перемещаете кнопку?
  • Взаимодействие с внешними API и платформами. Если Вы пишете драйвер ядра Windows, как делают Вас модульный тест это? Вы пишете тупики для каждого IRP и функции ядра, которую Вы используете, эффективно создавая моделирование ядра ОС?
  • Сетевая связь вещь 21-го века. Как Вы координируете модульный тест, состоящий из нескольких распределенных компонентов?
  • , Как Вы выбираете хорошие тестовые сценарии? Я обычно вижу, что люди пробуют “ сделайте случайные вещи в цикле 1 000 повторений и посмотрите если он breaks” подход. Когда Вы делаете это, усилие выше, чем возвраты, важные ошибки пропущены, и от поблочного тестирования отказываются.
  • , Как Вы тестируете это, требования к производительности встречены?
  • Знание шаблонов в тестировании недостаточно: тупики, консервированные ответы, регрессионное тестирование является понятиями, которые не знает большинство людей. Сколько в Вашем месте работы на самом деле читает книгу о поблочном тестировании?

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

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

70
ответ дан flodin 5 November 2019 в 11:13
поделиться

Большинство тестов ничего не тестирует.
Вы пишете fileopen () функция и unittest, который перестал работать, если файл не существует и успешно выполняется, если файл действительно существует.Отлично! Теперь Вы проверяли, работает ли это с именем файла в китайцах BIG5? на доле NFS? на перспективе с файлом на флеш-карте и включенном контроле учётных записей?

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

Модульные тесты проверяют ошибки в коде отдельных функций. Они могут работать на уровни доступа к данным, библиотеки математики и т.д., где исходные данные/выводы известны, и внутренняя структура сложна, но для большого количества случаев они - просто пустая трата времени.
Они перестали работать, когда ошибки происходят из-за взаимодействий между различными частями кода или с ОС и пользователем. Проблемы как высокие/низкие настройки DPI, портящие диалоговое окно или установку иностранного языка, подкачивающую a'.' и'', обычно не находятся.

28
ответ дан 2 revs 5 November 2019 в 11:13
поделиться

Были исследования, сделанные на ROI модульных тестов - см. этот вопрос .

15
ответ дан 2 revs 5 November 2019 в 11:13
поделиться

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

15
ответ дан Steve Rowe 5 November 2019 в 11:13
поделиться

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

Модульные тесты имеют затраты (создание, обслуживание, и работающий) и только стоят, если они предоставляют большие преимущества, чем те затраты. Тестовое создание является навыком как любой другой, оно требует определенного опыта и знаний для успеха. Без достаточного опыта даже для в других отношениях опытных разработчиков очень легко создать низкое качество, низкую стоимость и/или дорогостоящие модульные тесты, которые не стоят. Особенно так данный, насколько трудный это может быть должно определить ценность модульного теста.

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

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

12
ответ дан 3 revs 5 November 2019 в 11:13
поделиться

Ну, моя компания не пошла с TDD или Поблочным тестированием. Честно говоря, мы не уверены, как сделать это. Мы можем, очевидно, сделать это для глупых функций как CapitalizeString (), и т.д., но мы не знаем, как сделать это для очень сложных систем со сложными объектами. Кроме того, у большинства людей, у которых взяли интервью, есть или нулевой опыт или ограниченный опыт. Кажется, что Поблочное тестирование является большим от ТАК толпа, но не особенно большим в доступном workpool.

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

Короче говоря, мы не верим в TDD, но мы хотели бы к Модульному тесту. У нас просто нет опыта сделать так, и мы не можем найти его легко.

11
ответ дан Steve 5 November 2019 в 11:13
поделиться

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

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

Редактирование: Что касается причины, я думаю, что они просто не знают о текущих инструментах там, которые делают CI и поблочное тестирование чрезвычайно легкими.

11
ответ дан 2 revs 5 November 2019 в 11:13
поделиться

Вероятно, комбинация нескольких вещей Вы уже упомянули. Его трудное для измерения снижения расходов TDD. Если Вы хотите произвести свой IT на стороне, можно показать, сколько Вы оплачиваете в год парней, которых Вы имеете штатный по сравнению со стоимостью заключения контракта его; его очень конкретное. Как сказать, "О, этот тест поймал ошибку, которая возьмет меня 4 часа, чтобы отладить и зафиксировать..."?

5
ответ дан Ovi Tisler 5 November 2019 в 11:13
поделиться

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

Вдобавок ко всему, Вы создаете команду (или кто-то) должен поместить инфраструктуру на месте и поддержать его.

И как Alan говорит, много мест просто не использует лучшие практики - они просто хотят видеть что-то материальное.

5
ответ дан 2 revs 5 November 2019 в 11:13
поделиться

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

6
ответ дан Andy White 5 November 2019 в 11:13
поделиться

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

4
ответ дан Rob K 5 November 2019 в 11:13
поделиться

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

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

4
ответ дан Soviut 5 November 2019 в 11:13
поделиться

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

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

я полагаю, что это - ответ на Ваш вопрос , "что отсутствует и почему не больше компаний, делающих поблочное тестирование" . :-)

6
ответ дан 2 revs, 2 users 89% 5 November 2019 в 11:13
поделиться

Двумя вещами являются препятствия поблочному тестированию

  1. , Все новое трудно сделать
  2. Все, что не имеет никакой измеримой прибыли, плохо.
  3. Люди ленивы. Разработчики, действительно.

В моей компании (> 5.000 emp) модульные тесты "там", но никакой шанс сделать TDD или получить большое покрытие кода. Это трудно для выполнения его.

1
ответ дан guerda 5 November 2019 в 11:13
поделиться

Я работал на 3 компании до сих пор и только что недавно начал писать "offical" NUnit тесты, и я должен сказать, что я - большой поклонник. Существует 2 точки, которые я заметил однако за последние несколько недель:

  1. Это зависит от приложения - существуют определенные приложения/части приложения, которое может быть очень легко к модульному тесту. Функция, которая делает что-то в основном тот же каждый раз и приводит к легко распознаваемому результату. И существуют разделы, которые не делают этого: блок кода, который печатает кристаллические отчеты или изменяет изображение - здесь глазное яблоко, на самом деле необходим и вероятно лучше/быстрее. Эти области могут отговорить людей пробовать к тестам записи. Они затем только начинают думать это, если определенные области не могут быть протестированной единицей, почему беспокойство?

  2. гранулярность теста - много DEVs/QAs уже имеют в распоряжении своего рода автоматизацию, чтобы 'протестировать' часть функциональности и запутаться относительно того, как это отличается от модульного теста. В зависимости от их теста это не могло бы быть. Важная вещь здесь, которая занимает время для понимания, состоит в том, что хороший модульный тест полностью детализирован. Это тестирует минимальную часть логики, которая имеет смысл, который делает это повторяемым, автоматическим, и надо надеяться всегда допустимым. Это взяло меня немного, чтобы действительно ценить, как полезный то есть, особенно когда Вы имеете огромную кодовую базу и любите выполнять регрессионные тесты после внесения изменения, чтобы видеть если Вы просто foobared целое приложение.

1
ответ дан LoveMeSomeCode 5 November 2019 в 11:13
поделиться

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

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

Мы можем все утверждать, что соблюдение твердых методов разработки программного обеспечения является ответственностью каждого разработчика. Однако ROI значит много для отдельных разработчиков, как он делает к управлению.

1
ответ дан Rocket Surgeon 5 November 2019 в 11:13
поделиться

Это собирается немного походить на встречу AA.

я - разработчик программного обеспечения.

я говорил о разработке программного обеспечения своему брату в РОЖДЕСТВО (он - бизнес-аналитик).

  • Он работал BA в течение 10 лет.
  • разговор нашел время для тестирования.
  • Он никогда не видел (или слышал о), автоматическое поблочное тестирование.
  • Или даже слышал о разработчиках, делающих его.
  • В то время он работался для некоторых крупных компаний "алфавита" на больших правительственных контрактах.

Поэтому насколько я мог сказать, 100's вовлеченных разработчиков, ни один из них не услышал о поблочном тестировании.

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

1
ответ дан Tim Williscroft 5 November 2019 в 11:13
поделиться

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

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

0
ответ дан greg 5 November 2019 в 11:13
поделиться
Другие вопросы по тегам:

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