Что такое поблочное тестирование и как дела это? [дубликат]

Итак, я выяснил, в чем была проблема.

Проблема заключалась в том, что мне пришлось использовать «https», и я использовал http, по-видимому, Волли и Почтальон оба автоматически добавляли s в конце, но Retrofit по некоторым причинам этого не сделал.

125
задан Community 23 May 2017 в 11:47
поделиться

7 ответов

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

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

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

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

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

, Что...

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

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

, Как...

Почти всегда, процесс поблочного тестирования встроен в IDE (или посредством расширений) таким образом, что это выполняет тесты с каждой компиляцией. Много платформ существуют для помощи созданию модульных тестов (и действительно дразните objcts), часто называемый нечто Единица (cf. jUnit, xUnit, nUnit). Эти платформы обеспечивают формализованный способ создать тесты.

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

, Когда...

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

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

Что такое unittesting? Это хитро для определения. На техническом уровне Вы создаете функции, которые вызывают функции в Вашей кодовой базе и проверяют результаты. В основном Вы добираетесь, набор вещей как "утверждают (5+3) == 8", просто более сложный (как в DataLayer (MockDatabase ()) .getUser () .name == "Дилберт"). На уровне представления инструмента Вы добавляете автоматизированную, определенную для проекта проверку, если все все еще работает как Вы, принятые вещи работали. Это очень, очень полезно, если Вы осуществляете рефакторинг и если Вы реализуете сложные алгоритмы. Результатом обычно является набор документации и намного меньшего количества ошибок, потому что поведение кода придавлено.

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

необходимо протестировать как можно больше, пока тестовый код достаточно легок остаться непротестированным. Учитывая, что, нет, не все является тестируемым нормальным способом. Думайте Пользовательские интерфейсы. Думайте драйвер для шаттла или ядерной бомбы (по крайней мере, не с чистыми JUnit-тестами;)). Однако партии и много кода являются тестируемыми. Datastructures. Алгоритмы. Большинство Applicationlogic-классов. Так протестируйте его!

HTH. tetha

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

Что такое поблочное тестирование?

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

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

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

, Как Вы выполняете модульные тесты?

Воображают очень простую функцию, которую требуется протестировать:

int CombineNumbers(int a, int b) {
    return a+b;
}

код модульного теста выглядел бы примерно так:

void TestCombineNumbers() {
    Assert.IsEqual(CombineNumbers(5, 10), 15); // Assert is an object that is part of your test framework
    Assert.IsEqual(CombineNumbers(1000, -100), 900);
}

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

Теперь предполагают, что другой разработчик приезжает и изменяется эти CombineNumbers() функция для производительности или некоторая другая причина:

int CombineNumbers(int a, int b) {
    return a * b;
}

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

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

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

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

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

На, "Как сделать это" часть:

я думаю введение в , ScalaTest делает хорошее задание иллюстрирования различных стилей модульных тестов.

На, "Когда сделать это" часть:

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

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

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

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

http://www.nunit.org/index.php?p=quickStart&r=2.5

Является всем тестируемым? Обычно, если это вычисляет что-то тогда да. Код UI является целой другой проблемой для контакта с тем, хотя, поскольку моделирование пользовательских кнопок нажатия хитро.

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

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

, Что такое точно поблочное тестирование? Это встроено в код или выполнено как отдельные программы? Или что-то еще?

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

По существу, Вы пишете маленькие биты кода для тестирования отдельных битов кода. В мире .NET Вы выполнили бы эти маленькие биты кода с помощью чего-то как NUnit или MBunit или даже созданный в инструментах тестирования в Visual Studio. В Java Вы могли бы использовать JUnit. По существу исполнители тестов разработают Ваш проект, загрузят и выполнят модульные тесты и затем сообщат, передают ли они или перестали работать.

Как дела это?

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

, Когда это должно быть сделано? Разве там времена или проекты не должны делать этого? Действительно ли все является тестируемым единицей?

необходимо сделать это, где это имеет смысл. Не все подходит для поблочного тестирования. Например, код UI очень тверд к модульному тесту, и Вы часто извлекаете мало пользы из выполнения так. Бизнес-код Слоя однако часто очень подходит для тестов, и это - то, где большая часть поблочного тестирования фокусируется.

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

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

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