“제가 본 것 중 가장 놀라운 머신 러닝 애플리케이션입니다.”
Instagram의 공동 창립자 마이크 크리거.
마이크 크리거의 말은 과장된 표현이 아닙니다. ML은 데이터 분석과 인사이트 측면에서 몇 가지 놀라운 기능을 제공하지만, 전 세계 제품 개발자에게 제공할 수 있는 잠재적 유용성 때문에 GitHub Copilot은 완전히 판도를 바꿀 수 있습니다.
코딩 코파일럿과 제너레이티브 AI는 소프트웨어 개발 라이프사이클을 지금까지는 상상할 수 없었던 속도로 가속화하는 등 팀이 엄청난 이점을 누릴 수 있도록 도와줍니다. 그러나 이 놀라운 기술의 가장 흥미로운 두 가지 분야는 RPA와 소프트웨어 테스팅에 미치는 영향입니다.
이 글에서는 코딩 코파일럿과 제너레이티브 AI가 현재 소프트웨어 테스팅과 RPA의 세계를 어떻게 변화시켰는지 살펴본 후, 이 기술이 미래에 미칠 영향에 대해 살펴볼 것입니다.
조종사 및 생성 AI
소프트웨어 개발: 입문서
제너레이티브 AI와 코딩 코파일럿은 소프트웨어 개발 환경에서 비교적 최근에 등장한 분야입니다. 공간에 미치는 영향에 대해 논의하기 전에 그 배경과 작동 방식을 살펴볼 필요가 있습니다.
1. AI 기반 자동 코더
대규모 언어 모델(LLM)은 지난 몇 년 동안 눈에 띄게 개선되었습니다. 데이터 세트의 크기와 계산 능력이 기하급수적으로 증가함에 따라 결과물의 품질도 높아졌습니다.
LLM의 혜택을 누릴 수 있는 업종은 다양합니다. 가장 많이 작성된 내용 중 일부는 텍스트, 이미지, 동영상 및 기타 형태의 미디어 생성에 관한 것입니다. 하지만 이러한 사용 사례도 인상적이지만, 개발자에게는 훨씬 더 흥미로운 시사점이 있습니다.
시중에는 다양한 LLM 자동 코더가 있습니다. 하지만 가장 잘 알려져 있고 가장 뛰어난 기능을 제공하는 것은 아마도 GitHub CoPilot일 것입니다. 그 이유 중 가장 큰 부분은 GitHub 리포지토리에서 학습되기 때문입니다. 수백만 개의 오픈 소스 코드, 모범 사례, 애플리케이션 아키텍처 등의 예제에 액세스하여 학습할 수 있으며, 이를 통해 고품질의 다양한 결과물을 제공할 수 있습니다.
2. 코딩 코파일럿은 어떻게 작동하나요?
코딩 코파일럿이 어떻게 작동하는지에 대해 이야기하는 가장 쉬운 방법 중 하나는 업계 최고의 제품인 GitHub CoPilot을 살펴보는 것입니다. 이 애플리케이션은 OpenAi의 ChatGPT-3 모델을 기반으로 합니다.
ChatGPT 및 유사한 LLM과 마찬가지로 CoPilot은 수십억 개의 매개변수를 기반으로 합니다. ChatGPT-3를 개발하는 동안 OpenAI는 OpenAI 코덱스라는 전용 코딩 프로그램을 구축하기 시작했습니다. Microsoft는 제품에 대한 독점적 액세스 권한을 구입했습니다.
하지만 여기서 중요한 것은 Microsoft가 이미 GitHub를 소유하고 있었다는 점입니다. 코더라면 깃허브에 대해 잘 알고 계실 겁니다. 기본적으로 소프트웨어 개발 프로젝트에서 버전 관리 및 협업에 사용되는 웹 기반 플랫폼입니다. 수백만 줄의 오픈소스 공개 코드가 포함된 GitHub 라이브러리에서 OpenAI 코덱스를 학습시켰습니다.
CoPilot은 머신러닝을 사용하여 코드 줄 간의 패턴과 관계를 찾습니다. ChatGPT와 마찬가지로 단어나 줄을 보고 방대한 과거 데이터 저장소를 기반으로 다음에 나올 확률을 계산합니다.
AI 코파일럿의 힘은 개발자가 편집할 때 코드 스니펫을 제안하는 기능에 있습니다. 코딩을 위한 슈퍼차지된 자동 완성 기능이라고 생각하세요. 코더가 코드 한 줄을 입력하면 LLM은 해당 코드의 시작 부분을 이전 프로젝트의 방대한 라이브러리와 비교합니다. 거기서부터 확률적인 대사와 참신한 코드 라인을 제안합니다.
개발자는 이 자동 완성 기능을 통해 엄청난 시간을 절약할 수 있다는 분명한 이점이 있습니다. 생산성을 높이고 많은 경우 코드의 정확성을 향상시킵니다.
3. 코딩 및 개발을 위한 제너레이티브 AI는 어떤가요?
코파일럿의 역사에서 알 수 있듯이 제너레이티브 AI와 코파일럿은 비슷한 뿌리를 가지고 있습니다. 두 기술 모두 통계적 확률을 사용하여 추정된 정보를 기반으로 사용자에게 필요한 것을 예측하는 기술입니다.
하지만 코파일럿 소프트웨어와 제너레이티브 AI의 가장 큰 차이점은 후자는 프롬프트 기반이라는 점입니다. 즉, 사용자가 기계에 일련의 서면 지침을 입력하면 기계가 콘텐츠를 출력하는 방식입니다. ChatGPT 또는 이와 유사한 애플리케이션을 사용해 본 사람이라면 누구나 알겠지만, 이 출력은 텍스트, 이미지, 동영상 또는 코드의 형태로 제공될 수 있습니다.
따라서 코더가 자동화된 코딩에 도달하기 위해 사용하는 방법은 다르지만 AI 지원 자동 코딩 또는 제너레이티브 코딩이라는 비슷한 범주에 넣을 수 있습니다.
소프트웨어 테스트의 진화
소프트웨어 테스트는 반응성이 뛰어나고 끊임없이 진화하고 있습니다. 수십 년 동안 새로운 요구 사항을 충족하고 기술의 발전을 활용하기 위해 변화와 변신을 거듭해 왔습니다.
1. 수동 테스트:
소프트웨어 테스트의 초기에는 수동 테스트가 필요했습니다. 이러한 종류의 테스트는 일련의 테스트 케이스를 개발하고, 실행하여 결과를 기록하고, 수정 일정을 잡고, 프로세스를 반복하는 등 QA 전문가가 소프트웨어를 세밀하게 검토해야 하므로 비용과 시간이 많이 소요되었습니다.
가능한 모든 시나리오와 상황을 테스트에 포함시키는 것은 큰 과제였으며, 시간과 비용까지 더하면 수동 테스트는 리소스 집약적인 작업이었습니다. 또한 제한된 배포 옵션으로 인해 인적 오류에 매우 취약했으며, 발견되지 않은 버그를 신속하게 패치하기가 어려웠습니다.
2. 스크립트 테스트:
스크립트 테스트는 QA 커뮤니티에 큰 진전을 가져왔습니다. 개발자는 코드와 테스트 시나리오를 수동으로 진행하는 대신 소프트웨어를 자동으로 테스트할 수 있는 프로그램을 작성할 수 있었습니다. 가장 큰 장점은 테스트의 효율성이 높아지고 인적 오류가 줄어든다는 점입니다. 하지만 이를 달성하려면 포괄적인 커버리지를 보장하기 위해 숙련되고 정확하며 시간 집약적인 계획과 코딩이 필요했습니다.
3. 테스트 자동화:
테스트 자동화는 테스트의 차세대 진화였습니다. ZAPTEST와 같은 도구는 코더에게 스크립트 테스트의 모든 이점을 제공하면서도 코드가 필요 없는 인터페이스를 제공합니다. 여기서도 시간 절약, 재사용 및 적응 가능한 테스트, UI 및 API 테스트, 크로스 플랫폼 및 크로스 디바이스 테스트가 중요한 이점이었습니다.
4. 데이터 기반 테스트:
데이터 기반 테스트는 다양한 데이터 세트를 처리하는 소프트웨어를 테스트하는 문제에 대한 해결책이었습니다. 다시 말하지만, 이 방법은 테스트 자동화의 한 형태이지만 테스트 스크립트를 생성하고 할당된 데이터 세트에 대해 실행하는 것을 포함합니다. 이러한 유형의 테스트를 통해 개발자는 더 빠르게 작업하고, 테스트를 분리하고, 테스트 케이스를 반복하는 시간을 줄일 수 있습니다.
5. 생성형 AI 테스트:
제너레이티브 AI 테스트는 소프트웨어 테스트의 최신 혁신입니다. QA 팀은 LLM을 사용하여 테스트 프로세스를 가속화하는 데 도움이 되는 테스트 케이스와 테스트 데이터를 생성할 수 있습니다. 이러한 테스트 케이스는 매우 유연하고 편집 가능하므로 개발자가 테스트를 재사용 및 용도 변경하고 테스트 범위를 크게 확장하는 데 도움이 됩니다.
현재 부조종사 및
소프트웨어 테스팅 및 RPA의 생성적 AI
제너레이티브 AI와 코파일럿은 소프트웨어 테스트에 큰 영향을 미쳤습니다. 하지만 이러한 도구는 코더를 완전히 대체하기보다는 테스터를 보강하는 데 도움이 되었습니다. 즉, 개발자가 더 빠르고 효율적으로 작업할 수 있도록 도와주며, 많은 경우 테스트 품질을 향상시킵니다.
그리고
2023년 스택 오버플로 개발자 설문조사
는 현재 소프트웨어 개발 커뮤니티에서 AI 도구가 어떻게 사용되고 있는지에 대한 몇 가지 인사이트를 제공합니다. 설문조사에서 가장 흥미로운 부분 중 하나는 전체 개발자의 절반 이상이 소프트웨어 테스트를 위한 AI 도구에 관심이 있다고 답한 반면, 이러한 도구를 신뢰한다고 답한 개발자는 3% 미만이었다는 점입니다. 또한 4명 중 1명만이 현재 소프트웨어 테스트에 AI 도구를 사용하고 있다고 답했습니다.
이 통계에서 흥미로운 점은 AI 도구 사용이 아직 널리 보급되지 않았으며 얼리 어답터가 여전히 이점을 얻을 수 있다는 점을 보여줍니다.
1. 소프트웨어 테스트 및 RPA의 코파일럿 및 생성적 AI 사용 사례
코파일럿과 제너레이티브 AI는 소프트웨어 개발의 모든 영역에 영향을 미치고 있습니다. 다음은 이 기술이 소프트웨어 테스트 및 RPA에 도움이 될 수 있는 몇 가지 방법입니다.
요구 사항 분석
요구 사항 분석은 소프트웨어 개발 라이프사이클의 핵심 부분입니다. 이 프로세스에는 이해관계자의 요구 사항과 소프트웨어 구축에 필요한 다양한 기능을 이해하는 것이 포함됩니다. 제너레이티브 AI는 새로운 아이디어와 관점을 제시하여 팀의 아이디어 창출에 도움을 줄 수 있습니다.
테스트 계획
테스트 요구 사항을 잘 이해했다면 QA 팀은 적절한 테스트 커버리지를 보장하기 위해 일정을 세분화해야 합니다. 이러한 유형의 작업에는 전문 지식과 경험이 필요하지만, 제너레이티브 AI는 예제와 가이드를 통해 팀을 지원하고 고유한 요구 사항에 맞는 특정 도구와 모범 사례를 추천할 수 있습니다.
테스트 사례 생성
QA 팀은 LLM을 사용하여 코드, 사용자 요구 사항 및 소프트웨어 사양을 분석하여 시스템 이면의 근본적인 관계를 이해할 수 있습니다. AI가 소프트웨어의 입력과 출력, 예상되는 동작을 파악하면 소프트웨어를 테스트할 테스트 케이스 구축을 시작할 수 있습니다.
시간과 수동 코딩을 절약하는 것 이상의 이점이 있습니다. 또한 AI 테스트 케이스 생성은 QA 엔지니어가 고려하지 않을 수 있는 영역을 탐색할 수 있으므로 보다 포괄적인 커버리지로 이어져 보다 안정적인 빌드로 이어질 수 있습니다.
버그 찾기 및 해결
머신 러닝을 통해 QA 전문가는 버그를 찾고 해결하는 데 걸리는 시간을 크게 단축할 수 있습니다. 소프트웨어 테스트에서는 많은 버그를 쉽게 찾을 수 있습니다. 그러나 많은 시나리오에서 이 작업은 힘들고 시간이 많이 걸리는 과정입니다. 생성형 AI는 수작업에 비해 훨씬 짧은 시간 내에 검사를 수행할 수 있으며, 가장 고집스러운 버그도 찾아낼 수 있습니다. 또한 이러한 AI 도구는 발견한 버그를 해결할 수도 있으므로 QA 팀의 시간을 무한히 절약할 수 있습니다.
UI 테스트
제너레이티브 AI 도구는 다양한 사용자 행동과 소프트웨어 시스템과의 상호작용을 시뮬레이션할 수 있습니다. 이 방법을 통해 개발팀은 인터페이스가 인간과 컴퓨터가 사용하는 다양한 용도를 처리할 수 있다는 확신을 가질 수 있습니다. 또한 제너레이티브 AI는 사용자 인터페이스 데이터와 히트맵을 분석하여 UI를 개선하고 사용자 친화적으로 만드는 방법에 대한 제안을 할 수도 있습니다.
코파일럿과 제너레이티브 AI의 미래
소프트웨어 테스트 및 RPA
현재 소프트웨어 자동화 분야에서 코파일럿과 제너레이티브 AI의 활용은 이미 흥미진진하지만, 미래에는 더 많은 가능성이 열려 있습니다.
코파일럿과 제너레이티브 AI의 미래는 제품 개선에 달려 있습니다. 퍼듀 대학교의 최근 연구 제목은 다음과 같습니다. 누가 더 잘 대답하나요? 소프트웨어 엔지니어링 질문에 대한 ChatGPT 및 스택 오버플로 심층 분석 답변 는 제너레이티브 AI 모델의 몇 가지 한계를 강조합니다.
연구원들은 스택 오버플로우에서 500개 이상의 질문을 ChatGPT에 제공했습니다. AI 도구는 절반 이상 부정확하게 답변했습니다. 연구진이 지적한 가장 중요한 문제 중 하나는 AI가 질문을 제대로 이해하지 못해 가장 자주 실패했다는 점입니다. 이 세부 사항은 제너레이티브 AI 내에서 신속한 엔지니어링의 중요성을 강조합니다.
또한, 구글과 아마존은 올해 면접 질문 환경에서 생성 AI 도구의 품질을 살펴보기 위해 독립적인 테스트를 실시했습니다. 두 경우 모두 이 도구는 테스트 질문에 충분히 잘 답하여 직위를 얻었습니다.
CNBC
과
비즈니스 인사이드
를 각각 구독하세요.
따라서 이 기술의 잠재력이 있는 시점에 와 있지만 몇 가지 사소한 부분을 보완해야 하는 것은 분명합니다. 최근 몇 년 동안 이러한 도구가 개선된 규모를 보면 필요한 수준에 도달할 수 있을 것이라는 확신이 들며, 아마도 예정보다 앞당겨질 수도 있습니다.
이제 이러한 기술이 소프트웨어 개발 테스트의 미래에 어떤 영향을 미칠지 몇 가지 영역을 살펴볼 수 있습니다.
1. 초자동화
하이퍼오토메이션은 자동화할 수 있는 모든 프로세스가 자동화되는 기업 진화의 목적지를 의미합니다. 생산성에 대한 총체적인 접근 방식이며 서로 밀접하게 연결되어 있습니다.
소프트웨어 개발 측면에서 비즈니스 프로세스 요구 사항을 감독하는 중앙 집중식 시스템을 상상하는 것은 어렵지 않습니다. 이 시스템은 요구 사항과 효율성을 이해하고 파악하며 기술을 통해 개선이 필요한 영역을 지속적으로 파악합니다.
비즈니스가 발전함에 따라 이러한 중앙 집중식 시스템은 제너레이티브 AI를 사용하여 병목 현상과 비효율성을 자동으로 해결하거나 특정 작업을 엔지니어가 완료하도록 푸시하는 애플리케이션을 구축할 것입니다.
2. 소프트웨어 아키텍처 설계
충분한 데이터가 있으면 AI 도구는 소프트웨어 아키텍처 모범 사례를 이해하고 효율성을 극대화하기 위해 이러한 설계를 개선할 방법을 찾을 수 있습니다. 머신러닝은 인간의 사고 범위를 넘어서는 패턴과 관계를 찾아내는 것입니다.
AI 도구가 다양한 애플리케이션에 대한 충분한 지식을 가지고 있다면, 이전 아키텍처를 새로운 요구사항에 맞게 수정하도록 지시하여 보다 효율적인 빌드 또는 다른 방법으로는 고려하지 않았던 아이디어까지 도출할 수 있습니다.
3. 레거시 시스템 현대화
완벽한 소프트웨어는 없지만, 여전히 뛰어난 성능을 발휘하고 회사 인프라에 깊숙이 내장되어 있어 대체하기 어려운 도구가 많이 있습니다. 특히 유행에 뒤떨어진 소프트웨어 코드를 사용하여 작성된 시스템이라면 이러한 시스템을 적용하는 것이 번거로울 수 있습니다.
앞으로 제너레이티브 AI 도구는 이 코드를 최신 언어로 변환할 수 있으므로 팀은 기존 시스템을 유지하면서 많은 경우 개선할 수 있습니다.
4. 로우코드 및 노코드 개발 강화
위에서 살펴본 제너레이티브 AI 도구를 통한 자동화 소프트웨어 테스트의 어려움 중 하나는 코더가 결과물을 검증할 수 있는 지식과 경험이 부족한 상황이었습니다.
AI 코파일럿은 강력한 애플리케이션으로 이어지는 더 나은 제안을 통해 로우코드 도구를 보강하는 데 도움이 됩니다. 정교한 테스트 도구를 사용하면 작업자가 자유롭게 창의력을 발휘하는 동시에 작업을 지속적으로 검증하고 비기술 전문가가 필요한 애플리케이션을 구축할 수 있도록 문호를 개방할 수 있습니다.
소프트웨어 테스트에서 생성적 AI의 이점
소프트웨어 테스트에 제너레이티브 AI를 사용하면 품질 저하 없이 더 빠르게 작업하고자 하는 개발 팀에게 매력적인 옵션이 될 수 있는 많은 이점이 있습니다.
1. 소프트웨어 개발 수명 주기 단축
개발자는 소프트웨어와 새로운 기능을 적시에 출시하기 위해 장시간 근무해야 한다는 끊임없는 압박을 받습니다. 애자일/데브옵스 방법론으로 개발의 효율성이 높아졌지만, 여전히 간소화를 통해 이점을 얻을 수 있는 개별 개발 단계가 있습니다.
제너레이티브 AI 툴을 사용하면 테스트 팀이 프로토타입 생성부터 UI 테스트에 이르기까지 다양한 SDLC 단계를 처리할 수 있습니다.
2. 포괄적인 버그 탐지
소프트웨어 테스트에서 AI를 가장 강력하게 활용하는 방법 중 하나는 대규모 데이터 세트를 비교하는 기술에서 비롯됩니다. ML 도구는 방대한 데이터 세트(코드 포함)를 분석하여 정보 및 예상 모델의 저장소를 구축할 수 있습니다.
개발자는 코드를 커밋할 때 이러한 모델과 비교하여 예상치 못한 시나리오, 종속성 및 취약성을 강조할 수 있으므로 전체 개발 프로세스에서 더 나은 코드를 작성할 수 있습니다.
3. 향상된 테스트 커버리지
머신러닝 도구는 방대한 데이터를 분석하고 이해하기 위해 만들어졌습니다. 소프트웨어 테스트에 적용하면 팀이 소프트웨어 테스트의 범위를 늘릴 수 있습니다. AI는 단순히 사람의 노동력을 줄여 비용을 절감하는 것뿐만 아니라 복잡한 시나리오 전반에서 버그 탐지를 개선할 수 있는 훨씬 더 포괄적인 유형의 테스트로 이어집니다.
4. 비용 절감
QA 엔지니어 팀을 고용하여 반복적이고 시간이 많이 소요되는 소프트웨어 테스트 작업에 사용하는 것과 비교할 때, 생성형 AI와 RPA는 더 빠르고 비용 효율적입니다.
소프트웨어 개발의 경쟁이 치열해지면서 예산 내에서 고품질의 내구성 있는 제품을 제공할 수 있는 방법을 찾는 것이 점점 더 중요해지고 있습니다. 제너레이티브 AI 툴과 코파일럿을 사용하면 엔지니어에 대한 의존도를 줄이고 가치 중심 작업을 수행할 수 있으며 빌드가 덜 부풀어 오를 수 있습니다.
제너레이티브 AI 도구는 종말을 고할 것인가
인간 소프트웨어 엔지니어의 비율은 얼마나 될까요?
자동화 도구의 분명한 이점에도 불구하고 모든 자동화 도구는 직원들에게 미래에 대한 불안감을 줄 수 있습니다. 이는 정상적인 반응이지만, 제너레이티브 AI의 속도와 범위로 인해 우려의 범위가 평소보다 더 넓어지고 있습니다. 이러한 도구는 많은 작업을 자동화할 수 있지만 소프트웨어 엔지니어가 하는 모든 작업을 수행할 수는 없습니다. 엔지니어와 리더는 기술의 기능과 한계를 이해하는 것이 필수적입니다.
사람들이 가장 먼저 기억해야 할 것은 AI 기반 테스트 자동화 도구가 꽤 오랫동안 시장에 존재해 왔다는 사실입니다. 그러나 제너레이티브 AI의 사용자 친화적인 특성 덕분에 더 많은 유연성을 확보할 수 있습니다.
가장 먼저 고려해야 할 사항 중 하나는 제너레이티브 AI는 검증할 수 있는 결과물에 가장 효과적이라는 점입니다. 이것이 핵심 포인트입니다. LLM은 교육을 받는 특성상 때로는 사실, 참고 자료 및 논거를 ‘환각’하는 것을 의미하더라도 답변을 제공하기 위해 최선을 다할 것입니다.
이제 코딩에 대한 지식이 충분하다면 생성형 AI가 출력하는 모든 텍스트를 읽고 검증하여 잠재적인 오류를 찾아낼 수 있습니다. 코딩을 할 수 없는 대신 제너레이티브 AI를 사용하는 시민 코더라면 이러한 실수를 잡아내는 능력이 떨어집니다.
따라서 이러한 관점에서 볼 때 숙련된 엔지니어는 여전히 소프트웨어 개발 생태계의 중요한 부분을 차지할 것입니다. 이들은 여전히 감독 및 실무적 의미에서 테스트를 받아야 합니다.
소프트웨어 테스트를 위한 제너레이티브 AI의 또 다른 한계는 모바일 테스트와 관련이 있습니다. 예를 들어, ChatGPT는 웹사이트 UI를 테스트하는 데 좋은 옵션입니다. 하지만 다른 모바일 장치에는 액세스할 수 없습니다. 시장에 출시된 핸드셋과 모델이 너무 다양하기 때문에 ZAPTEST와 같은 최신 테스트 자동화 소프트웨어에 비해 뒤쳐집니다. 이 문제도 사소한 장애물이 아닙니다. 이상
전체 인터넷 사용의 절반이 모바일에서 이루어집니다.
에서 이루어지며, 그 수는 매년 증가하고 있습니다.
따라서 제너레이티브 AI가 개발자의 많은 업무를 대신하겠지만, 테스트 인프라와 결과물 검증 기능의 대대적인 변화 없이는 이러한 전문가를 쓸모없는 존재로 만들지는 않을 것입니다.
마지막 생각들
소프트웨어 테스트와 RPA는 지속적으로 개선되고 있습니다. 새로운 기술과 방법이 등장함에 따라 두 분야 모두 모범 사례를 흡수하여 QA 팀이 수동 테스트에 비해 훨씬 적은 비용으로 더 빠르고 포괄적인 테스트를 제공할 수 있도록 지원합니다.
테스트 범위를 개선하고 인적 오류와 비용을 줄이는 것이 AI 기반 테스트의 가장 확실한 이점 중 하나이지만, 팀이 지속적인 통합 및 배포 파이프라인(CI/CD) 접근 방식을 채택하는 데도 도움이 됩니다.
소비자의 기대치와 경쟁이 그 어느 때보다 높아진 상황에서 제너레이티브 AI는 품질 저하 없이 빠르고 효율적인 테스트를 제공할 수 있는 방법을 팀에 제공합니다.