Есть ли веское доказательство ROI поблочного тестирования?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
126
задан Dariusz Woźniak 13 November 2016 в 20:28
поделиться

9 ответов

Да. Это ссылка к исследованию Boby George и Laurie Williams в NCST и другой Nagappan и др. Я уверен, что существует больше. Доктор Williams публикации на тестировании может обеспечить хорошую начальную точку для нахождения их.

[РЕДАКТИРОВАНИЕ] Эти две бумаги выше специфически ссылочного TDD и выставочного увеличения 15-35% во время начального развития после принятия TDD, но 40-90%-го уменьшения в предрелизных дефектах. Если Вы не можете достигнуть полнотекстовые версии, я предлагаю использовать Google Scholar , чтобы видеть, можно ли найти общедоступную версию.

97
ответ дан 24 November 2019 в 00:54
поделиться

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

, Почему?

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

платформа, учащаяся, занимает очень мало времени.

Запись одного теста, всего один, занимает очень мало времени.

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

Это - все, что требуется. Никто не должен знать, что Вы делаете его. Просто сделайте это.

28
ответ дан 24 November 2019 в 00:54
поделиться

Я проявляю другой подход к этому:

то, Какое обеспечение у Вас есть тот свой код, корректно? Или это, это не повреждает посылку X, когда кто-то в Вашей команде изменяет func1 ()? Без модульных тестов, сохраняющих Вас 'честный', я не уверен, что у Вас есть много обеспечения.

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

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

Вот то, где это платит за себя: 1) Вы уверены в своем коде и 2) Вы ловите проблемы ранее, чем Вы были бы иначе. Вы не сделали, чтобы парень QA сказал "эй, Вы не беспокоили проверку границ xyz () функция, не так ли? Он не добирается, чтобы найти, что ошибка, потому что Вы нашли его месяц назад. Это хорошо для него, хорошо для Вас, хорошо для компании и хорошо для клиента.

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

16
ответ дан 24 November 2019 в 00:54
поделиться

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

Поблочным тестированием или Разработкой через тестирование (TDD) является Метод проектирования, не метод испытания. Код это записало тесту управляемые взгляды, полностью отличающиеся от кода, который не является.

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

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

Этот спор или выигран на основе доверия (одна из основных ценностей гибких команд) или потерян на основе ролевого питания побеждающей стороны. Даже если бы сторонники TDD побеждают на основе ролевого питания, я считал бы его, как потеряно.

10
ответ дан 24 November 2019 в 00:54
поделиться

Вот большое и интересное чтение парня, изменяющего его компанию из. Это не ограничено TDD. http://jamesshore.com/Change-Diary/ Примечание, что он не убедил "бухгалтеров" в течение достаточно долгого времени и сделал "партизанскую тактику" вместо этого.

5
ответ дан 24 November 2019 в 00:54
поделиться

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

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

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

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

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

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

Запускаются с чего-то столь простого, что Вы не замечаете, что делаете это. Когда обучение марафону, запустите путем обхода 9 метров и выполните 1 метр, повторитесь.

4
ответ дан 24 November 2019 в 00:54
поделиться

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

Редактирование : например, как указано, книга" Код, Завершенный " отчеты о таких исследованиях (абзац 20.3, "Относительная Эффективность Качественных Методов"). Но существует также частное исследование в консультационном поле, которое доказывает это также.

4
ответ дан 24 November 2019 в 00:54
поделиться

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

Много лун назад я был новым выпускником, работающим над большим проектом VB6, и имел случай для записи большого тела кода хранимой процедуры. Из подсистемы я писал, что она составила о 1/4 целой кодовой базы - приблизительно 13 000 LOC из 50K или около этого.

я записал ряд модульных тестов на хранимые процедуры, но код поблочного тестирования VB6 UI не действительно выполним без инструментов как Рациональный Робот; по крайней мере, это не было тогда.

статистические данные от QA на части были то, что приблизительно 40 или 50 дефектов были повышены на целой подсистеме, который два порожденный из хранимых процедур. Это один дефект на 6 500 строк кода по сравнению с 1 приблизительно на 1 000-1 200 через целую часть. Примите во внимание также, который о 2/3 кода VB6 был шаблонным кодом для обработки ошибок и входа, идентичного через все процедуры.

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

0
ответ дан 24 November 2019 в 00:54
поделиться

Больше о TDD, чем о строго модульном тестировании, вот ссылка на Реализация улучшения качества посредством тестирования разработка: результаты и опыт четырех промышленных групп , статья Нагаппана, Э. Майкла Максимилиена, Тирумалеша Бхата и Лори Уильямс. документ, опубликованный группой Microsoft Empirical Software Engineering and Measurement (ESM) и уже упомянутый здесь.

Команда обнаружила, что команды TDD производят код, который на 60–90% лучше (с точки зрения плотности дефектов), чем команды, не использующие TDD. Однако командам TDD требовалось от 15% до 35% больше времени для завершения своих проектов.

6
ответ дан 24 November 2019 в 00:54
поделиться
Другие вопросы по тегам:

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