웹앱을 테스트하는 방법
소프트웨어 업계에서는 모든 사람이 어떤 방식으로 응용 프로그램을 테스트합니다. 많은 개발자 팀은 지속적인 통합 파이프라인과 잘 통합된 정교한 테스트 체계를 가지고 있지만 자동 테스트를 수행하지 않은 사람들도 코드가 의도한 대로 수행되는지 확인하는 방법을 마련해야 합니다.
웹 사이트를 구축하고 브라우저의 도움으로 수동으로 클릭하는 것은 다양한 테스트입니다. 그것은 가장 정교한 것은 아니지만 여전히 중요합니다. 콘솔에서 컬을 발생시키고 방금 만든 엔드포인트로 합성 요청을 보내는 경우에도 마찬가지입니다.
이 게시물은 다른 테스트 유형 및 방법론에 뛰어 들기 전에 이미 수행 한 수동 테스트를 자동화하는 방법에 대해 설명합니다.
테스트 자동화
수동 테스트는 작은 앱에 충분하지만 이러한 앱이 커지면 테스트 가능한 표면이 커져 두 가지 문제가 발생합니다.
첫째,새 버전의 앱이 끝날 때마다 테스트를 수행해야 할 때 불일치가 발생할 수 있습니다. 이것은 많은 테스트가 있는 경우에 특히 그렇습니다. 둘째,테스트를 수행하는 사람은 다른 작업을 수행 할 수 없습니다. 큰 앱을 사용하면 테스트에 며칠이 걸릴 수 있습니다.
이 두 가지 문제를 해결하는 가장 논리적 인 방법은 이러한 수동 작업을 자동화하는 것입니다. 웹앱에는 두 가지 주요 테스트 유형이 있습니다. 두 가지 도구를 자동화 할 수 있습니다.
사용자 인터페이스 테스트
사용자 인터페이스 테스트는 퍼펫티어라는 도구로 수행할 수 있습니다. 퍼펫티어를 사용하면 자바스크립트를 사용하여 수동 사용자 인터페이스 테스트를 자동화할 수 있습니다. 다음 명령을 통해 설치됩니다:
$ npm i puppeteer
그런 다음 테스트를 실행하기 위해 크롬의 헤드리스 버전을 제어하는 스크립트를 작성할 수 있습니다. 이 스크립트는 다음과 같습니다:
(async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://google.com', {waitUntil: 'networkidle2'}); const heading = await page.$('h1'); await browser.close(); if(!heading) console.log('No heading found!');})();
이 스크립트에서,우리는 크롬의 헤드리스 인스턴스를 시작,로 이동 example.com,그리고 1 요소를 찾고 있습니다. 존재하지 않으면 오류 메시지가 기록됩니다.이 테스트에는 다음과 같은 기능이 포함되어 있습니다. 우편 배달부는 저장 될 수 있습니다
시작하려면 우편 배달부 사용자 인터페이스를 다운로드하여 설치하십시오. 요청을 만들고 저장하려면 다음 단계가 필요합니다:
- 왼쪽에 컬렉션 만들기를 클릭합니다
- 컬렉션 이름으로 내 컬렉션을 입력합니다
- 만들기를 클릭합니다
- 왼쪽에 있는 내 컬렉션의 줄임표(…)를 클릭합니다
- 요청 추가 선택
- 요청 이름으로 내 요청을 입력합니다
- 내 컬렉션에 저장을 클릭합니다
-
새로 만든 컬렉션 아래의 왼쪽 사이드바에 요청이 표시됩니다.
당신이 그것을 선택하면 입력해야합니다 example.com 테스트를 추가 할 수 있습니다. 테스트를 추가하려면 입력 필드 아래의 탭 표시줄에서 테스트를 클릭합니다.
자바스크립트로 테스트를 작성할 수 있는 텍스트 영역이 나타납니다. 다음은 테스트의 예입니다:
pm.test("Status code is 200", () => { pm.response.to.have.status(200);});
화면 오른쪽 상단에 있는 저장을 클릭하고 바로 뒤에 보내면 요청이 전송됩니다. 그러면 테스트 스크립트가 실행되어 응답에 상태 200 이 있는지 여부를 확인합니다.
테스트 유형
세 가지 유형의 테스트가 있습니다. 이를 이해하면 소프트웨어 스택의 다양한 부분에 적합한 테스트 유형을 선택할 수 있습니다.
단위 테스트
단위 테스트는 가장 간단한 테스트 유형입니다. 그들은 당신의 코드의 작은 부분의 정확성을 확인합니다. 단위 테스트는 일반적으로 함수에 대한 한 번의 호출 또는 클래스를 사용하는 한 가지 방법을 다룹니다.
단위 테스트는 일반적으로 코드의 첫 번째”사용자”입니다. 일부 테스트 방법론에서는 실제 응용 프로그램 코드를 구현하기 전에 테스트를 작성해야 합니다.
단위 테스트는 백엔드 및 프론트 엔드 개발 모두에서 사용할 수 있습니다. 일부 개발 팀은 단위 테스트를 사용하여 폼이나 메뉴와 같은 코드의 작은 부분의 렌더링 된 돔 출력을 확인합니다. 백엔드에서는 단위 테스트를 사용하여 데이터베이스 간의 코드를 테스트하는 경우가 많습니다.
단위 테스트에 널리 사용되는 세 가지 테스트 주자는 다음과 같습니다.
농담 튜토리얼은 여기에서 찾을 수 있습니다.
‐에바—에바는 고도의 병렬 테스트 실행을 전문으로하기 때문에 백엔드 개발에 선호된다. 에바 튜토리얼은 여기에서 찾을 수 있습니다.이 문서는 기계 번역되었으므로 어휘,구문 또는 문법에서 오류가 있을 수 있습니다 튜토리얼은 여기에서 찾을 수 있습니다.
단위 테스트에 네트워크 연결 또는 데이터베이스와 같은 일부 외부 리소스가 필요한 경우 통합 테스트를 작성하는 것일 수 있습니다. 이 유형의 테스트는 다음에 적용됩니다.
통합 테스트
구현 관점에서 통합 테스트는 단위 테스트처럼 보입니다. 차이점은 통합 테스트가 스택의 여러 부분을 함께 테스트한다는 것입니다. 예를 들어 클라이언트와 서버가 동일한 프로토콜을 사용하는지 또는 마이크로 서비스 아키텍처에서 서비스가 함께 올바르게 작동하는지 여부를 테스트할 수 있습니다.
일반적으로 여러 개의 독립 단위 테스트로 끝나는 검사를 하나의 통합 테스트로 집계하여 모든 것이 잘 작동하는지 확인할 수 있습니다.
통합 테스트는 프론트 엔드 및 백엔드 개발에 모두 사용됩니다. 때로는 두 부분이 올바르게 상호 작용하는지 확인하는 데 사용되지만 한 부분의 서로 다른 모듈이 의도 한대로 함께 작동하는지 확인하는 데 사용할 수도 있습니다.
단위 테스트에 사용한 것과 동일한 테스트 러너를 통합 테스트에 사용할 수 있습니다. 이 도구는 다음과 같은 기능을 제공합니다.***********
뉴먼은 내 보낸 우편 배달부 컬렉션을 실행할 수 있습니다. 뉴먼 튜토리얼은 여기에서 찾을 수 있습니다.통합 테스트에서 사용자 인터페이스와의 상호 작용이 필요한 경우 이를 다음 사용자 인터페이스 테스트 주소 지정이라고 합니다.이 테스트 중 가장 복잡한 테스트입니다. 테스터가 앱의 모든 부분을 수동으로 클릭할 필요가 없도록 자동화된 방식으로 사용자 행동을 모방하려고 합니다.
사용자 인터페이스 테스트는 종종 사용자에게 오류가 발생한 특정 상호 작용을 캡처하는 데 도움이 됩니다. 이 캡처되면,이 버그를 수정하고 새로운 버전으로 돌아 오는 것을 방지하기 위해 한 번의 클릭으로 재현 할 수 있습니다.
앞서 언급한 농담과 에바 테스트 러너는 여기에서 사용할 수 있지만,일반적으로 브라우저를 통해 사용자 인터페이스의 상호 작용을 용이하게하기 위해 추가 라이브러리가 필요합니다. 이 프로세스를 위해 현재 사용 중인 두 가지 주요 라이브러리는 다음과 같습니다.
‐퍼펫티어—퍼펫티어는 백그라운드에서 프로그래밍 방식으로 사용자 인터페이스 테스트를 실행할 수 있는 크롬의 헤드리스 구현과 함께 제공되는 자바스크립트 라이브러리입니다. 인형 자습서는 여기에서 찾을 수 있습니다.
‐셀레늄-셀레늄은 웹 드라이버라는 라이브러리를 통해 브라우저의 원격 제어 할 수있는 프레임 워크입니다. 셀레늄 튜토리얼은 여기에서 찾을 수 있습니다.
여기에 나열된 것보다 더 많은 유형의 테스트가 있습니다. 예를 들어 부하 테스트에서는 성능 병목 현상을 찾으려고 합니다. 여기에 설명 된 테스트에는 때때로 다른 이름이 지정된다는 점에 유의하십시오. 위에 제시된 세 가지 유형은 시작할 때 구현해야 할 필수 유형입니다. 그 중 하나를 사용하는 것이 자동화 된 테스트를 전혀 사용하지 않는 것보다 낫습니다.
테스트 방법론
테스트 방법론은 테스트에 대해 생각하는 방법입니다. 아래에 설명 된 세 가지가 가장 일반적으로 사용되는 것입니다.
테스트할 실제 코드를 작성하기 전에 테스트를 작성하는 것이 좋습니다. 구현하는 코드의 일부만 테스트를 작성해야 하므로 작성할 테스트 유형은 단위 테스트입니다.
단위 테스트는 다소 세분화되어 있으므로 시간이 지남에 따라이 방법론을 사용하면 많은 테스트가 축적됩니다. 이 현실은 초보자가 사소한 테스트를 작성하는 경향이 있다는 사실과 결합하여 쓸모없는 테스트 더미를 만들 수 있습니다. 이를 방지하려면 팀이 일반 테스트와 일반 테스트에 익숙해지면 테스트를 업데이트하고 정리하는 것이 중요합니다.
테스트를 자주 실행하는 것이 중요합니다. 테스트를 작성,실행,실패 확인,테스트를 통과 하 게 하기에 충분 한 구현 및 프로세스를 반복 합니다.
더 읽어보기 위해 애자일 얼라이언스의 타이트 디딜 방아에 대한 설명을 확인하십시오.
비즈니스 요구 사항을 해결하기 위해 시스템의 여러 부분을 함께 사용해야 하는 경우가 많기 때문에 이 방법론에서 사용되는 테스트 유형은 대부분 통합 테스트입니다.
시험은 덜 기술적이기 때문에,또한 테스트 과정에서 비 기술적 지향 사람들을 포함하는 것이 좋습니다. 제품 소유자와 고객은 비즈니스 사례를 정의하여 개발자가 해당 사례에 대한 테스트를 작성할 수 있도록 도울 수 있습니다. 테스트를 성공적으로 실행할 수 없으면 더 많은 기능을 구현해야 합니다.
더 읽어보기 위해 애자일 얼라이언스의 타이트 디딜 방아에 대한 설명을 확인하십시오.
동작 중심의 개발(BDD)
BDD 의 혼합 TDD 및 ATDD,그리고 그 목표를 사용하는 것 두 세계의 최고를 만드는 전체 시스템 안정되어 있습니다. 사용법을 설명하는 테스트를 사용하여 시스템을 지정하려고 합니다.
그러나 이러한 사용 사례에 대해 질문해야 합니다. 물론,개발자 입력에만 의존하는 대신 고객에게 원하는 것을 묻는 것이 좋습니다. 그러나,이 두 그룹의 가정에 의문을 제기하는 것도 중요합니다.”………….””………….””………….””………….”. 응용 프로그램의 작은 부분만 테스트하고 이러한 부분이 함께 작동하는 방식만 테스트합니다. 이 방법론을 앱의 큰 부분과 작은 부분에 적용해야 합니다.
더 읽어보기 위해 애자일 얼라이언스의 비바디데이에 대한 설명을 확인하십시오.
결론
어떤 테스트는 끔찍한 없지만,수동 테스트는 더 나은,자동화 된 테스트는 최고입니다.
앱의 크기에 따라 수동 테스트를 통해 개발 팀의 구성원이 며칠 또는 몇 주 동안 다른 프로젝트에서 작업하지 못하도록 차단하여 업무 시간과 비용을 절감할 수 있습니다. 또한 동일한 상호 작용을 반복해서 수행하는 단조로운 작업은 잡히지 않은 버그에서 종종 나타나는 전표로 이어질 수 있습니다.
컴퓨터는 동일한 작업을 반복해서 반복하는 데 매우 능숙하므로 테스트를 스크립트에 위임하고 개발자의 시간을 확보하는 것이 좋습니다. 이미 작성된 테스트는 새로운 커밋이 저장소에 착륙 할 때 암시 적으로 실행될 수 있습니다.
초기에 테스트 방법론을 사용하는 것이 좋습니다. 이러한 방법론은 팀의 모든 구성원에 대해 테스트 작성을 더욱 일관성있게 만드는 프로세스를 명확히하는 데 도움이 될 수 있습니다.
Leave a Reply