자동화 테스트란?
이름에서 알 수 있듯이. 자동화 테스트는 소프트웨어 테스팅 활동을 수행하고 자동화 도구 세트 또는 프레임 워크를 통해 실행합니다. 간단히 말해서,이 도구는 자동으로 정의 된 패턴의 작업 집합을 실행하는 테스트의 유형입니다.
수동 테스터의 압력을 받아 예비 테스트,테스트 결과 검토 등 고 부가가치 작업에 집중할 수 있습니다. 본질적으로 기계는 회귀 테스트와 같이 평범하고 반복적이며 시간이 혼란스러운 작업을 인수하고 구현합니다. 자동화 테스트는 짧은 시간 내에 더 많은 테스트 커버리지를 달성하고 결과의 정확성을 높이려면 필수적입니다.
소프트웨어 수명 주기에서 자동화 테스트가 중요한 이유는 무엇입니까?
이것을 상상해보십시오.
품질보증인 첫 날에는 입력이 필요한 약 100 개의 필드가 포함된 응용 프로그램을 테스트해야 합니다. 예비 테스트를 수행 할 때는 각 필드에 수동으로 입력을 삽입해야합니다. 이것은 당신이 정말로 빠른 경우 할 약 10 분 정도 걸립니다.
제출을 누릅니다. 오류 메시지가 나타납니다. 처리되지 않은 예외처럼 보입니다. 당신은 버그를보고 잘 작업에 대해 정말 좋은 느낌. 이 과정을 반복하고 몇 가지 버그를 더 찾고 일반적으로 생산적인 첫날을 보내십시오.
다음 날,개발자는 문제를 해결하고 당신은 전날 같은 단계를 반복,소프트웨어의 새 버전을 테스트해야합니다. 버그가 수정되었습니다. 잘 했어. 당신의 노력 덕분에 좋은 사용자 경험이 보장됩니다.
셋째 날,개발자는 새로운 기능을 갖춘 최신 버전을 출시했습니다. 그러나 새로운 기능이 이전 작업 기능을 파괴하지 않았 음을 보장하기 위해,당신은 다시 과정을 반복해야합니다. 문제를 찾을 수 없습니다.
한 달 후,개발자는 지속적으로 새로운 버전을 출시하고,이는 매번 동일한 프로세스(필드 입력 삽입)를 반복하면서 소프트웨어를 계속 테스트해야한다는 것을 의미합니다. 당신은 지루하고 피곤합니다. 정확도는 흔들리기 시작하며,그 결과 결국 버그가 누락 될 수 있습니다.
믿거 나 말거나,이것은 대부분의 품질 보증서에 대한 상당히 일반적인 시나리오입니다. 동일한 일을 계속해서 또다시 하,그것에 완전하것은 가능하지 않다 언제나. 이것은 자동화 테스트가 들어오는 곳입니다.
소프트웨어가 다른 소프트웨어를 테스트할 수 있습니까?
예. 이것이 자동화 테스트의 요점입니다. 회귀 테스트에 관해서,수동 노력을 투자하는 것은 쓸데없고 낭비입니다. 인간이 동일한 속도,정확성 및 에너지로 동일한 단계를 반복 할 것으로 기대하는 대신 기계가 동일한 작업을 수행하도록 프로그래밍하는 것이 훨씬 더 논리적입니다.
어떤 테스트를 자동화해야합니까?
테스트 자동화 전략을 만들기 전에 자동화에 가장 적합한 테스트를 살펴보겠습니다:
- 회귀 테스트:회귀 스위트는 계속 증가하고 있으며 새로운 기능이 이전 기능을 변경하지 않도록 동일한 변수를 여러 번 채워야합니다. 이것은 쉽게 자동화 될 수 있습니다.
- 복잡한 기능 테스트:인간의 오류가 발생하기 쉬운 복잡한 계산이 필요한 모든 테스트를 자동화합니다.
- 연기 테스트: 자동 스위트를 실행하여 주요 기능의 품질을 확인합니다. 따라서 빌드에 보다 심층적인 테스트가 필요한지 여부를 신속하게 분석하여 시간을 절약할 수 있습니다.
- 데이터 기반 테스트:테스트를 자동화하여 수많은 데이터 세트로 반복적으로 테스트해야 하는 기능을 검증합니다.
- 성능 테스트:다양한 상황에서 소프트웨어 성능을 모니터링하는 테스트를 자동화합니다. 이 작업을 수동으로 수행하는 것은 매우 힘들고 시간이 많이 걸립니다.
- 기능 테스트: 개발자가 홍보를 제출할 때마다 기능 테스트를 신속하게 실행하고 즉각적인 피드백을 제공해야합니다. 이는 자동화 없이는 달성 할 수 없으며,특히 조직이 확장 될 때 달성 할 수 없습니다.
자동화 테스트 시작
수동 테스트에서 자동화 테스트로 전환할 때는 다음 사항을 염두에 두십시오:
- 100%테스트 자동화를 목표로하지 마십시오. 모든 테스트를 자동화 할 수있는 것은 아닙니다. 심지어 자동화 할 수 있습니다 테스트 중,완전한 자동화의 초기 목표를 설정하지 않습니다.
- 현실적인 목표를 설정합니다. 예를 들어,몇 가지 테스트를 자동화로 이동하여 시작하십시오. 동일한 소프트웨어의 향후 테스트에서 쉽게 재사용할 수 있는 작은 테스트 사례를 작성합니다. 더 나은 테스트 커버리지를 제공하기 위해 해당 함수로 테스트 케이스를 매핑합니다. 테스트 사례에 레이블을 지정하여 팀이 자동화할 대상을 명확하게 파악하고 보다 효과적으로 보고할 수 있도록 합니다.
- 자동화를 통해 애플리케이션의 새로운 영역을 탐색합니다. 자동화 전략을 사용할 때는 비즈니스 요구 사항을 기술적 고려 사항만큼 심각하게 고려해야 합니다.
- 자동화하지 말아야 할 것을 알고 있습니다. 이를 통해 아이디어화 프로세스 초기에 자동화 범위를 결정할 수 있습니다. 다음 테스트는 수동 적용 범위에 맡기는 것이 가장 좋습니다:
- 사용자 경험 테스트:도구는 사용자 여정 전체를 복제 할 수 없습니다. 알고리즘이 개별 사용자가 응용 프로그램과 상호 작용하는 방식을 예측하는 것은 불가능합니다. 실제로 사용자 경험의 품질을 판단하기 위해,인간의 테스터에 충실. 브라우저 스택 라이브와 같은 수동 대화 형 테스트 도구를 사용해보십시오.
- 접근성 테스트: 응용 프로그램이 얼마나 액세스 할 수 있는지 테스트 할 때 인간의 사용을 대신 할 수는 없습니다. 사람들은 종종 접근 가능한 것으로 간주되는 것에 대해 다른 의견을 가지고 있기 때문에 도구는 접근성을 측정 할 수 없습니다. 이 도구는 소프트웨어 워크 플로우가 실제 인간에 대한 쉬운 액세스를 제공하는 경우 인식 할 수 없습니다.
- 올바른 도구 선택자동화 테스트는 전적으로 도구에 달려 있습니다. 올바른 도구를 선택할 때 고려해야 할 사항은 다음과 같습니다:
- 소프트웨어의 특성:응용 프로그램이 웹 기반 또는 모바일 기반으로 테스트되고 있습니까?
전자를 테스트하려면 셀레늄과 같은 도구를 사용하여 테스트를 자동화하십시오. 후자의 경우,아피 움은 자동화를위한 최상의 도구 중 하나입니다. - 프로그래머 경험:테스터의 편안함과 경험에 맞는 프레임 워크,언어 및 도구를 선택하십시오. 자동화 테스트에 사용되는 가장 인기있는 언어 중 일부는 자바를 포함,자바 스크립트,루비,기음#,기타.
- 오픈 소스 여부:예산 제약에 따라 자동화 목적으로 셀레늄 또는 아피 움과 같은 오픈 소스 도구를 사용하도록 선택할 수 있습니다. 그러나 모든 오픈 소스 도구는 상업적으로 사용 가능한 도구보다 열등하지 않다는 것을 기억하는 것이 중요합니다. 예를 들어,셀레늄 웹 드라이버는 가장 높은 세계의 자동화 된 테스터에 의해 선호되는 오픈 소스 도구입니다.
- 올바른 테스트 그리드 선택
테스트 그리드는 모든 자동화된 테스트가 실행될 인프라를 참조합니다. 이 소프트웨어는 테스트 할 장치,브라우저 및 운영 체제(여러 버전)의 시리즈를 포함한다. 실제 장치 및 브라우저에서 테스트를 자동화하는 것이 항상 가장 좋습니다. 이 소프트웨어는 실제 사용자 조건에서 테스트되고 있는지 확인합니다.
또한 이상적인 테스트 그리드는 병렬 테스트를 가능하게해야합니다. 즉,테스터는 여러 장치에서 여러 테스트를 동시에 실행할 수 있어야합니다. 이를 통해 테스트 시간을 줄이고 결과를 신속하게 처리하며 더 짧은 기한 내에 결과를 제공합니다.
테스트 그리드가 온프레미스 또는 클라우드에서 호스팅되어야 하는지 여부를 결정해야 합니다. 온프레미스 인프라는 거의 항상 설정 및 유지 관리 비용이 많이 든다는 점에 유의하십시오. 새로운 장치,브라우저 및 운영 체제를 추적하고 그에 따라 업데이트 및 유지 관리해야합니다. 매월 여러 버전이 출시되기 때문에 이는 어려운 과제입니다.
반대로 클라우드 기반 그리드에서 테스트하는 것은 그리드를 제공하는 조직에서 업데이트 및 유지 관리를 처리하므로 더 쉽습니다. 예를 들어,브라우저 스택은 테스트를 위해 2000 개 이상의 실제 장치 및 브라우저에 연결된 클라우드 셀레늄 그리드를 제공합니다. 사용자는 단순히 가입하고 최상의 결과를 위해 지속적으로 업데이트되는 강력한 셀레늄 그리드에서 테스트를 시작해야합니다.
브라우저스택의 실제 디바이스 클라우드는 2000 개 이상의 실제 브라우저와 디바이스를 제공하여 즉각적인 온디맨드 테스트를 수행할 수 있습니다. 클라우드는 또한 지라,젠킨스,팀시티,트래비스 씨티 등과 같은 인기있는 씨디/씨디 툴과의 통합을 제공합니다. 또한 테스터가 버그를 식별하고 즉시 해결할 수 있는 내장 디버깅 도구가 있습니다. 브라우저 스택은 또한 인스턴트,번거 로움없이 병렬화와 30+브라우저 버전에 사이프러스 테스트를 용이하게한다.
무료로 자동화 테스트 시도
테스트 자동화 예
소프트웨어를 수동으로 테스트할 때 테스터는 마운트와 키보드를 사용하여 소프트웨어와 상호 작용합니다. 자동화 스크립트 및 도구는 이러한 상호 작용을 단계별로 복제합니다.
이 예에서 계산기는 두 개의 숫자를 추가하고 결과를 표시 할 수 있는지 테스트 중입니다. 수동으로 수행하는 단계는 다음과 같습니다.
1 단계:계산기 실행
2 단계:2
3 단계:+
4 단계:3
5 단계:=
6 단계:화면이 5
7 단계: 닫기 계산기
자동화 도구는 다음 스크립트와 동일한 단계를 수행 할 수 있습니다:
//the example is written in MS Coded UI using c# language.public void TestCalculator(){//launch the applicationvar app = ApplicationUnderTest.Launch("C:\Windows\System32\calc.exe");//do all the operationsMouse.Click(button2);Mouse.Click(buttonAdd);Mouse.Click(button3);Mouse.Click(buttonEqual); //evaluate the resultsAssert.AreEqual("5", txtResult.DisplayText,"Calculator is not showing 5");//close the applicationapp.Close();}
위의 스크립트를 실행할 때 정확히 동일한 결과(5)가 표시됩니다. 대신 수동 단계를 통해 갈 필요없이,단순히 스크립트를 작성하고 도구가 나머지를 처리 할 수 있습니다.
수동에서 자동화 테스트로 이동하는 방법
우선:두 가지 질문을하십시오.
- 자동화해야 할 사항
- 자동화하는 방법?
자동화하려면?
- 빈번한 릴리스 주기에 필요한 테스트를 자동화합니다. 여기에는 연기 테스트,회귀 테스트 등이 포함될 수 있습니다. 기본적으로 전체 테스트 주기 속도를 높이는 테스트를 자동화합니다. 낮은 수동 개입은 더 빠른 결과와 같습니다.
- 기술 및 비즈니스 우선 순위에 따라 테스트를 자동화합니다. 이렇게 생각하십시오:이 테스트의 자동화가 비즈니스에 도움이 될까요? 이 테스트를 자동화하면 기술적 복잡성을 단순화하는 데 도움이됩니까? 응답이 어느 것이든 질문에 그렇습니다 인 경우에,자동화하십시오.
- 유용성을 기반으로 자동화. 크로스 브라우저 호환성 테스트와 같은 일부 테스트는 수동으로 수행 할 때 더 잘 작동합니다. 또한 도구 종속성은 특정 테스트 팀 또는 조직의 자동화 가능성을 제한할 수 있습니다.
더 읽기:10 테스트 자동화 모범 사례 수행
자동화하는 방법?
우선 모든 테스트를 자동화 할 수있는 것은 아닙니다. 이전 섹션의 세 가지 전략을 준수함으로써 실용적인 방식으로 자동화 된 테스트를 시작하는 것이 더 쉬워집니다.
- 작게 시작하십시오. 100%자동화는 목표가 아니며 또한 불가능합니다. 유지 관리 및 재사용이 더 쉽기 때문에 더 작은 테스트 사례를 작성하십시오. 소수의 테스트를 자동화 플랫폼으로 이동하고,테스트를 실행하고,결과를 분석하고,프로세스가 소프트웨어 개발 프로세스에 도움이 되는지 결정합니다.
- 작업에서 상당한 이점이 발생하면 더 많은 테스트를 자동화로 이동하십시오. 볼륨 뿐만 아니라 테스트를 이동 시작 하지만 또한 자동화 되는 테스트의 유형을 증가. 이것은 여전히 실험 단계임을 기억하십시오. 특정 테스트가 자동화에서 비효율적임을 입증하고 수동 테스트로 다시 이동해야 할 수 있습니다.
- 더 나은 테스트 커버리지를 얻기 위해 각 방법 또는 함수와 함께 테스트 케이스를 매핑합니다. 쉽게 식별할 수 있도록 테스트 사례에 레이블을 지정하여 팀에서 자동화할 테스트를 빠르게 알 수 있습니다. 이것은 또한 더 나은 보고를 구현하는 데 도움이됩니다.
- 자동화 테스트를 시작할 때 응용 프로그램의 새로운 영역을 수동으로 탐색하여 시작하십시오. 그런 다음 비즈니스 및 기술 우선 순위에 따라 자동화해야 할 사항을 자세히 설명하는 위험 계획을 작성하십시오.
- 분석을 사용하여 최종 사용자 기본 설정을 결정합니다. 사용자가 소프트웨어에 액세스할 가능성이 가장 높은 브라우저 및 장치 목록을 만듭니다. 이를 통해 자동화 테스트가 올바른 인터페이스를 커버하고 올바른 사용자 환경에서 소프트웨어 성능을 최적화할 수 있습니다.
실제 장치 클라우드에서 자동 테스트 시도
테스트 자동화 유지 관리
일단 제작되면 자동화 테스트 스위트를 유지 관리해야 합니다. 소프트웨어가 발전하고 코드베이스가 확장됨에 따라 자동화 스크립트는 새로운 기능과 기능을 통합하기 위해 수정 및 업데이트되어야합니다. 사용자 인터페이스의 아주 작은 변경도 테스트를 방해하고 실패할 수 있습니다. 테스트 케이스를 설계 할 때 자동화 테스터는 유지 보수 노력과 비용을 고려해야합니다.
테스트 자동화 유지 보수 접근 방식은 두 가지 주요 관점에서 작동합니다:
- 테스트 실패:실패한 테스트를 디버깅 할 때 가능한 유지 관리 문제를 찾습니다. 테스트 스크립트가 적절하게 업데이트되지 않았습니까? 소프트웨어 코드의 변경이 테스트 스크립트를 방해 했습니까? 이는 유지 보수 노력이 필요한 영역을 쉽게 식별 할 수있는 방법입니다.
- 종속성 또는 도구의 변경: 팀 또는 조직이 아피스,보고 도구,데이터베이스 등을 변경 했습니까?? 이 경우 새 도구 집합에 맞게 테스트를 변경하거나 업데이트해야 할 수 있습니다. 이를 위해 개발자와 테스터는 분명히 새로운 인프라에 대한 교육을 받아야 향후 유지 관리 노력을 유지할 수 있습니다.
효과적인 테스트 자동화 전략의 핵심 요소는 무엇입니까?
자동화 테스트는 모든 테스트 생태계의 필수적인 부분입니다. 자동화 설정으로 이동하지 않고,포괄적 인 테스트는 끊임없이 단축 기한의 회의처럼,어려워진다. 따라서 수동 테스트의 균형을 맞추고 보완하는 방식으로 가능한 한 빨리 자동화 테스트 프로토콜을 시작하는 것이 중요합니다.
위에서 설명한 단계를 시도하고 어떤 접근 방식이 최적의 결과를 산출하는지 충분히 실험하십시오. 인간의 검증을 손상시키지 않고 효과적인 자동화를 할 수있는 달콤한 자리를 찾기 전에 몇 번 실패 걱정하지 마십시오.