Я пытаюсь найти метод для последовательности тестовых номеров регрессии.Регрессионные тесты на произвольных числовых последовательностях
Моя тестируемая система производит большое количество номеров для каждой версии системы (например, высота, ширина, глубина и т. Д.). Эти номера варьируются от версии к версии неизвестным образом. Учитывая последовательность «хороших» версий и одну «новую» версию, я бы хотел найти последовательности, которые являются наиболее ненормальными.
Пример:
"Хорошо" версия:
version width height depth
1 123 43 302
2 122 44 304
3 120 46 300
4 124 45 301
"Новая" версия:
5 121 60 305
В этом случае я, очевидно, хотел бы найти последовательность высоты, так как значение 60 выделяется больше, чем ширина или глубина.
Мой текущий подход вычисляет среднее и стандартное отклонение каждой последовательности хороших случаев, а для номера новой версии он вычисляет вероятность того, что это число является частью этой последовательности (на основе известного среднего и стандартного отклонения). Это работает ... вроде.
Числа в моих последовательностях не обязательно являются гауссовыми, распределенными по среднему значению, но часто довольно постоянными, а иногда иногда создают значение outlier, которое также представляется довольно постоянным, e. г. 10, 10, 10, 10, 10, 5, 10, 10, 10, 5, 10, 10, 10. В этом случае только на основе среднего и стандартного отклонения значение 10 не будет на 100% вероятнее всего в последовательность, а значение 5 было бы маловероятным.
Я рассмотрел возможность использования метода гистограммы и колебался там, чтобы спросить здесь сначала. Проблема с гистограммой заключалась бы в том, что мне нужно было бы хранить довольно много информации для каждой последовательности (в отличие от среднего и стандартного отклонения).
Следующий аспект, о котором я подумал, состоял в том, что я уверен, что эта задача не нова и что, вероятно, уже есть решения, которые хорошо подходят для моей ситуации; но в моих исследованиях я не нашел много.
Я нашел библиотеку типа PyBrain, которая, на первый взгляд, обрабатывает числовые последовательности, а затем, по-видимому, пытается проанализировать их с помощью имитируемой нейронной сети. Я не уверен, что это будет для меня подход (и снова кажется, что мне нужно будет хранить большой объем данных для каждой последовательности чисел, например, для полной нейронной сети).
Так что мой вопрос заключается в следующем:
Существует методика, алгоритм, или научную дисциплину, которые там бы помочь мне проанализировать числовые последовательности, чтобы найти отклонения (в последнем значении)? Предпочтительно, сохраняя только небольшие объемы данных на последовательность ;-)
Для конкретных реализаций я бы предпочел Python, но подсказки на других языках также приветствуются.
Да, я знаю, я прошу библиотеку ;-) Но, пожалуйста, сражайтесь с рефлектором, чтобы быстро отметить это как не по теме, потому что это вопрос для библиотеки. Если вы внимательно прочитаете весь вопрос, вы обнаружите, что я описываю много того, что я пробовал и рассматривал, и проблемы этих подходов. Вопрос, который у меня есть, заключается не в том, «какая библиотека лучше всего подходит для этого» (что не по сути тема направлена на выход), но «есть ли какая-либо технология, решающая эту проблему».Я не думаю, что это вне темы. – Alfe
Я обновил свой ответ, посмотрю на него, если он выполнит ваши требования. – user7291698
Подумав об этом, я думаю, вы должны попытаться свести к минимуму такие тесты в тестовом жгуте. Вместо этого вы должны попытаться сделать рефакторинг источника вашей неопределенности (зависимость от генератора случайных чисел), а затем использовать инъекцию зависимостей, ввести детерминированный макет во время тестирования, чтобы вы не испытывали неопределенность теста. – rnoodle