품질 보증
LAB 메인으로 돌아가기
성능 테스트 시 머신 러닝 활용하기
성능 테스트 시 난제를 극복하기 위한 머신 러닝 기술 구현하기
매개 변수 정의
https://www.qualitestgroup.com/white-papers/lets-perform-right-performance-testing-planning-overcoming-challenges/
감사의 말씀:
이 문서에 사용된 기계 학습 알고리즘 및 성능 테스트 결과를 제공 해주신 것에 대해 Christy Jacob 및 Nikhil Guddati에게 감사의 말씀을 전합니다.
요약
머신 러닝은 소셜 미디어나 제품 추천 등과 같은 다양한 영역에서 인기를 누리고 있으나, 본 문서에서는 성능 테스트에서 머신 러닝 알고리즘을 구현하는 것에 초점을 맞추고 있습니다.
개요 : 지도 학습이란 기능을 배우거나, 트레이닝용 데이터 세트를 사용해 주어진 입력 값과 결과 값 사이의 관계를 설정하는 머신 러닝 작업입니다. 학습한 기능은 데이터 세트로부터 새로운 입력 값을 받았을 때, 그 결과 값을 예측하는데 사용됩니다.
리그레션은 지도 학습 작업의 일종으로, 데이터 세트에서 취득한 변수들 간 관계를 기반으로 해서 목표 값을 예측하는데 사용됩니다.
성능 테스트를 수행함에 있어 테스트 환경은 가장 중요한 요소 중 하나입니다.
이상적인 상황이라면, 성능 테스트 환경은 제작 환경에 대한 시스템 성능 상의 특성 해석과 연관된 어떠한 위험 요소들을 피하기 위해 필요한 만큼의 결과물과 동일한 용량으로 규모를 맞춰야 합니다. 하지만 맞춤형 환경의 경우 예산 상의 문제로 인해 보통 제공되지 않으며, 특정 산업의 경우 보안 상의 이유를 들어 제작 환경에서 테스트 수행하기를 포기합니다. 그로 인해 테스터들은 성능 테스트를 위해 축소된 환경에서 작업을 해야 하고, 이러한 테스트는 추가로 위험을 동반합니다. 그래서 우리는 상기된 난관을 해결하기 위해 머신 러닝을 사용하였습니다. 이 실험의 결과는 본 문서 상에 작성되어있습니다.
성능 테스트를 위한 머신 러닝을 구현하기 위해, 머신 러닝 모델의 생성 및 평가에 필요한 요소에 대해 논의하고자 합니다.
시작하려면 우선 입력 값 및 예측되는 결과 값을 정의해야 합니다. 반응 시간은 성능 테스트가 진행되는 동안 꼼꼼히 모니터링 해야 하는 중요한 변수입니다. 따라서, 이번 예시에선 전체 샘플 수, 전송된 바이트 수치, 수신한 바이트 수치 및 리퀘스트 네임을 입력 값으로 주어 페이지/리퀘스트 별 반응 시간을 예측해볼 것입니다. 결과 값 -> 반응 시간
입력 값 -> 쓰레드 수치, 전송된 바이트 수치, 수신한 바이트 수치, 리퀘스트/페이지
트레이닝 데이터 생성
첫 번째이자 가장 중요한 단계는 우리의 문제 설명에 대응하는 관련 데이터를 수집하는 일입니다. 입력 데이터는 통제된 테스트 환경(이는 서버 성능이나 네트워크 트래픽으로 일어나는 노이즈를 제거하기 위함입니다.)에서 Jmeter를 사용하여 성능 테스트를 수행하는 것으로 생성됩니다.
이 테스트를 통해 생성된 성능 리포트는 다음과 같은 데이터를 담고 있습니다. - 전송된 바이트, 바이트, 쓰레드 수치, 리퀘스트 네임, 반응 시간
아래의 성능 테스트에서는 각 페이지마다 490개의 리퀘스트를 발생시켰습니다.
머신 러닝 모델 선정
머신 러닝 모델의 트레이닝 과정은 트레이닝 데이터를 통해 학습이 이뤄지도록 ML 알고리즘(학습 알고리즘)을 할당하는 것입니다. 머신 러닝 모델은 이 트레이닝 과정에서 만들어진 결과물입니다.
저희는 머신 러닝 라이브러리를 설치한 후, 그곳에 성능 테스트용 데이터를 업로드했습니다. 라이브러리는 최적의 성능을 내는 모델을 찾기 위해 다양한 연산 및 설정으로 다양한 알고리즘들을 평가합니다.
테스트용 데이터를 얻기 위해 다음과 같은 알고리즘을 평가했습니다. FastTreeRegression 알고리즘이 82.3%라는 가장 높은 정확도를 보여줬습니다.
모델 평가
모델 평가는 미래에 기반한 데이터(확인되지 않은 요소/샘플 미포함)로 모델의 정확도를 추정하는 것을 목표로 하고 있습니다. ML 모델로 새로운 데이터 세트(모델 트레이닝을 위해 사용한 자료는 제외.)를 위한 반응 시간을 예측했습니다. ML 모델이 내놓은 결과 값은 실제 값과 비교하여 테스트 하였으며, 그 편차는 허용 범위를 벗어나지 않았습니다.
입력값 라벨(결과값)
요청 이름 페이지 당 전체 샘플 수 바이트 전송된 바이트 수 예상 반응 시간 실제 반응 시간 편차(밀리초)
실제 값과의 편차는 알고리즘이 내놓은 예측 값과 불과 수 밀리 초 차이였습니다. 그래서 제작 환경을 그대로 복제하지 않고도 성공적으로 응용프로그램의 성능을 측정할 수 있었습니다.
각 응용프로그램이 어떻게 작동하는가는 데이터 값에 의해 달라질 수 있기 때문에, 최적의 모델을 생성하는 데는 성능 테스트를 통해 수집한 데이터가 중요하다고 할 수 있습니다. 응용프로그램의 작동을 기반으로, 데이터의 어떤 부분이 가장 정확한 결과 값을 도출할 수 있는지 추정해야 하며, 이 때문에 더 많은 예측 값을 얻기 위해선 일련의 테스트 데이터를 생성하는 것이 중요합니다.
참고자료
https://www.agileconnection.com/presentation/machine-learning-and-data-science-quality-and-performance-engineering
https://www.datasciencecentral.com/profiles/blogs/performance-testing-training
https://data-flair.training/blogs/machine-learning-applications/