Използване на машинно обучение за ускоряване на създаването на тестови данни за ефективно тестване на софтуер

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

От Poorvi Ladha & Ankita Das

Ефективността на софтуерното тестване се основава на три решаващи фактора:

Първо, тестовата стратегия трябва да включва ясно дефиниран обхват, процес и план за изпълнение, заедно с показатели и критерии за изход. Това гарантира, че софтуерът отговаря на необходимите стандарти за качество.

Вторият фактор е тестовият сценарий, който трябва да включва аспекти като положителни, отрицателни, гранични стойности и тестови сценарии от край до край.

И накрая, точните и пълни данни от теста са от съществено значение за установяване на ефективността на цялостния процес на тестване.

Взети заедно, тези три компонента определят ефикасността на софтуерното тестване.

Докато първите два фактора са по-лесни за определяне, последният може да бъде малко по-труден за получаване. Освен това последиците от неточни и непълни данни от теста са много, включително:

· Неправилни резултати от валидирането

· Критични дефекти, които не са открити навреме

· Труд, изразходван за изследване на дефекти

· Дескопиране на тестови сценарии, което увеличава риска от изтичане на дефекти в по-високи тестови среди или още по-лошо, производствена/жива среда.

Като се вземат предвид тези данни, за да се осигурят точни и пълни тестови данни, независимо дали са производствени или синтетични, е от съществено значение да се даде приоритет на управлението на тестовите данни в началото на жизнения цикъл на проекта.

Да използвате копие на производствени данни или синтетични тестови данни?

Тъй като производствените данни не могат да се използват за симулиране на сценарии с отрицателни и гранични стойности, заобиколно решение е да се създадат синтетични бизнес подобни данни чрез машинно обучение, за да се осигури висока точност и пълнота на теста.

Разбира се, копията на производствени данни не са без предимства. Въпреки това, докато производствените данни са полезни за провеждане на подобни на бизнес симулации, те не са ефективни при разкриване на повреди, причинени от лоши данни (отрицателни, крайни случаи), изпратени от приложения нагоре по веригата.

Предимства от използването на машинно обучение за по-бързо създаване на тестови данни

В случай на синтетични данни, моделите за машинно обучение могат да бъдат обучени да научават модели и характеристики от съществуващи данни и да генерират бизнес подобни тестови данни, които са представителни за производствената среда.

Отделно, моделът за машинно обучение може също да бъде обучен да идентифицира модели и връзки в данните. След това тези модели генерират тестови случаи, които покриват широк спектър от сценарии, като същевременно разкриват отрицателни и крайни случаи.

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

Чрез осигуряване на непрекъснат поток от тестови данни процесът на тестване също се ускорява, позволявайки по-бързи итерации, по-кратки цикли на разработка и по-бързо време за пускане на пазара.

Има само някои от многобройните предимства на използването на създаване на тестови данни, управлявани от машинно обучение, включително осемте по-долу.

Случай на използване на DBS: Нашият модел на машинно обучение, който намали времето, изразходвано за създаване на тестови данни с повече от 4 пъти

Екипът за осигуряване на качеството на платформата Legal, Compliance Secretariat (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, работещ като специалист по автоматизирано осигуряване на качеството. Тя също е запален изследовател на потенциала на машинното обучение за подобряване на QA практиките.

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