시작하기 앞서, 이 글에서는 AI 기술과 알고리즘을 활용하여 소프트웨어 테스팅을 개선하는 관점에서의 AI 테스트를 다루는 것이 아니라 AI 기반 소프트웨어를 테스트하는 방법에 대한 개념을 설명합니다.
본 글의 내용은 온•오프라인에 기록된 정보들을 관련 주제에 맞게 재정리한 것으로, 참고한 정보에 대한 출처는 글 하단에서 확인할 수 있습니다.
AI(Artificial Intelligence) 즉 인공지능이란, 컴퓨터가 인간처럼 학습하고 문제를 해결하며 결정을 내릴 수 있도록 하는 기술을 의미합니다. AI는 데이터를 분석하고 패턴을 학습해 예측하거나 자동으로 작업을 수행할 수 있는 능력을 갖추고 있습니다.
AI의 주요 유형에는 머신러닝(Machine Learning)과 딥러닝(Deep Learning)이 있으며, 머신러닝은 주로 데이터를 이용해 알고리즘을 개선하고 딥러닝은 인공 신경망을 사용해 인간 뇌의 학습 방식을 모방합니다. AI는 이미지, 음성 및 작성된 언어를 이해하고 데이터를 분석하여 추천하는 시스템, 이미지 인식, 자연어 처리, 자율주행 등 다양한 분야에서 활용됩니다.
◎ AI에 해당되는 기술
머신 러닝(ML): 데이터로부터 학습하고 해당 데이터를 기반으로 예측이나 결정을 내립니다. 예를들어 Amazon, Netflix, Spotify와 같은 회사는 ML을 사용하여 사용자 행동과 선호도를 분석하여 제품, 영화, 음악을 추천합니다.
자연어 처리(NLP): 인간 언어를 이해하고 생성할 수 있습니다. Siri, Alexa, ChatGPT 같은 챗봇은 NLP를 사용하여 사용자 질의와 명령을 이해하고 응답합니다.
이미지 인식: 시각 정보를 해석하고 이해할 수 있습니다. Apple의 Face ID와 Facebook의 DeepFace와 같은 얼굴 인식 시스템은 이를 사용하여 얼굴 특징을 기반으로 개인을 식별하고 인증합니다.
이 외 로봇공학(알고리즘을 사용하여 제조 및 생산 환경에서 로봇을 제어하고 작동), 전문가 시스템(의학, 금융, 엔지니어링 등에서 인간 전문가의 의사결정 능력을 모방), 퍼지 로직, 신경망, 딥 러닝 등이 포함됩니다.
각각의 AI 기술은 개별적인 목적과 아키텍처를 가집니다. 따라서 AI 기반 소프트웨어 테스트는 일반적인 모바일 앱의 검증 방법과 다르며 각 유형의 AI에 대해 고유한 접근 방식이 필요합니다.
AI 기반 소프트웨어는 인간의 지능이 필요한 작업을 수행하기 위해 인공 지능 기술을 활용하는 애플리케이션을 의미합니다.
예를들어,
추천 시스템 : 사용자의 선호도와 행동을 분석하여 제품, 서비스 또는 콘텐츠를 추천.
챗봇 : 인간의 언어를 이해하고 질문에 대한 절적한 응답을 출력.
예측 분석 : 과거 데이터를 검토하여 추세나 패턴을 예측.
이것을 테스트하기 위해서 QA는 데이터를 정제하고, AI 유형의 기본 사항을 파악하고 그 원리에 대한 지식을 이해해야하며, 테스트를 수행할 수 있도록 모델을 훈련(AI가 테스트를 수행하도록 가르치는 것)한 후 실험적 검증 과정을 거쳐 최종 결과의 품질을 보장해야 합니다.
◼︎ AI 모델 훈련 과정
1. 데이터 수집: AI 모델은 학습할 데이터가 필요합니다. 이미지, 텍스트, 숫자, 소리 등 일 수 있습니다. 예를 들어, 사진 속 고양이를 인식할 수 있는 모델을 만들려면 고양이 사진이 많이 필요한 것입니다.
2. 훈련: 데이터가 준비되면 모델을 훈련하는 데 사용합니다. 이는 모델에 고양이가 어떻게 생겼는지 가르치는 것입니다. 고양이 사진을 많이 보여주고 "이게 고양이야."라고 가르칩니다. 모델은 이 데이터에서 학습하고 고양이를 구성하는 특징이 무엇인지 이해하기 시작합니다.
3. 테스트: 훈련이 완료되면 모델이 얼마나 잘 학습했는지 테스트합니다. 모델에 이전에 본 적이 없는 고양이의 새로운 사진을 보여주고 사진에 고양이가 있는지 말해달라고 요청합니다. 대부분 제대로 대답한다면 모델이 잘하고 있다는 것을 의미합니다.
4. 예측: 모델이 훈련되고 테스트되면 이를 사용하여 새 데이터에 대한 예측을 할 수 있습니다. 예를 들어, 고양이의 새 사진을 보여주면 "네, 고양이예요!"라고 말할 수 있어야 합니다.
AI 소프트웨어 테스트는 전통적인 테스트 패러다임을 넘어서는 섬세한 접근 방식이 필요한 복잡성의 층을 발견하는 것입니다. 일반 소프트웨어 테스트와 달리 AI 테스트는 전통적인 소프트웨어 테스트 지식과 AI 원리에 대한 이해를 혼합합니다. 여기에는 머신 러닝 모델, 데이터 분석, 알고리즘 검증 전문지식이 포함됩니다. AI 모델은 예측이나 결정을 내리기 위해 학습 데이터를 기반으로 작동하므로 QA는 이런 지식을 바탕으로 모델의 정확성, 성능, 편향(bias) 여부, 신뢰성 등을 다각도로 평가해야합니다.
AI 테스트는 버그만 찾는 것이 아니라, AI 시스템이 최적으로 작동하도록 알고리즘과 데이터를 깊이 파고들며 AI의 의사 결정 프로세스를 이해하고 신뢰성과 윤리적 적용을 보장해야 합니다.
※ 대표적인 AI Test
AI 테스트를 이야기할 때, 가장 많이 언급되는 테스트는 바로 '튜링 테스트 (Turing Test)'입니다. 이 테스트는 튜링 테스트의 창시자이자 머신러닝을 개척한 영국의 컴퓨터 과학자, 암호 분석가, 수학자, 이론 생물학자인 앨런 튜링의 이름을 따서 명명되었습니다.
튜링 테스트는 기계가 인간의 지능을 입증할 수 있는지 여부를 판별하는 방법으로, 기계가 기계로 감지되지 않고 인간과 대화할 수 있다면, 그것은 인간 지능을 입증하는 것입니다.
튜링 테스트는 그의 논문에서 작성한 '모방 게임'의 개념에서 제안된 것으로, 튜링 테스트에는 세 개의 터미널이 필요하며, 각각의 터미널은 물리적으로 분리되어있습니다. 하나의 터미널은 컴퓨터가 작동하고 다른 두 터미널은 인간이 작동합니다. 테스트가 수행될 동안 한 사람은 질문자 역할을 담당하고 두번째 사람과 컴퓨터는 응답자 역할을 수행합니다. 질문자는 지정된 형식과 맥락을 사용하여 특정 주제 분야로 응답자를 심문하고 질문자는 어느 것이 AI이고 어느 것이 인간인지 결정하는 임무를 갖고있습니다.
튜링은 컴퓨터가 특정 조건에서 인간의 반응을 모방할 수 있다면 인공지능을 가지고 있다고 보았습니다. 여러번 반복된 테스트를 통해 테스트 실행의 절반 이하에서 올바른 결정을 내린다면, 질문자는 컴퓨터가 인간 응답자와 "똑같은 인간"이라고 여기기 때문에 컴퓨터는 인공 지능을 가진 것으로 간주하는 것입니다.
설명에서 이해할 수 있듯, 이 테스트는 QA 관점에서 AI 기반의 소프트웨어 품질을 검증하기 위한 접근방법으로서의 테스팅이 아니라 프로그램이 인공지능을 가졌다는 것을 판별하는데 사용되는 테스트로 소프트웨어 테스트 기법으로 적용하기에는 부적합한 면이 존재합니다.
AI 테스트는 데이터(원재료)와 훈련된 AI 모델(완제품)을 모두 테스트해야 한다는 특징을 가지고 있습니다. 그 중 데이터의 품질에 따라 AI 모델은 '예측할 수 없는 동작'을 출력할 수 있습니다. 이런 특성을 가진 AI를 테스트하기 위해 AI에 입력할 고급 입력 데이터가 필요합니다. 하지만, 이것은 AI 유형별 범주에 따라 예상되는 모든 가능한 시나리오를 확인해야하기 때문에 테스트하기 어렵게 만듭니다. 따라서, 네 가지 핵심 구별에 초점을 두어 AI 테스트가 전통적인 테스트와 다른 점을 살펴보겠습니다.
#1. 데이터 기반 테스트
AI 기반 애플리케이션은 예측이나 결정을 내리기 위해 데이터에 크게 의존합니다. 또한 입력 데이터가 고품질이 아니면 부정확한 결과가 발생될 수 있습니다. 따라서 테스트는 소프트웨어가 광범위한 데이터 입력을 처리할 수 있고 다양한 상황에서 잘 수행되는지 확인해야 합니다. 예를 들어, 추천 시스템은 정확하고 관련성 있는 추천을 제공하는지 확인하기 위해 다양한 유형의 사용자 데이터로 테스트해야 합니다.
#2. 동적 행동
AI 시스템은 새로운 데이터에서 적응하고 학습할 수 있습니다. 즉, 시간이 지남에 따라 동작이 바뀔 수 있습니다. 따라서 앱을 한 번 테스트하고 앞으로도 계속 잘 작동할 것이라고 가정하는 것만으로는 충분하지 않습니다. 테스트는 지속적이고 반복적이어야 하며, 제품이 진화함에 따라 정확성과 효과를 보장해야 합니다.
#3. 블랙박스 테스팅
AI 기반 소프트웨어는 복잡하고 이해하기 어렵습니다. 예를 들어 딥 러닝 모델의 경우 수백만 개의 매개변수가 있습니다. 이로 인해 내부 작동 방식을 기반으로 애플리케이션을 테스트하는 것이 어렵습니다. 그러므로, 테스트는 애플리케이션의 동작 또는 "블랙박스"에 초점을 맞추고, 특정 시나리오에서 예상대로 수행되는지 확인하도록 합니다.
여기서 중요한 것은, 실제 사례에 기반한 시나리오를 설계하지 않으면 부정확한 결과가 발생될 수 있다는 것입니다. 또한 AI 시스템의 복잡성으로 인해 테스트 중 발생하는 문제의 원인을 식별하기 어려울 수도 있습니다. 이로인해 AI 모델은 효과적으로 학습하기 위해 방대한 양의 데이터가 필요하며 이것은 많은 시간을 소모하게되고 많은 리소스를 필요로 할 수 있다는 점을 참고해야합니다.
#4. AI 윤리
AI 기반 제품을 테스트하려면 편견과 공정성과 같은 윤리적 의미를 고려해야 합니다. 예를 들어, 얼굴 인식 시스템에서는 다양한 인구 통계에서 동일하게 잘 작동하고 편견이 없는지 확인하기 위한 테스트가 수행되어야 합니다. 또한 테스트에서는 애플리케이션이 개인 정보 보호 및 보안에 미치는 잠재적 영향을 고려해야 합니다.
AI 기반 애플리케이션을 테스트하기 위한 표준화된 프로세스가 아직 없기 때문에 AI 기반 앱을 테스트하는 QA는 어쩌면 기존에 사용하지 않았던 대담한 방법을 써야만 할 수도 있습니다. 이전과 비교할 수 없는 방대한 양의 데이터, 딥 러닝 기술 활용, 윤리적 문제, 기술의 동적 행동 등을 고려해야 하니까요.
기존에 없던 길을 개척하는 것은 두려울 수 있습니다. 하지만 대담하게 도전하고 이전과 다른 발상의 전환을 통해 차이를 만들 수 있습니다. 이것은 곧 QA로 인해 AI 기반 소프트웨어를 비전 있는 제품으로 만들 수 있게 할 것입니다.
#1. 품질 기준의 모호함과 표준 테스트 프레임워크의 부족
전통적인 소프트웨어 테스트는 잘 정의된 방법론과 소프트웨어가 올바르게 작동하는지 여부를 판단하기 위한 명확하고 객관적인 기준이 있는 경우가 많습니다. 예를 들어, 계산기 앱이 두 숫자를 더하고 올바른 합계를 반환해야 하는 경우 앱이 예상대로 작동하는지 여부를 판단하기 쉽습니다. 그러나 AI 소프트웨어 테스트에서 "올바른" 출력은 항상 명확하지 않습니다. 예를 들어, 추천 시스템에서는 주어진 사용자에 대한 여러 가지 유효한 추천이 있을 수 있습니다. 그리고 어느 것이 "올바른" 옵션인지 항상 명확하지 않습니다. 명확하고 객관적인 "기본 진실"이 부족하여 AI 모델의 품질을 평가하기 어렵습니다.
품질 기준의 모호함과 표준 테스트 프레임워크의 부족으로 AI 기반 테스트에 대한 접근 방식이 팀과 프로젝트에 따라 크게 달라질 수 있습니다. 결과적으로 AI 기반 시스템의 품질과 안정성을 보장하는 것이 더 어려워집니다. 또한 공통 프레임워크가 없다면 한 프로젝트에서 다른 프로젝트로 테스트 경험과 노하우를 복제하려는 시도가 어렵고 지식의 공유를 방해할 수 있습니다. 마지막으로 AI 기술에 익숙하지 않은 테스터에게는 러닝커브가 매우 높습니다.
#2. 데이터 품질 및 편향
AI 모델은 데이터로 훈련되고, 이 데이터의 품질과 대표성은 모델의 품질에 상당한 영향을 미칠 수 있습니다. 또한, 데이터에는 불공정하거나 차별적인 결과로 이어질 수 있는 편향이 포함될 수 있습니다. 품질이 좋지 않거나 편향된 데이터는 부정확하거나 불공정한 결과를 초래할 수 있으며 예측할 수 없는 동작으로 이어질 수 있습니다. 이러한 문제를 식별•완화하고 AI 모델을 효과적으로 테스트하려면 모델 자체만 테스트할 뿐만 아니라 학습하는 데이터의 품질이 보장되어야하고 신중한 데이터 분석과 사전 처리가 필요합니다.
#3. 복잡성과 비결정론
AI 모델은 매우 복잡하고 비결정적이며 새로운 데이터를 기반으로 끊임없이 학습하고 적응합니다. 구체적으로, 행동을 예측하고 포괄적인 테스트 사례를 설계하는 것이 어려울 수 있고 이전에 효과가 있었던 테스트 사례는 새로운 데이터에 노출되어 진화한 모델에는 효과적이지 않을 수 있습니다. 예를 들어, 딥 러닝 모델은 수백만 개의 매개변수를 가질 수 있으며, 이러한 매개변수가 어떻게 상호 작용하여 주어진 출력을 생성하는지 항상 명확하지는 않습니다.
#4. AI 결정 해석 부족
전통적 테스트는 명확한 원인-결과 관계에 의존합니다. 그러나 복잡한 AI 모델은 복잡하고 다층적인 프로세스를 통해 결론에 도달할 수 있습니다. AI 모델의 해석 부족으로 인해 특정 예측이나 결정을 내리는 "이유"를 이해하기 어려워 잠재적 오류를 정확하게 식별하고 해결하는 과정이 복잡해질 수 있습니다. 예를 들어, 딥 러닝 모델은 고양이와 개 이미지를 정확하게 분류할 수 있지만 특정 분류를 하는 이유가 항상 명확하지는 않습니다.
#5. 확장성 및 성능
AI 모델은 리소스 집약적일 수 있으며 대규모로 테스트하려면 상당한 컴퓨팅 리소스가 필요할 수 있습니다. AI 모델의 리소스 집약적 특성으로 인해 대규모로 테스트하기 어려울 수 있으며, 대규모 데이터 세트나 복잡한 모델을 테스트할 때 성능 문제가 발생할 수 있습니다.
#6. 규제 및 윤리 고려 사항
AI 모델은 상당한 사회적 영향을 미칠 수 있으며, 테스트할 때 고려해야 할 규제 및 윤리적 고려 사항이 있을 수 있습니다. AI 모델의 사회적 영향과 규제 및 윤리적 고려 사항은 추가적인 제약과 요구 사항을 도입하여 테스트 프로세스를 복잡하게 만들 수 있습니다.
#7. 기타 기술적 어려움
AI 기반 시스템의 개발은 일반적으로 데이터 세트로 시작되므로, 목표는 해당 데이터 세트에서 도출할 수 있는 예측을 확인하는 것입니다. 즉, AI 기반 제품은 종종 명확한 요구 사항이 없습니다. 그로인해 '사용자 요구사항 정의서'는 정확한 기준이 아닌 전략적 비즈니스 목표로 제시됩니다.
AI 시스템의 정확도는 일반적으로 테스트 후에만 알 수 있습니다. 따라서, 확실한 측정값이 없습니다.
기능에 집중하는 대신 사용자 행동을 재현하는 AI 제품은 정확한 행동 패턴이 필요합니다. 이로인해 테스트는 행동 패턴에 대한 필요한 작업이 완료된 후에만 가능합니다.
적응성 및 유연성과 같은 AI 특정 품질은 요구 사항에서 정의하기 어려울 수 있습니다. 앱은 시간에 따라 변경되므로 사용자 요구사항 정의서는 명시적 규칙이 아닌 일종의 참조 역할을 제시할 뿐입니다.
테스트 과제의 효과적 해결과 최상의 안정성을 보장하는 성능을 발휘 할 수 있도록 AI 테스트의 핵심 요소를 고려하고 적용할 테스트 방법을 선택하는 것이 중요합니다.
AI 애플리케이션의 복잡성과 테스트 요구사항 파악
훈련 데이터 / 테스트 데이터
AI 모델을 테스트하기 위해서는 두 가지 별개의 데이터 세트를 준비해야 합니다.
1) 학습 데이터: AI 모델의 학습 엔진을 위한 재료로, '성공 사례 데이터, 알려진 버그가 포함된 데이터, 레
이블이 지정되지 않은 데이터 등' 여러 상태의 데이터가 필요하며 이것은 여러 가지 학습을 가능하게
할 것이며 AI 모델이 정상 및 비정상 조건을 구별하는 법을 배울 것입니다.
2) 테스트 데이터: 모델의 효과를 평가하기 위해 모델에 제시된 보이지 않는 데이터입니다. 테스트 데이터
는 모델이 잘 일반화되고 훈련 데이터에 과적합되지 않도록 실제 시나리오를 대표해야 합니다.
알고리즘의 복잡성과 정확성 파악
AI가 작동하는 동적 환경에 대한 이해
AI Software에 적합한 테스트 기술 및 방법 선택
ex) 머신러닝 기반 테스트, 퍼즈 테스트, 적대적 테스트 : 취약성 식별 및 AI 시스템의 강점을 보장
만족할만한 AI 결과
데이터 무결성, 편향, 설명할 수 없는 출력 등의 이슈 완화
AI 기반 애플리케이션 테스트는 AI 모델의 복잡성, 가변성 및 불투명성으로 인해 전통적인 소프트웨어 테스트와 비교했을 때 고유한 과제를 제시합니다. AI 기반 애플리케이션에 대한 테스트 전략은 기능적, 비기능적, 머신 러닝 모델, 데이터 종속성 및 복잡한 의사 결정 프로세스를 포함한 모든 측면을 포괄해야 합니다.
AI 기반 애플리케이션에 필요할 수 있는 다양한 수준의 테스트를 살펴보겠습니다. 아래 접근 방식은 수행 가능한 모든 테스트에 대한 포괄적인 관점을 취합니다. 그러나 각 영역에서 테스트의 정확한 범위와 깊이는 애플리케이션의 유형/목적에 따라 크게 다를 수 있습니다.
단위 테스트는 AI 모델의 개별 구성 요소 또는 기능이 올바르고 안정적으로 기능하는지 확인하는 데 초점을 맞춥니다. 전통적인 단위 테스트는 특정 기능이나 메서드의 검증에 초점을 맞추는 반면, AI 애플리케이션의 단위 테스트는 머신 러닝 모델의 특성, 데이터 종속성 및 비결정적 동작으로 인해 추가적인 복잡성을 수반합니다. 이러한 유형의 테스트는 문제를 일찍 식별하고 나중에 더 큰 문제로 이어지는 것을 방지하는 데 도움이 됩니다.
데이터 검증: 유효한, 유효하지 않은, 엣지 케이스를 포함한 다양한 유형의 데이터를 모델이 어떻게 처리하는지 테스트합니다.
기능 테스트: 각 특정 기능이 의도한 작업을 올바르게 수행하는지 평가합니다.
AI 기반 애플리케이션은 여러 모델과 알고리즘이 함께 작동합니다. 그리고 앱이 사용할 수 있는 다른 구성 요소(API, 데이터 수집 모듈 등)가 많이 있습니다. 통합 테스트는 AI 시스템의 개별 요소가 원활하게 조화를 이루어 예상대로 함께 작동하는지 확인하는 데 중점을 두어 원하는 결과를 달성하도록 보장합니다. 예를 들어, AI 애플리케이션이 머신 러닝 모델을 사용하는 경우 통합 테스트에는 애플리케이션에서 모델을 적절하게 로드하고 학습시키고 사용할 수 있는지 확인하는 작업이 포함됩니다.
API 통합: AI 시스템이 데이터 교환이나 기능에 사용되는 외부 API와 어떻게 상호 작용하는지 테스트합니다. 이러한 API가 데이터를 올바르고 완벽하게 통신하는지 확인합니다.
데이터 파이프라인: 데이터 수집부터 모델 학습 및 예측까지 AI 파이프라인의 다양한 단계 간에 원활한 데이터 흐름을 보장하는지, 파이프라인 내에 병목 현상이나 호환성 문제가 없는지 확인합니다.
모듈식 상호작용: AI 시스템 내의 다양한 모듈(예: 사전 처리, 기능 엔지니어링, 모델)이 어떻게 상호작용하고 데이터를 교환하는지 테스트합니다.
UI 통합: AI 시스템이 사용자 인터페이스와 어떻게 상호 작용하는지 확인합니다.
데이터 통합: AI 시스템 내의 다양한 소스의 데이터가 정확하게 결합되고, 변환되고, 모델 학습과 추론을 위해 일관성이 유지되는지 확인합니다. 이는 고품질 데이터 통합이 AI 모델의 성능과 안정성에 직접적인 영향을 미치기 때문에 중요합니다.
시스템 테스트는 AI 기반 애플리케이션의 각 조각에 집중하기보다 제품의 전체 시스템이 얼마나 잘 상호 작용하는지, 전체 시스템을 평가하는 것을 말합니다. 여기에는 UI, AI 알고리즘 및 시스템을 구성하는 여러 요소들이 사용자 기대에 부응하기 위해 긴밀하게 작동하는지 확인하는 것을 포함합니다.
실제 시나리오 시뮬레이션: 실제 사용자 행동과 엣지 케이스를 모방하는 테스트 케이스를 개발합니다. 이를 통해 다양한 조건에서 AI가 어떻게 수행되는지 평가할 수 있습니다.
편향과 공정성 테스트: AI 모델은 학습하는 데이터에서 편향을 상속받을 수 있습니다. 시스템 테스트는 AI의 의사 결정에서 잠재적인 편향을 발견하고 완화하기 위한 시나리오를 통합해야 합니다.
AI 애플리케이션은 리소스 집약적인 복잡한 알고리즘과 계산을 포함합니다. 그렇기 때문에 테스트를 통해 시스템의 성능을 평가하는 것이 중요합니다. 성능 테스트는 다양한 조건에서 AI 모델과 시스템의 효율성, 확장성, 반응성을 평가하는데 중점을 둡니다. 이를 통해 AI 애플리케이션이 예상 Workload를 처리하고 프로덕션 환경에서 최적의 성능을 발휘 할 수 있는지 확인합니다.
*성능 테스트의 핵심 측면
Latancy : AI 모델이 입력 데이터로부터 예측을 생성하는데 걸리는 시간
Throughput(처리량) : 모델이 시간 당위당 수행할 수 있는 예측 또는 추론의 수
Scalability(확장성) : 부하가 증가함에 따라 성능을 유지하는 모델의 능력
Robustness(견고성) : 엣지 케이스 및 예상치 못한 입력을 포함한 다양한 시나리오 및 조건에서의 성능
Resource Utilization : 모델이 학습 및 추론하는 동안 사용하는 계산 리소스(CPU, GPU, Memory) 양
부하 테스트는 실제 사용자 시나리오를 시뮬레이션하여 높은 수준의 부하나 스트레스와 같은 다양한 조건에서 시스템이 어덯게 수행되는지 평가하는 것을 포함합니다. 그리고 잠재적인 병목 현상을 식별하고 확장성을 보장하기 위해 사용자 트래픽을 모방하여 시스템의 부하를 점진적으로 증가시켜 테스트합니다. 대량의 데이터, 최대 동시 사용자 불륨 처리, 부하 상태의 전반적인 시스템 속도 및 응답시간, 시스템 안정성을 처리하는 능력을 확인합니다.
*부하 테스트의 핵심 측면
Currency(동시성) : 시스템이 동시에 여러 요청을 처리하는 방식 측정
Throughput(처리량) : 부하 하에서 시간 단위당 처리되는 요청 수
Latancy : 다양한 부하 조건에서의 응답 시간
Resource Utilization : 고부하 중 CPU, GPU, Memory, 네트워크 사용량 모니터링
Error Rates : 부하 중에 실패한 요청 또는 오류 수
AI는 방대한 양의 데이터를 기반으로 작동되고 AI 시스템은 학습 알고리즘을 악용하는 공격에 취약할 수 있습니다. 따라서 민감한 특성과 보안 침해의 잠재적 영향을 감안할 때 다양한 위험으로부터 보호하기 위해 고품질 보안 테스트를 수행하는 것이 필수적입니다. 보안 테스트는 AI 시스템의 조작 취약성을 식별하고 민감한 데이터, 알고리즘 및 기능이 잠재적 위협과 공격으로부터 보호되는지 확인하는 것을 포함합니다. 여기에는 SQL 주입, 크로스 사이트 스크립팅 및 인증 취약성과 같은 일반적인 보안 문제에 대한 테스트가 포함될 수 있습니다.
인수 테스트는 AI 애플리케이션이 이해 관계자와 최종 사용자가 정의한 비즈니스 목표 및 목적과 요구 사항 및 사용자 기대치와 일치하는지 확인하는 것입니다. 간단히 말해서, 제품이 고객에게 실제 가치와 만족을 제공하는지 확인하는 것입니다. 인수 테스트는 개발 수명 주기를 궁극적으로 앱을 사용할 사람들과 연관시켜서 현실에 가까운 가치를 제공하는지 확인하는 것입니다.
지속적인 테스트(CT)는 말 그대로 앱을 끝까지 테스트하는 것입니다. 개발 프로세스 전반에 걸쳐 자동으로 일관되게 테스트를 실행합니다. 이를 통해 문제가 더 심각해지기 전에 일찍 문제를 식별하고 해결하는 데 도움이 될 수 있습니다.
또한, 제품이 성장하고 발전함에 따라 지속적인 테스트를 거쳐 각 변경 사항이 빠르고 의미 있게 적용되는지 확인할 수 있습니다.
AI 기반 소프트웨어는 기존 소프트웨어 품질 특성 외에도 AI 고유의 특성을 반영하여 품질을 평가해야 합니다. 다음은 AI 기반 소프트웨어가 갖춰야 할 주요 품질 특성입니다.
1. 정확성 (Accuracy): AI 모델의 예측이 실제 결과와 얼마나 일치하는지 측정합니다. 특히, 머신러닝 모델의 경우 분류 정확도, 회귀 모델의 오차 등 다양한 정확성 지표를 통해 평가할 수 있습니다.
2. 신뢰성 (Reliability): AI 시스템이 다양한 입력에서도 일관되게 작동하는지 여부를 나타냅니다. 학습 데이터가 바뀌거나 예상치 못한 입력이 주어졌을 때도 안정적으로 동작하는 것이 중요합니다.
3. 해석 가능성 및 투명성 (Explainability and Transparency): AI 모델이 내린 결정을 이해하고 설명할 수 있어야 합니다. 특히 의료, 금융과 같은 고위험 분야에서는 예측 과정이 투명하게 공개되어야 합니다.
4. 공정성 및 편향 없음 (Fairness and Bias): AI 모델이 특정 그룹이나 특성에 대해 편향되지 않고 공정하게 작동하는지 확인합니다. 모델 학습 시 데이터의 다양성을 고려하여 불공정한 판단을 피하는 것이 중요합니다.
5. 확장성 (Scalability): AI 소프트웨어가 대규모 데이터나 복잡한 환경에서 효과적으로 작동할 수 있는지 평가합니다. 이는 실시간 예측을 요구하는 애플리케이션에서 특히 중요합니다.
6. 성능 (Performance): 모델의 처리 속도와 응답 시간이 요구사항을 충족하는지 확인합니다. 예를 들어, 실시간 예측이 필요한 경우, 빠르고 효율적인 처리가 필수입니다.
7. 안전성 (Safety): AI 소프트웨어가 물리적 환경이나 사람의 안전에 위험을 초래하지 않도록 보장합니다. 예를 들어, 자율주행 차량이나 의료 기기와 같은 경우 안전성이 매우 중요합니다.
8. 적응성 (Adaptability): AI 모델이 새로운 데이터를 잘 받아들이고 변화에 빠르게 적응할 수 있는지 여부를 평가합니다. 데이터가 지속적으로 업데이트되는 환경에서는 모델이 쉽게 학습을 이어갈 수 있어야 합니다.
9. 보안 (Security): AI 소프트웨어가 악의적인 공격으로부터 보호될 수 있는지 여부입니다. 예를 들어, 적대적 공격에 대응할 수 있는 견고함이 중요합니다.
10. 효율성 (Efficiency): 자원을 얼마나 효율적으로 사용하는지 평가합니다. 예측 속도와 메모리 사용량 등이 최적화되어야 하며, 특히 대규모 데이터를 다루는 AI 모델에서 필수적인 특성입니다.
이와 같은 품질 특성은 AI 기반 소프트웨어가 신뢰할 수 있는 결과를 제공하고 다양한 환경에 적응하며 안정적으로 동작할 수 있도록 돕습니다.
QA는 AI 기반 앱 테스트를 일반적 소프트웨어 프로젝트로 인식해서는 안 됩니다. AI 제품은 다른 소프트웨어와 크게 다릅니다. 그리고 QA는 이러한 차이를 해결하는 방법을 알아야 합니다.
AI 시스템의 경우 데이터는 모든 출력이나 작업에 필수적입니다. 따라서 AI 모델을 학습하고 테스트하는 데 사용되는 데이터의 품질과 무결성을 보장하는 것이 중요합니다. QA는 테스트를 시작하기 전에 방대한 양의 테스트 데이터(텍스트, 음성, 이미지 또는 비디오 등)를 보유해야 합니다. 성공적인 시스템이 되려면 입력 데이터에 오류(누락값, 이상치 및 불일치 등)가 없어야 하며 데이터를 분석하여 존재할 수 있는 편향을 식별하는 것이 중요합니다. 이는 입력 데이터의 오류와 편향으로 인해 시스템의 데이터 해석에 문제가 생겨 출력에 오류가 발생할 수 있기 때문입니다.
입력 데이터 테스트는 AI가 점을 연결하고 자체 결론을 도출하는 데 필요한 모든 정보를 가지고 있는지 확인합니다. 데이터 테스트는 기본적으로 AI 모델에 의미가 있는 지점까지 데이터를 정제하는 것입니다.
데이터베이스, API, 외부 소스 등 다양한 소스에서 데이터를 수집합니다. 데이터가 애플리케이션과 관련이 있고 광범위한 시나리오를 포괄하는지 확인합니다.
데이터를 사전 처리하여 정리하고 분석을 위해 준비합니다. 여기에는 중복 레코드 제거, 오류 수정, 데이터를 적합한 형식으로 변환하는 작업이 포함될 수 있습니다.
AI 모델에 맥락과 의미를 제공하기 위해 데이터에 레이블을 지정합니다.
데이터를 증강하여 다양성을 높이고 AI 모델의 성능을 개선합니다. 예를 들어, 데이터에 노이즈를 추가하거나, 합성 정보를 생성하거나, 변환을 적용할 수 있습니다.
데이터가 정확하고 완전한지 확인하기 위해 검증합니다. 사전 정의된 규칙이나 제약 조건에 대해 데이터를 확인하고, 오류를 식별하고, 불일치 사항을 수정합니다.
패턴, 추세, 이상치를 식별하기 위해 데이터를 프로파일링합니다.
정확성, 완전성, 일관성을 포함하여 데이터의 전반적인 품질을 평가합니다.
(컴퓨터 모델과 소프트웨어를 사용하여 실제 세계의 측면을 복제하거나 에뮬레이션하는 것)
AI 애플리케이션을 효과적으로 테스트하려면 미리 정의된 일련의 시나리오를 실행하는 것 이상이 필요합니다. 검증 전략에는 현실 세계 조건이 포함되어야 합니다. 검증 전략은 모델이 의도한 대로 작동하고 비정상적인 사례를 처리할 수 있는지 확인합니다.
현실 세계 조건을 시뮬레이션하려면 현실의 복잡성을 모방하는 테스트 환경을 만들어야 합니다. 이를 위해 몇 가지 측면을 고려해야 합니다. AI가 현실적인 패턴으로 작업하도록 하는 것이 성공 가능성을 높여줄 것입니다.
모델 검증은 일종의 최종 시험과 같습니다. AI 모델이 실제 데이터를 얼마나 정확하게 예측하는지 평가합니다. 여기에는 두 가지 주요 요소를 철저히 평가하는 것이 포함됩니다. AI의 생산성을 파악하려면 미리 정의된 기준에 따라 성능을 평가해야 합니다. 이 단계에서 문제가 발생하면 말하자면 데이터로 돌아가는 것이 좋습니다. 대부분의 AI 성능 문제는 잘못된 정보에서 비롯되기 때문입니다.
해석 가능성은 인간이 AI 모델이 내린 결정의 원인을 이해할 수 있는 정도입니다. AI 모델의 해석 가능성 테스트는 모델이 어떤 방식으로 예측 결과를 도출하고 내린 결정을 이해하며 설명할 수 있는지 확인하는 데 중점을 둡니다. 특히 설명 가능성이 중요한 도메인(의료, 금융, 법률 등)과 같은 고위험 분야에서 특히 중요한데 모델의 예측 과정을 이해할 수 있는지, 예측이 직관적이고 합리적인지 확인합니다.
편향성 테스트
AI의 편향은 인종, 성별, 연령 등의 속성을 기반으로 특정 그룹을 부당하게 대우하는 결과를 낳는 모델의 체계적인 오류와 사용자가 AI 출력에만 의존하여 그 뒤에 있는 논리를 비판적으로 평가하지 않는 것을 말합니다. 이는 사용자가 AI 시스템이 어떻게 결론에 이르렀는지 완전히 이해하지 못한 채 결정을 내릴 것이라고 믿을 때 발생할 수 있습니다.
편향성 테스트는 AI 모델이 특정 그룹에 편향되어 있거나 공정하지 않은 예측을 하지 않는지 확인합니다. 그래서 AI 모델의 편향성 테스트에는 통계 분석, 공정성 지표, 인간 판단의 조합이 포함되어야 합니다. 데이터를 체계적으로 감사하고, 학습 데이터의 다양성을 확보하고, 다양한 그룹에서 성과 지표를 평가하고, 공정성 알고리즘과 해석 도구를 사용하면 AI 모델의 편향성을 식별하고 완화할 수 있습니다.
*편향을 피하기 위한 고려 사항
AI 시스템이 어떻게 작동하는지, 어떤 한계가 있는지 이해할 수 있도록 AI 시스템을 투명하고 설명 가능하게 만듭니다. 이를 통해 QA는 더 정보에 입각한 결정을 내리고 AI 시스템을 맹목적으로 신뢰하는 것을 피할 수 있습니다.
AI 시스템에 인간의 감독을 통합하여 항상 AI 시스템의 출력을 검토하고 검증할 사람이 루프에 있도록 합니다. 이를 통해 AI 시스템의 오류와 편향을 포착하고 적절하게 사용하도록 보장할 수 있습니다.
AI 시스템의 성능에 대한 지속적인 모니터링과 평가를 구현하면 문제나 편향을 신속하게 식별하고 해결할 수 있습니다. 이를 통해 AI 시스템이 시간이 지나도 정확하고 신뢰할 수 있도록 보장하는 데 도움이 될 수 있습니다.
AI가 사용할 수 있는 정확한 오류 처리 방법도 있어야 합니다. 예를 들어, AI가 답을 확신하지 못하거나 답을 모르는 경우 가장 "적합한" 출력을 제시하는 대신 답을 확신하지 못하거나 모르는 것을 알려주도록 하는 것이 좋습니다.
잘못된 AI 모델은 잘못된 결과를 생성하고, 개인 정보를 공유하고, 잘못된 정보를 퍼뜨릴 수 있습니다. AI 기반 제품이 책임감 있게 개발 및 배포되고 해를 끼치거나 편견을 영속시키지 않도록 테스트되어야 합니다. AI 규제도 고려해야 합니다. 법률을 알면 어디로 갈지 예상하고 제품을 미리 다듬을 수 있습니다.
엣지 케이스는 인간의 상상력이나 행동 변화에 한계가 없기 때문에 추정하기 어렵습니다. 그래도 AI의 견고성, 신뢰성, UX 향상을 위해 테스트를 해야합니다. 제품이 다룰 수 있는 이상한 시나리오를 생각해내는 것은 QA 전문가의 관점이 필요합니다.
AI 기반 앱을 엣지 케이스에 대해 얼마나 잘 테스트할지는 대부분 QA의 경험에 달려 있습니다. 하지만 모든 가능한 케이스에 대해 생각할 필요는 없습니다.
QA들은 표준을 벗어나거나 앱의 경계를 넓히는 시나리오를 테스트하여 AI 모델이 극단적인 상황이나 비정상적인 입력값을 어떻게 처리하는지 확인합니다. 이러한 테스트를 통해 모델이 예외 상황에서 잘못된 예측을 하거나 비정상적인 동작을 하는지 파악할 수 있으며, 제품이 무엇을 할 수 있는지 알고, 대상 고객을 연구하고, 한정된 수의 편차를 파악해서 AI가 이상한 요청에 정직하게 응답할 수 있도록 요구해야 합니다.
(+) 적대적 테스트
적대적 테스트는 의도적으로 교란이나 악의적인 입력을 도입하여 모델이 이러한 과제를 얼마나 잘 견뎌내고 올바르게 대응할 수 있는지 테스트하여 머신 러닝 모델의 견고성과 보안을 평가하는 데 사용되는 기술입니다. 이러한 유형의 테스트는 취약성을 식별하고 공격 및 예상치 못한 입력에 대한 AI 시스템의 회복력을 개선하는 데 중요합니다.
머신 러닝
머신 러닝(ML)은 패턴을 인식하기 위해 방대한 데이터 집합으로 훈련되므로 '테스트 사례 생성, 테스트
분석, 버그 예측 등'에 이상적입니다.
딥 러닝 (TensorFlow etc.)
자동화 (웹:Selenium/앱:Appium,Katalon,Testim/기능:Functionize etc.)
Neural networks
신경망은 인간의 뇌를 모방한 상호 연결된 뉴런 또는 노드의 복잡한 시스템으로, 의사 결정과 예측을 내리
고 데이터로부터 학습할 수 있는 능력으로 '데이터 이상 탐지, 이미지 및 객체 인식, 사용자 경험(UX)'을 테
스트하는 데 사용할 수 있습니다.
AI 자연어 처리 (Joseph Weizenbaum이 만든 ELIZA 프로그램)
시각적 테스트 (Applitools etc.)
❖ AI 테스터가 되기 위해 갖춰야 할 기술
AI 테스터가 되려면 컴퓨터 및 데이터 과학 배경이 필요하며 일부 딥 러닝 원리를 이해해야 합니다. 또한 소프트웨어 테스트 방법에 익숙해야 합니다.
*AI 테스터가 되기 위해 갖춰야 할 주요 기술
AI 자동화 도구 기술
클라우드 컴퓨팅에 대한 지식 : 클라우드 컴퓨팅은 테스트 속도 향상, 비용 및 노력 감소, 재해 복구 등 AI 기반 테스트에 여러 가지 이점을 제공합니다.
시각적 테스트(Visual Testing)
AI 기반 시스템 테스트 기술을 확장하는 데 도움이 되는 자격증 보유 (ex) ISTQB CT-AI)
자격증을 통해 얻을 수 있는 이점,
> AI의 현재 상태와 예상 추세를 이해합니다.
> 자기학습 기능, 편견, 윤리, 복잡성, 비결정성, 투명성, 설명 가능성 등 AI 기반 시스템을 테스트하는
데 관련된 과제를 이해합니다.
> AI 기반 시스템의 테스트 전략에 기여합니다.
> AI 기반 시스템에 대한 테스트 사례를 설계하고 실행합니다.
> AI 기반 시스템 테스트를 지원하는 테스트 인프라에 대한 특별한 요구 사항을 인식합니다.
> AI를 사용하여 소프트웨어 테스트를 지원하는 방법을 이해합니다.
프로그래밍 기술 : 소프트웨어 테스팅 전문가가 되기 위한 기본 전제 조건 중 하나입니다. 그 중 자동화 테스팅에 고려할 수 있는 언어 Python, C#, Java, Ruby, Javascript 에 대한 기술을 보유하는 것이 좋습니다.
❖ 출처
https://www.techtarget.com/searchenterpriseai/definition/Turing-test
https://www.qamadness.com/testing-ai-powered-applications-forget-the-turing-test-welcome-qa/
https://relevant.software/blog/ai-testing/
https://testcrew.com/blog/6-skills-you-must-have-to-become-ai-tester/