Регрессионные ошибки это когда

From Wikipedia, the free encyclopedia

From Wikipedia, the free encyclopedia

The regression (or regressive) fallacy is an informal fallacy. It assumes that something has returned to normal because of corrective actions taken while it was abnormal. This fails to account for natural fluctuations. It is frequently a special kind of the post hoc fallacy.

Explanation[edit]

Things like golf scores and chronic back pain fluctuate naturally and usually regress toward the mean. The logical flaw is to make predictions that expect exceptional results to continue as if they were average (see Representativeness heuristic). People are most likely to take action when variance is at its peak. Then after results become more normal they believe that their action was the cause of the change when in fact it was not causal.

This use of the word «regression» was coined by Sir Francis Galton in a study from 1885 called «Regression Toward Mediocrity in Hereditary Stature». He showed that the height of children from very short or very tall parents would move toward the average. In fact, in any situation where two variables are less than perfectly correlated, an exceptional score on one variable may not be matched by an equally exceptional score on the other variable. The imperfect correlation between parents and children (height is not entirely heritable) means that the distribution of heights of their children will be centered somewhere between the average of the parents and the average of the population as whole. Thus, any single child can be more extreme than the parents, but the odds are against it.

Examples[edit]

When his pain got worse, he went to a doctor, after which the pain subsided a little. Therefore, he benefited from the doctor’s treatment.

The pain subsiding a little after it has gotten worse is more easily explained by regression toward the mean. Assuming the pain relief was caused by the doctor is fallacious.

The student did exceptionally poorly last semester, so I punished him. He did much better this semester. Clearly, punishment is effective in improving students’ grades.

Often exceptional performances are followed by more normal performances, so the change in performance might better be explained by regression toward the mean. Incidentally, some experiments have shown that people may develop a systematic bias for punishment and against reward because of reasoning analogous to this example of the regression fallacy.[1]

The frequency of accidents on a road fell after a speed camera was installed. Therefore, the speed camera has improved road safety.

Speed cameras are often installed after a road incurs an exceptionally high number of accidents, and this value usually falls (regression to mean) immediately afterward. Many speed camera proponents attribute this fall in accidents to the speed camera, without observing the overall trend.

Some authors use the Sports Illustrated cover jinx as an example of a regression effect: extremely good performances are likely to be followed by less extreme ones, and athletes are chosen to appear on the cover of Sports Illustrated only after extreme performances. Attributing this to a «jinx» rather than regression, as some athletes reportedly believe, is an example of committing the regression fallacy.[2]

Misapplication[edit]

On the other hand, dismissing valid explanations can lead to a worse situation. For example:

After the Western Allies invaded Normandy, creating a second major front, German control of Europe waned. Clearly, the combination of the Western Allies and the USSR drove the Germans back.

Fallacious evaluation: «Given that the counterattacks against Germany occurred only after they had conquered the greatest amount of territory under their control, regression toward the mean can explain the retreat of German forces from occupied territories as a purely random fluctuation that would have happened without any intervention on the part of the USSR or the Western Allies.» However, this was not the case. The reason is that political power and occupation of territories is not primarily determined by random events, making the concept of regression toward the mean inapplicable (on the large scale).

In essence, misapplication of regression toward the mean can reduce all events to a just-so story, without cause or effect. (Such misapplication takes as a premise that all events are random, as they must be for the concept of regression toward the mean to be validly applied.)

Notes[edit]

  1. ^ Schaffner, 1985; Gilovich, 1991 pp. 27–28
  2. ^ Gilovich, 1991 pp. 26–27; Plous, 1993 p. 118

References[edit]

  • Friedman, Milton (1992). «Do Old Fallacies Ever Die?». Journal of Economic Literature. 30 (4): 2129–2132. JSTOR 2727976.
  • Gilovich, Thomas (1991). How we know what isn’t so: The fallibility of human reason in everyday life. New York: The Free Press. ISBN 0029117054.
  • Plous, Scott (1993). The Psychology of Judgment and Decision making. New York: McGraw-Hill. ISBN 0070504776.
  • Quah, Danny (1993). «Galton’s Fallacy and Tests of the Convergence Hypothesis». The Scandinavian Journal of Economics. 95 (4): 427–433. doi:10.2307/3440905. hdl:1721.1/63653. JSTOR 3440905.
  • Schaffner, P.E. (1985). «Specious learning about reward and punishment». Journal of Personality and Social Psychology. 48 (6): 1377–86. doi:10.1037/0022-3514.48.6.1377.

External links[edit]

  • Fallacy files: Regression fallacy

From Wikipedia, the free encyclopedia

The regression (or regressive) fallacy is an informal fallacy. It assumes that something has returned to normal because of corrective actions taken while it was abnormal. This fails to account for natural fluctuations. It is frequently a special kind of the post hoc fallacy.

Explanation[edit]

Things like golf scores and chronic back pain fluctuate naturally and usually regress toward the mean. The logical flaw is to make predictions that expect exceptional results to continue as if they were average (see Representativeness heuristic). People are most likely to take action when variance is at its peak. Then after results become more normal they believe that their action was the cause of the change when in fact it was not causal.

This use of the word «regression» was coined by Sir Francis Galton in a study from 1885 called «Regression Toward Mediocrity in Hereditary Stature». He showed that the height of children from very short or very tall parents would move toward the average. In fact, in any situation where two variables are less than perfectly correlated, an exceptional score on one variable may not be matched by an equally exceptional score on the other variable. The imperfect correlation between parents and children (height is not entirely heritable) means that the distribution of heights of their children will be centered somewhere between the average of the parents and the average of the population as whole. Thus, any single child can be more extreme than the parents, but the odds are against it.

Examples[edit]

When his pain got worse, he went to a doctor, after which the pain subsided a little. Therefore, he benefited from the doctor’s treatment.

The pain subsiding a little after it has gotten worse is more easily explained by regression toward the mean. Assuming the pain relief was caused by the doctor is fallacious.

The student did exceptionally poorly last semester, so I punished him. He did much better this semester. Clearly, punishment is effective in improving students’ grades.

Often exceptional performances are followed by more normal performances, so the change in performance might better be explained by regression toward the mean. Incidentally, some experiments have shown that people may develop a systematic bias for punishment and against reward because of reasoning analogous to this example of the regression fallacy.[1]

The frequency of accidents on a road fell after a speed camera was installed. Therefore, the speed camera has improved road safety.

Speed cameras are often installed after a road incurs an exceptionally high number of accidents, and this value usually falls (regression to mean) immediately afterward. Many speed camera proponents attribute this fall in accidents to the speed camera, without observing the overall trend.

Some authors use the Sports Illustrated cover jinx as an example of a regression effect: extremely good performances are likely to be followed by less extreme ones, and athletes are chosen to appear on the cover of Sports Illustrated only after extreme performances. Attributing this to a «jinx» rather than regression, as some athletes reportedly believe, is an example of committing the regression fallacy.[2]

Misapplication[edit]

On the other hand, dismissing valid explanations can lead to a worse situation. For example:

After the Western Allies invaded Normandy, creating a second major front, German control of Europe waned. Clearly, the combination of the Western Allies and the USSR drove the Germans back.

Fallacious evaluation: «Given that the counterattacks against Germany occurred only after they had conquered the greatest amount of territory under their control, regression toward the mean can explain the retreat of German forces from occupied territories as a purely random fluctuation that would have happened without any intervention on the part of the USSR or the Western Allies.» However, this was not the case. The reason is that political power and occupation of territories is not primarily determined by random events, making the concept of regression toward the mean inapplicable (on the large scale).

In essence, misapplication of regression toward the mean can reduce all events to a just-so story, without cause or effect. (Such misapplication takes as a premise that all events are random, as they must be for the concept of regression toward the mean to be validly applied.)

Notes[edit]

  1. ^ Schaffner, 1985; Gilovich, 1991 pp. 27–28
  2. ^ Gilovich, 1991 pp. 26–27; Plous, 1993 p. 118

References[edit]

  • Friedman, Milton (1992). «Do Old Fallacies Ever Die?». Journal of Economic Literature. 30 (4): 2129–2132. JSTOR 2727976.
  • Gilovich, Thomas (1991). How we know what isn’t so: The fallibility of human reason in everyday life. New York: The Free Press. ISBN 0029117054.
  • Plous, Scott (1993). The Psychology of Judgment and Decision making. New York: McGraw-Hill. ISBN 0070504776.
  • Quah, Danny (1993). «Galton’s Fallacy and Tests of the Convergence Hypothesis». The Scandinavian Journal of Economics. 95 (4): 427–433. doi:10.2307/3440905. hdl:1721.1/63653. JSTOR 3440905.
  • Schaffner, P.E. (1985). «Specious learning about reward and punishment». Journal of Personality and Social Psychology. 48 (6): 1377–86. doi:10.1037/0022-3514.48.6.1377.

External links[edit]

  • Fallacy files: Regression fallacy

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

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

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

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

Регрессионное тестирование включает в себя несколько видов тестов:

  • верификационные тесты

Их проводят для проверки и исправления обнаруженного дефекта.

  • тестирование верификации версии

Этот тест содержит принципы smoke-тестирования и тестирования сборки: в рамках тестирования верификации версии мы проверяем работоспособность основного функционала программы в каждой новой сборке.

  • регрессионные тесты

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

  • тесты исправленных багов в старом релизе

Их проводят, когда у вас на руках уже есть новый релиз, но нужно проверить, не “ожили” ли дефекты, которые исправляли еще в старом релизе.

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

Как проводят регрессионное тестирование

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

Факты – регрессионное тестирование:

  1. Проводится в каждом новом релизе
  2. Начинается с верификации версии (тестирование сборки и smoke-тестирование)
  3. Содержит проверку исправленных дефектов
  4. В основном не покрывает все приложение, а лишь те участки, на которые влияют изменения в релизе
  5. Проводится в трех основных направлениях: тестирование багов, старых проблем и побочных эффектов

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

Три ключевых направления в регрессионном тестировании

Регресс – это тестирование трех основных направлений: дефектов, старых проблем и побочных эффектов.

  • Регрессия дефектов

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

  • Регрессия старых ошибок

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

  • Регрессия побочных эффектов

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

Преимущества и недостатки регрессионного тестирования

К преимуществам регрессионного тестирования можно отнести:

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

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

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

Однако это почти всегда необходимые расходы: согласно отчёту World Quality Report 2018, в среднем 26% всего IT-бюджета компаний идет на тестирование. При этом 40–70% этих затрат приходится на регрессионное тестирование. Если перевести проценты в реальные деньги, можно понять, почему регрессионное тестирование стоит каждого рубля, заслуживает внимания и требует продуманной стратегии.

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

И у меня для вас хорошие новости – в Qualitica уже сейчас работает команда из 50 профессиональных тестировщиков, которые готовы провести вам регрессионное тестирование по всем стандартам качества. Пишите на hello@qualitica.ru, расскажите о вашем продукте, подключайте нашу команду и выпускайте качественные релизы без дефектов.

Регрессионные виды тестирования (Regression testing)

Регрессионное тестирование (regression testing): Тестирование уже протестированной программы, проводящееся после модификации для уверенности в том, что процесс модификации не внес или не активизировал ошибки в областях, не подвергавшихся изменениям. Проводится после изменений в коде программного продукта или его окружении. (ISTQB)

Регресс — это противоположность прогресса. Любое ПО по мере прогресса в функционале неизбежно усложняется, увеличиваются взаимосвязи в функциях и т.п., и чтобы убедиться в том, что в существующей системе не начинается регресс, полезно иногда проводить ее полное тестирование. И уж тем более логично перетестировать всё, что можно, если в систему были внесены какие-то существенные изменения. Но этого недостаточно. По-сути, проблема намного серьезнее — мы каждый раз не знаем, что принесет с собой новая функциональность в системе. Нам каждый раз надо предположить/узнать/протестировать новые взаимодействия в системе, а не тестировать только новые функции в изоляции от остальных. Старый функционал с новым если начинают пересекаться — надо заново расчехлять аналитику, выявлять новые ситуации, которые могут возникнуть, писать новые тест-кейсы, которые затрагивают уже не столько функциональные, сколько интеграционные аспекты. Поэтому выяснение «не наступил ли регресс» (внимание, не путать с «не наступила ли регрессия») — постоянная задача, которую также необходимо решать в контексте maintenance testing.

Регрессионное тестирование (Regression Testing) — собирательное название для всех видов тестирования программного обеспечения связанных с изменениями, направленных на обнаружение ошибок в уже протестированных участках исходного кода, на проверку того, что новая функциональность не зааффектила (affect) старую. Такие ошибки — когда после внесения изменений в программу перестаёт работать то, что должно было продолжать работать, — называют регрессионными ошибками (regression bugs). Регрессионные тесты должны быть частью релизного цикла (Release Cycle) и учитываться при тестовой оценке (test estimation).

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

Главной задачей maintenance testing является реализация систематического процесса обработки изменений в коде. После каждой модификации программы необходимо удостовериться, что на функциональность программы не оказал влияния модифицированный код. Если такое влияние обнаружено, говорят о регрессионном дефекте. Для регрессионного тестирования функциональных возможностей, изменение которых не планировалось, используются ранее разработанные тесты. Одна из целей регрессионного тестирования состоит в том, чтобы, в соответствии с используемым критерием покрытия кода (например, критерием покрытия потока операторов или потока данных), гарантировать тот же уровень покрытия, что и при полном повторном тестировании программы. Для этого необходимо запускать тесты, относящиеся к измененным областям кода или функциональным возможностям.

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

Можно заключить, что регрессионное тестирование выполняется чтобы минимизировать регрессионные риски. То есть, риски того, что при очередном изменении продукт перестанет выполнять свои функции. С регрессионным тестированием плотно связана другая активность — импакт анализ (Impact Analysis, анализ влияния изменений). Итоговая область регрессии называется Regression Scope / Scope of Regression.

Классификация регрессионного тестирования:

  • Проверить всё (Retest All): Как следует из названия, все тест-кейсы в наборе тестов повторно выполняются, чтобы гарантировать отсутствие ошибок, возникших из-за изменения кода. Это дорогостоящий метод, поскольку он требует больше времени и ресурсов по сравнению с другими методами;
  • Минимизация набора тестов (test suite minimization) стремится уменьшить размер тестового набора за счет устранения избыточных тестовых примеров из тестового набора;
  • Задача выбора теста (test case selection) связана с проблемой выбора подмножества тестов, которые будут использоваться для проверки измененных частей программного обеспечения. Для этого требуется выбрать подмножество тестов из предыдущей версии, которые могут обнаруживать неисправности, основываясь на различных стратегиях. Большинство задокументированных методов регрессионного тестирования сосредоточены именно на этой технике. Обычная стратегия состоит в том, чтобы сосредоточить внимание на отождествления модифицированных частей SUT (system under test) и для выбора тестовых случаев, имеющих отношение к ним. Например, техника полного повторного тестирования (retest-all) — один из наивных типов выбора регрессионного теста путем повторного выполнения всех видов тестов от предыдущей версии на новой. Она часто используется в промышленности из-за её простого и быстрого внедрения. Тем не менее, её способность обнаружения неисправностей ограничена. Таким образом, значительный объём работ связан с разработкой эффективных и масштабируемых селективных методов;
  • Задача определения приоритетов теста (test case prioritization). Ее цели заключаются в выполнении заказанных тестов на основе какого-либо критерия. Например, на основе истории, базы или требований, которые, как ожидается, приведут к более раннему выявлению неисправностей или помогут максимизировать некоторые другие полезные свойства;
  • Гибридный: Гибридный метод представляет собой комбинацию выборочного и приоритезации. Вместо того, чтобы выбирать весь набор тестов, выберите только те тест-кейсы, которые повторно выполняются в зависимости от их приоритета;

Типы регрессии по Канеру:

  • Регрессия багов (Bug regression) — попытка доказать, что исправленная ошибка на самом деле не исправлена;
  • Регрессия старых багов (Old bugs regression) — попытка доказать, что недавнее изменение кода или данных сломало исправление старых ошибок, т.е. старые баги стали снова воспроизводиться;
  • Регрессия побочного эффекта (Side effect regression) — попытка доказать, что недавнее изменение кода или данных сломало другие части разрабатываемого приложения;

Регрессия в Agile:

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

  • Регрессия уровня спринта (Sprint Level Regression): выполняется в основном для новых функций или улучшений, внесенных в последний спринт. Тест-кейсы из набора тестов выбираются в соответствии с новыми добавленными функциями или сделанными улучшениями;
  • Сквозная регрессия (End to End Regression): включает в себя все тест-кейсы, которые должны быть повторно выполнены для сквозного тестирования всего продукта, охватывая все основные функции;

Смоук тестирование (Smoke testing)

Тест «на дым» (smoke test): Выборка из общего числа запланированных тестовых сценариев, покрывающая основную функциональность компонента или системы. Проводится с целью удостовериться, что базовые функции программы в целом работают корректно, без углубления в детали. Ежедневная сборка и тест «на дым» являются передовыми практическими методами. См. входной тест, тест верификации сборки. (ISTQB)

Тест верификации сборки (build verification test): Набор автоматических тестов, валидирующих целостность каждой новой сборки и верифицирующих ее ключевую/базовую функциональность, стабильность и тестируемость. Данный вид тестирования используется там, где присутствует высокая частота сборок (например, проекты с использованием гибких методологий разработки) и выполняется для каждой новой сборки перед передачей ее в тестирования. См. также регрессионное тестирование, тест «на дым». (ISTQB)

Smoke testing, BVT — Build Verification Testing, BAT — Builds Acceptance Testing, Breath Testing, Shakeout/Shakedown Testing, Intake test, а также в русскоязычных вариантах дымовое, на дым, дымное, тестирование сборки и т.п. — это подмножество регрессионного тестирования, короткий цикл тестов, выполняемый для каждой новой сборки для подтверждения того, что ПО после внесенных изменений стартует и выполняет основные функции без критических и блокирующих дефектов. В случае отсутствия блокеров Smoke testing объявляется пройденным, и команда QA может начинать дальнейшее тестирование полного цикла, в противном случае, сборка объявляется дефектной, что делает дальнейшее тестирование пустой тратой времени и ресурсов. В таком случае сборка возвращается на доработку и исправление. Smoke testing обычно используется для Integration, Acceptance and System Testing.

Если мы говорим про сайт интернет-магазина, то сценарий может быть следующим:

  • Сайт открывается
  • Можно выбрать случайный товар и добавить его в корзину
  • Можно оформить и оплатить заказ

Если мы говорим про мобильное приложение, например, messenger, то:

  • Приложение устанавливается и запускается
  • Можно авторизоваться
  • Можно написать сообщение случайном контакту

Небольшая шпаргалка по степени важности:

  • smoke — самое важное. Тест-кейсы играют очень важную роль на этом уровне тестирования, поэтому предел метрик (metric limit) часто соответствует 100% или примерно 100%;
  • critical path — повседневное. Тесты критического пути запускаются для проверки функциональности, используемой типичными пользователями в их повседневной деятельности. Есть много пользователей, которые обычно используют определенную часть функциональности приложения, которую необходимо проверить, как только smoke этап будет успешно завершен. Здесь лимит метрик немного ниже, чем у smoke, и соответствует 70-80-90% в зависимости от цели проекта;
  • extended — все. Выполняется для изучения всей функциональности, указанной в требованиях. Проверяется даже функциональность с низким приоритетом. При этом в этом тестировании нужно понимать, какой функционал наиболее ценный, а какой менее важный. При условии, что у вас достаточно времени или других ресурсов, тесты на этом уровне можно использовать для требований с низким приоритетом;

Примечание. В русском языке термин ошибочно переводят как проверка дыма, корректнее уж говорить “на дым”. История термина: Первое свое применение этот термин получил у печников, которые, собрав печь, закрывали все заглушки, затапливали ее и смотрели, чтобы дым шел только из положенных мест. Повторное «рождение» термина произошло в радиоэлектронике. Первое включение нового радиоэлектронного устройства, пришедшего из производства, совершается на очень короткое время (меньше секунды). Затем инженер руками ощупывает все микросхемы на предмет перегрева. Сильно нагревшаяся за эту секунду микросхема может свидетельствовать о грубой ошибке в схеме. Если первое включение не выявило перегрева, то прибор включается снова на большее время. Проверка повторяется. И так далее несколько раз. Выражение «smoke-test» используется инженерами в шуточном смысле, так как появления дыма, а значит и порчи частей устройства, стараются избежать.

Санити тестирование (Sanity testing)

Тест работоспособности (sanity test): См. тест «на дым». (ISTQB)

Другие источники:

Sanity testing также является подмножеством регрессионного тестирования и выполняется до или вместо полной регрессии, но после smoke. Эти два подвида похожи, но в целом Sanity используется на более стабильных билдах для определения работоспособности определенной части приложения после внесения изменений.

Примечание. Санитарным это тестирование в русскоязычной среде назвалось по совершенно непонятным причинам, но гуглится только так. На самом же деле дословно переводится как тестирование на вменяемость / разумность / работоспособность / согласованность или по версии ISTQB “Тест работоспособности”.

Подтверждающее, повторное тестирование (confirmation testing, re-testing)

Подтверждающее тестирование (confirmation testing): Тестирование, при котором выполняются тестовые сценарии, которые были не пройдены при последнем запуске, с целью подтвердить успешность исправлений. (ISTQB)

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

Тестирование N+1 (N+1 testing)

Вариант регрессионного тестирования представлен как N+1. В этом методе тестирование выполняется в несколько циклов, в которых ошибки, обнаруженные в тестовом цикле «N», устраняются и повторно тестируются в тестовом цикле N + 1. Цикл повторяется, пока не будет найдено ни одной ошибки.

Разница между повторным и регрессионным тестированием:

  • Регрессионное тестирование проводится для подтверждения того, что недавнее изменение программы или кода не оказало неблагоприятного воздействия на существующие функции. Повторное тестирование проводится для подтверждения того, что тест-кейсы, которые не прошли, проходят после устранения дефектов;
  • Цель регрессионного тестирования подтвердить, что новые изменения кода не должны иметь побочных эффектов для существующих функций. Повторное тестирование проводится на основе исправлений дефектов.;
  • Проверка дефектов не является частью регрессионного тестирования. Проверка дефекта является частью повторного тестирования;
  • В зависимости от проекта и наличия ресурсов, регрессионное тестирование может проводиться параллельно с повторным тестированием. Приоритет повторного тестирования выше, чем регрессионное тестирование, поэтому оно проводится перед регрессионным тестированием;
  • Регрессионное тестирование называется общим (generic) тестированием. Повторное тестирование — это плановое (planned) тестирование;
  • Регрессионное тестирование проводится для пройденных Test case. Повторное тестирование проводится только для неудачных тестов;
  • Регрессионное тестирование проверяет наличие неожиданных побочных эффектов. Повторное тестирование гарантирует, что первоначальная ошибка была исправлена;
  • Test case для регрессионного тестирования могут быть получены из функциональной спецификации, user tutorials and manuals, а также defect reports в отношении исправленных проблем. Test case для повторного тестирования не могут быть получены до начала тестирования;

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

Да, в ситуациях с внешними факторами: изменения в БД, версии ОС и т.п.

Источники:

  • Maintenance, Regression testing and Re-testing
  • Регрессионное тестирование
  • Тестировщики нужны — пост “Регресс для самых маленьких”
  • QA Outsourcing: Smoke Testing, Critical Path Testing, Extended Testing
  • What Is Regression Testing? Definition, Tools, Method, And Example
  • В чём разница Smoke, Sanity, Regression, Re-test и как их различать?
  • Difference Between Retesting and Regression Testing
  • Top 150 Software Testing Interview Questions and Answers for Freshers and Experienced

Дополнительный материал:

  • ГОСТ Р 56920-2016/ISO/IEC/IEEE 29119-1:2013 “D.6 Подпроцесс регрессионного тестирования”, “D.7 Подпроцесс повторного тестирования”
  • Лекция 11: Регрессионное тестирование: цели и задачи, условия применения, классификация тестов и методов отбора
  • Black Box Software Testing PART 11 — REGRESSION TESTING by Cem Kaner + 2005 year version
  • Епифанов Н. А. — Методы реализации регрессионного тестирования по расширенным тестовым наборам
  • Anti-Regression Approaches: Impact Analysis and Regression Testing Compared and Combined — Part I: Introduction and Impact Analysis
  • Anti-Regression Approaches — Part II: Regression Prevention and Detection Using Static Techniques
  • Как сохранить нервы тестировщика или ускорить регресс с 8 до 2 часов
  • Регрессионное тестирование или Regression Testing
  • QA Outsourcing: Smoke Testing, Critical Path Testing, Extended Testing
  • Антирегрессионное тестирование — минимизируйте затраты
  • Способы сокращения регрессионного тестирования
  • Курс Тестирование ПО. Занятие 26. Регрессионное тестирование (Regression Testing)
  • История о бесконечном регрессионном тестировании

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 21:22, 25 мая 2017.

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

Regression-testing.jpg

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

Понятие «Регрессионное тестирование», в зависимости от контекста использования может иметь разный смысл. Основные типы: регрессия багов, регрессия старых багов, регрессия побочного эффекта. Регрессия багов (англ. Bug regression) — попытка доказать, что исправленная ошибка на самом деле не была исправлена. Регрессия старых багов (англ. Old bugs regression) — попытка доказать, что недавнее изменение кода или данных сломало исправление старых ошибок, то есть старые баги стали снова воспроизводиться. Регрессия побочного эффекта (англ. Side effect regression) — попытка доказать, что недавнее изменение кода или данных сломало другие части разрабатываемого приложения.

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

Регрессионное программирование — часть экстремального программирования. В этой методологии проектная документация заменяется на расширяемое, повторяемое и автоматизированное тестирование всего программного пакета на каждой стадии процесса разработки программного обеспечения. Также регрессионное тестирование может быть использовано для проверки качества программы[Источник 1][Источник 2].

Содержание

  • 1 Типы, виды и направления регрессионного тестирования
    • 1.1 Автоматизация регрессионных тестов
    • 1.2 Регрессия багов
    • 1.3 Регрессия старых ошибок
  • 2 Задачи регрессионного тестирования
  • 3 Преимущества и недостатки регрессивного тестирования
    • 3.1 Преимущества
    • 3.2 Недостатки
  • 4 Источники

Типы, виды и направления регрессионного тестирования

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

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

Автоматизация регрессионных тестов

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

Регрессия багов

Это подразумевает под собой поиск проблем, которые официально «были устранены», но есть основания полагать, что они до сих пор существуют. Особенность данного вида проверок заключается в том, что необходимо проверять все действия с определённым объектом в различных комбинациях. В первую очередь тестируют соответствие реальности сообщения об устранении проблемы по тому механизму, благодаря которому она была выявлена. Регрессионное тестирование верстки в данном случае помогает удостовериться в отсутствии нежелательных эффектов.

Регрессия старых ошибок

Подразумевает под собой ситуации, когда недавнее изменение кода в одной части приложения сделало нерабочим некоторые или все другие части разрабатываемой программы. В качестве указания о наличии таких проблем служит отсутствие работоспособности в одной или нескольких частях программы. Задача тестера определить все проблемные места[Источник 3].

Задачи регрессионного тестирования

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

  • Проверка и утверждение исправления ошибки;
  • Тестирование последствия исправлений, так как внесенные исправления могут привнести ошибку в код который исправно работал;
  • Гарантировать функциональную преемственность и совместимость новой версии (релиза, патча) с предыдущими;
  • Уменьшение стоимости и сокращение времени выполнения тестов[Источник 4].

Преимущества и недостатки регрессивного тестирования

Преимущества

  • Сокращение количества дефектов в системе к моменту релиза;
  • Исключение деградации качества системы при росте функциональности;
  • Уменьшение вероятности критических ошибок при эксплуатации.

Недостатки

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

Источники

  1. Регрессионное тестирование или Regression Testing // протестинг.ru URL: http://www.protesting.ru/testing/types/regression.html (дата обращения 25.05.2017)
  2. Регрессионное тестирование программного обеспечения. Что такое регрессионное тестирование // FB.ru URL: http://fb.ru/article/224734/regressionnoe-testirovanie-programmnogo-obespecheniya-chto-takoe-regressionnoe-testirovanie

  3. Регрессионное тестирование программного обеспечения// getbug URL: http://getbug.ru/regressionnoe-testirovanie-programmnogo-obespecheniya/ (дата обращения 25.05.2017)
  4. Тестирование. Фундаментальная теория // Хабрхабр URL:https://habrahabr.ru/post/279535/(дата обращения 25.05.2017)

Когда мы подгоняем регрессионную модель к набору данных, нас часто интересует, насколько хорошо регрессионная модель «подходит» к набору данных. Две метрики, обычно используемые для измерения согласия, включают R -квадрат (R2) и стандартную ошибку регрессии , часто обозначаемую как S.

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

Стандартная ошибка по сравнению с R-квадратом в регрессии

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

Пример интерпретации стандартной ошибки регрессии

Если мы подгоним простую модель линейной регрессии к этому набору данных в Excel, мы получим следующий результат:

Вывод регрессии в Excel

R-квадрат — это доля дисперсии переменной отклика, которая может быть объяснена предикторной переменной. При этом 65,76% дисперсии экзаменационных баллов можно объяснить количеством часов, потраченных на учебу.

Стандартная ошибка регрессии — это среднее расстояние, на которое наблюдаемые значения отклоняются от линии регрессии. В этом случае наблюдаемые значения отклоняются от линии регрессии в среднем на 4,89 единицы.

Если мы нанесем фактические точки данных вместе с линией регрессии, мы сможем увидеть это более четко:

Обратите внимание, что некоторые наблюдения попадают очень близко к линии регрессии, в то время как другие не так близки. Но в среднем наблюдаемые значения отклоняются от линии регрессии на 4,19 единицы .

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

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

Чтобы проиллюстрировать, почему стандартная ошибка регрессии может быть более полезной метрикой для оценки «соответствия» модели, рассмотрим другой пример набора данных, который показывает, сколько часов 12 студентов занимались в день в течение месяца, предшествующего важному экзамену, а также их экзаменационная оценка:

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

Если мы подгоним простую модель линейной регрессии к этому набору данных в Excel, мы получим следующий результат:

Вывод регрессии из простой линейной модели в Excel

Обратите внимание, что R-квадрат 65,76% точно такой же, как и в предыдущем примере.

Однако стандартная ошибка регрессии составляет 2,095 , что ровно вдвое меньше стандартной ошибки регрессии в предыдущем примере.

Если мы нанесем фактические точки данных вместе с линией регрессии, мы сможем увидеть это более четко:

Диаграмма рассеяния для простой линейной регрессии

Обратите внимание на то, что наблюдения располагаются гораздо плотнее вокруг линии регрессии. В среднем наблюдаемые значения отклоняются от линии регрессии на 2,095 единицы .

Таким образом, несмотря на то, что обе модели регрессии имеют R-квадрат 65,76% , мы знаем, что вторая модель будет давать более точные прогнозы, поскольку она имеет более низкую стандартную ошибку регрессии.

Преимущества использования стандартной ошибки

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

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

Наша первая модель имеет R-квадрат 65,76%, но это ничего не говорит нам о том, насколько точным будет наш интервал прогнозирования. К счастью, мы также знаем, что у первой модели показатель S равен 4,19. Это означает, что 95-процентный интервал прогнозирования будет иметь ширину примерно 2*4,19 = +/- 8,38 единиц, что слишком велико для нашего интервала прогнозирования.

Наша вторая модель также имеет R-квадрат 65,76%, но опять же это ничего не говорит нам о том, насколько точным будет наш интервал прогнозирования. Однако мы знаем, что вторая модель имеет S 2,095. Это означает, что 95-процентный интервал прогнозирования будет иметь ширину примерно 2*2,095= +/- 4,19 единиц, что меньше 6 и, следовательно, будет достаточно точным для использования для создания интервалов прогнозирования.

Дальнейшее чтение

Введение в простую линейную регрессию
Что такое хорошее значение R-квадрата?

Понравилась статья? Поделить с друзьями:
  • Регистрация утилиты администрирования серверов 1с предприятия ошибка 0x80070005
  • Расшифровка ошибок тахографа касби
  • Регистрация ошибок потребления nat значение nat потребляется на не наблюдающую инструкцию
  • Расшифровка ошибок тахографа вдо
  • Расшифровка ошибок тахографа vdo