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

Как DBS использовала машинное обучение в процессе генерации данных, чтобы повысить эффективность и результативность тестирования программного обеспечения, сократив время, затрачиваемое на создание тестовых данных, более чем в 4 раза

Пурви Ладха и Анкита Дас

Эффективность тестирования программного обеспечения зависит от трех важнейших факторов:

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

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

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

В совокупности эти три компонента определяют эффективность тестирования программного обеспечения.

Хотя первые два фактора определить легче, последний получить немного сложнее. Кроме того, наличие неточных и неполных данных испытаний имеет множество последствий, в том числе:

· Неправильные результаты проверки

· Критические дефекты, не обнаруженные на раннем этапе

· Труд, потраченный на расследование дефектов

· Описание тестовых сценариев, что увеличивает риск утечки дефектов в более высокие тестовые среды или, что еще хуже, в производственную/действующую среду.

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

Использовать копию производственных данных или синтетические тестовые данные?

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

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

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

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

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

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

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

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

Пример использования DBS: наша модель машинного обучения, которая сократила время, затрачиваемое на создание тестовых данных, более чем в 4 раза

Команда по обеспечению качества платформы юридического отдела и секретариата по соблюдению требований (MOT-LCS) подразделения Middle Office Technology банка разработала модель машинного обучения для создания тестовых данных, имитирующих реальные данные, для проверки систем со сложными бизнес-правилами.

Ручное создание тестовых данных не только отнимало много времени (на каждый цикл регрессии уходило в среднем 8 часов), но и значительно сокращало тестовое покрытие, что могло привести к попаданию дефектов в производство.

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

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

Модель использует алгоритм классификатора для прогнозирования бизнес-правил на основе набора входных переменных или функций и пороговых значений правил, используемых для обучения модели. Различные модели оценивались по таким показателям, как точность, точность, отзыв и показатель F1.

Следующие модели были обучены и оценены с использованием k-кратной перекрестной проверки:

1. Логистическая регрессия

2. Линейный дискриминантный анализ

3. K-ближайшие соседи

4. Наивный Байес

5. Машина опорных векторов

6. Классификатор повышения градиента

#Spot-Check Algorithm 
models= []
models.append(('LR',LogisticRegression()))
models.append(('LDA',LinearDiscriminationAnalysis()))
models.append(('KNN',KNeighborsClassifier()))
models.append(('NB',GaussianNB()))
models.append(('SVM',SVC()))
models.append(('gb',GradientBoostingClassifier()))

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

Набор данных был разделен с использованием размера проверки 0,2; 80% данных было использовано для обучения модели, а оставшиеся 20% — для проверки. Для преобразования необработанных данных в формат, подходящий для использования алгоритмом машинного обучения, применялись методы проектирования функций, такие как кодирование ссылочных кодов и преобразование пороговых значений правил в категориальные значения.

Среднее и стандартное отклонение показателей перекрестной проверки в разных частях набора данных измерялись для определения точности и последовательности каждой модели. Более высокий средний балл указывал на лучшую производительность, а более низкое стандартное отклонение указывало на то, что производительность модели была одинаковой в разных сгибах. Алгоритм классификатора Gradient Boosting был выбран, поскольку он продемонстрировал наилучшую производительность по всем метрикам, оцененным при k-кратной перекрестной проверке.

#Make predictions on validation datasets
gb = GradientBoostingClassifier()
gb.fit(X_train.astype(float), Y_train)
predictions = gb.predict(X_validation)
print(accuracy_score(Y_validation,predictions))
print(confusion_matrix(Y_validation,predictions))
print(classification_report(Y_validation,predictions))

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

Форматы вывода можно изменить в зависимости от механизма ввода, используемого приложением. Модель также может генерировать синтетические тестовые данные для правил/меток, которых нет в тестовых данных, используемых для прогнозирования выходных данных.

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

Когда следует переобучить модель

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

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

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

2. Изменения правил. Если правила изменяются (будь то добавление нового правила или изменение существующего правила), возможно, потребуется переобучить модель, чтобы она соответствовала новым правилам и обнаруживала новые. узоры.

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

Заключение

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

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

Пурви – старший вице-президент компании DBS. Большую часть своего времени она помогает командам улучшать качество своих программных продуктов.

Анкита Дас — старший юрист в DBS, работающий специалистом по автоматизированному обеспечению качества. Она также активно исследует потенциал машинного обучения в улучшении методов контроля качества.

#QualityAssurance #machinelearning #testdata #QA #softwaretesting #testautomation #MOTtheplacetobe