О визуализации данных в тестировании ПО


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

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

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

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

Подробнее про модуль aqo можно почитать в статье Олега Иванова и документации.

Метки: softwaretesting postgresql