Действительно ли регрессионные тесты являются всем набором тестов или образцом тестов?

Не делайте это слишком сложным. Включите значение base и обработайте parameter, где это необходимо, с помощью if или guard и необязательного связывания:

init?(base: String, parameter: String?) {
    switch base {
    case "a":
        guard let p = parameter, let foo = Foo(rawValue: p) else { return nil }
        self = .a(foo)
    case "b":
        self = .b
    case "c":
        guard let p = parameter, let bar = Bar(rawValue: p) else { return nil }
        self = .c(bar)
    default:
        return nil
    }
}

Легко понять, без принудительного развертывания и [115 ] или Bar значения создаются только один раз (при необходимости).

Это также сводит к минимуму тесты: в качестве примера, MyEnum(base: "a", parameter: nil) может перейти к случаю "a" и вернуться nil. В вашем операторе switch он не соответствует случаю ("a", let p?), а затем все еще проверяет остальные случаи.

7
задан Thomas Owens 30 October 2008 в 16:14
поделиться

8 ответов

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

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

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

5
ответ дан 6 December 2019 в 19:44
поделиться

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

5
ответ дан 6 December 2019 в 19:44
поделиться

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

1
ответ дан 6 December 2019 в 19:44
поделиться

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

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

1
ответ дан 6 December 2019 в 19:44
поделиться

мое понимание термина 'регрессионное тестирование':

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

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

1
ответ дан 6 December 2019 в 19:44
поделиться

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

0
ответ дан 6 December 2019 в 19:44
поделиться

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

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

0
ответ дан 6 December 2019 в 19:44
поделиться

В целом подмножество тестов функции для новой возможности, представленной в версии X продукта, становится основанием регрессионных тестов на версию X+1, X+2 и так далее. Со временем можно уменьшить время, потраченное функцией/регрессионными тестами стабильных функций, которые не пострадали от регрессий. Если функция страдает от большого количества регрессий, то может быть выгодно увеличить акцент на функцию.

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

0
ответ дан 6 December 2019 в 19:44
поделиться
Другие вопросы по тегам:

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