среда, 4 марта 2009 г.

Регрессионное тестирование

В дополнение к моим заметкам на полях.

РТ - это тестирование, направленное на проверку того, что объект тестирования со временем не регрессирует по какому-то показателю качества.
Т.е. в общем случае к РТ может относиться любой вид тестирования (функциональное, производительности, юзабилити и пр.). Но чаще всего речь идет о регрессионном функциональном тестировании, т.к. функциональность - наиболее важный показатель. Как следует из определения РТ, это некий набор тестов, который выполняется с некоторой периодичностью.
И тут возникают следующие вопросы:
  1. Как часто надо выполнять данные тесты?
  2. Какие именно тесты необходимо включить в набор РТ?

Собственно, на эти вопросы я и постараюсь ответить. В общем-то, они возникают по одной простой причине - не хватает времени. Т.е. при большом желании и наличии времени, можно было бы на каждой версии выполнять все тесты. Но, во-первых, это долго, нудно и неинтересно, а во-вторых, не эффективно, это время можно потратить с большей пользой :) По поводу первого вопроса, в книге С. Канера “Тестирование ПО” дается один дельный совет: выполнять тесты не на каждой версии, а каждые несколько версий. Это заметно снизит нагрузку на тестирование. Т.к. совет хороший, предлагаю им воспользоваться :) Остается второй вопрос. Даже выполняя тесты с периодом больше одной версии, все их выполнять скорее всего не получится. По этому желательно уменьшить их количество до приемлимого. Но тут есть опасность того, что выбранный набор окажется недостаточным, и будут пропущены дефекты. Можно выполнять тесты, с наивысшим приоритетом, но тогда есть вероятность, что до наименее приоритетных тестов дело вообще не дойдет. Используя совет С. Канера, я решил проблему РТ следующим образом.
  1. Разные тесты имеют разный приоритет, но выполнять нужно их все. Период выполнения (в количестве версий) для таких тестов может различаться. Для одних он составит 2-5 версий, для других - 10-20. Период можно подбирать для каждого теста индивидуально.
  2. Таким образом, тесты получили новый атрибут - период выполнения. Я его называю просто “регрессия”. Это число, равное количеству версий, через которое нужно повторить тест. Другими словами, это некий интервал доверия теста. Если “регрессия” теста равна 5, то это означает, что после выполнения, результату теста можно будет доверять еще на протяжении 5 версий.
  3. После истечения “интервала доверия”, результат теста считается невалидным. И выполнение теста нужно повторить.


Это не мое, это принадлежит © inerro

4 комментария:

  1. а как же автоматизированное тестирование?! для регрессионного - самое оно!

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

    ОтветитьУдалить
  3. Понял.
    Автоматизация это сугубо положительно, ей стоит заниматься, но требует высокой квалификации и больших затрат. Не всегда возможно. Хотелось - но не всегда возможно.
    "Максим Горький" не взлетит бы на одном радиальном двухрядном.

    ОтветитьУдалить