MeterSphere 기술 공유: UI 자동화 테스트의 필요성과 솔루션

UI 자동화 테스트 시스템 구축의 가치는 테스터가 다양한 수준에서 테스트를 작성하고 실행하도록 권장하는 테스트 피라미드 모델을 따릅니다. UI 테스트에는 테스트 스크립트 작성 및 설계, 완전한 애플리케이션 실행, 애플리케이션과의 사용자 상호 작용 시뮬레이션이 필요하므로 UI ​​테스트의 테스트 속도는 상대적으로 느립니다. 그러나 UI 테스트는 비즈니스 범위가 넓으며 실제 시나리오에서 사용자 동작을 시뮬레이션하고 UI 구성 요소의 기능과 안정성을 자세히 측정함으로써 수동 테스트에서 직면하는 수많은 반복 테스트 문제를 효과적으로 제거할 수 있습니다.

2022년 4월 MeterSphere 오픈소스 프로젝트팀이 실시한 UI 자동화 테스트 커뮤니티 설문조사에 따르면 219개의 설문조사 양식 중 82.19%의 응답자가 자신의 팀이 웹 측 UI 자동화 테스트 시스템을 구축하고 있다고 답했습니다.

▲그림 1 테스트 피라미드 모델

  테스트 피라미드의 맨 아래 계층은 단위 테스트입니다. 단위 테스트는 코드의 작은 논리 조각을 테스트하는 것으로, 이러한 작은 논리 조각은 클래스의 함수, 클래스 또는 메서드일 수 있습니다. 단위 테스트를 작성함으로써 개발자는 다른 구성 요소, 서비스 또는 UI에 의존하지 않고 테스트 중인 코드를 직접 호출하여 출력이 예상대로인지 평가할 수 있습니다.

  테스트 피라미드의 중간 계층은 인터페이스 테스트 또는 통합 테스트입니다. 인터페이스 테스트는 주로 API(응용 프로그램 인터페이스)를 테스트하며, 서로 다른 모듈 간의 인터페이스가 유효한지, 전송된 정보가 올바른지, 인터페이스 표준을 충족하는지 등에 중점을 둡니다. 통합 테스트의 주요 목표는 다음과 같습니다. 전체 시스템이 함께 작동할 수 있습니다.

  테스트 피라미드의 최상위 수준은 UI 테스트입니다. UI 테스트는 가장 직관적인 관점에서 수행되며 수동 실행 외에 전적으로 자동화에 의존할 수도 있습니다. UI 테스트를 통해 각 사용자와 애플리케이션의 상호 작용(예: 버튼 클릭, 정보 입력, 양식 작성 등)을 시뮬레이션하고 애플리케이션을 실행하여 예상 결과를 충족하는지 확인할 수 있습니다.

이 세 가지 테스트 유형의 범위가 다르다는 것을 알 수 있습니다. 단위 테스트는 주로 가장 기본적인 수준에서 논리 오류를 찾는 데 사용됩니다. 단위 테스트는 더 빠르고 런타임 중에 더 적은 리소스를 필요로 합니다. 인터페이스 테스트 또는 통합 테스트는 주로 서로 다른 구성 요소 간의 상호 작용에 중점을 두고 애플리케이션 서비스와 데이터베이스 간의 인터페이스가 잘 작동할 수 있는지 여부를 확인합니다. 상호 작용; UI 테스트는 전체 여부에 중점을 둡니다. 응용 프로그램을 시작할 수 있습니다. UI 테스트는 가장 포괄적인 테스트 유형이므로 실행 시 가장 많은 컴퓨팅 리소스와 시간을 소비하는 경향이 있습니다.

1. UI 자동화 테스트의 필요성

UI 자동화 테스트는 소프트웨어 테스팅 분야에서 점점 더 중요해지고 있으며, 그 필요성은 테스트 효율성 향상, 비용 절감, 테스트의 정확성과 일관성 보장에 반영되며, 소프트웨어 품질 및 개발 효율성 향상에 중요한 역할을 합니다.

1. 수동 반복 교체

기존의 수동 테스트에서는 테스트 엔지니어가 반복적인 작업을 수행하는 데 많은 시간을 소비해야 하므로 이는 비효율적일 뿐만 아니라 오류가 발생하기 쉽습니다. UI 자동화 도구를 사용함으로써 테스트 엔지니어는 반복적인 테스트 작업을 프로그램에 넘겨줌으로써 시간과 에너지를 절약하고 포괄적인 테스트 사례를 설계하고 새로운 기능을 테스트하는 데 더 많은 시간을 할애할 수 있습니다.

2. 회귀 효율성 향상

회귀 테스트는 수정 사항이 기존 기능에 부정적인 영향을 미치지 않는지 확인하기 위해 소프트웨어 코드를 변경한 후에 수행되는 테스트입니다. 회귀 테스트는 자주 실행해야 하기 때문에 수동으로 회귀 테스트를 실행하면 많은 시간과 인적 자원이 낭비됩니다. UI 자동화는 회귀 테스트를 효율적으로 수행하여 인건비를 크게 줄이면서 테스트의 정확성과 포괄성을 보장할 수 있습니다.

3. 근무 외 시간에 테스트

기존 수동 테스트에서는 테스트 엔지니어가 근무 시간에만 테스트 작업을 수행할 수 있습니다. UI 자동화 테스트 도구를 사용하여 테스트 엔지니어는 근무 외 시간에 테스트 작업 실행을 조정함으로써 시간 리소스를 더 잘 활용하고 실패한 사용 사례를 분석하고 문제를 해결하는 데 더 많은 작업 시간을 할애하고 테스트 품질을 향상시킬 수 있습니다.

4. 운영 일관성과 추적 가능한 결과를 보장합니다.

수동 테스트에서는 인적 요소로 인해 작동 단계를 생략하거나 무시하기 쉽고 부정확한 테스트 결과가 발생합니다. UI 자동화 테스트 도구를 사용하면 각 테스트에 대해 실행되는 단계와 검증이 일관되고 반복 가능하도록 보장하여 인적 오류 발생을 방지할 수 있습니다.

2. UI 자동화 테스트에 개입해야 하는 경우

사람들은 어떤 종류의 프로젝트가 UI 자동화 테스트에 적합한지 자주 묻습니다. UI 자동화 테스트는 프로그램을 통해 페이지에서 수동 테스트 및 운영 제어를 시뮬레이션하는 것과 같습니다. 실제 테스트 과정에서 컨트롤을 찾을 수 없거나 컨트롤 정의 변경으로 인해 유지 관리 비용이 발생하는 등의 문제가 자주 발생합니다. UI 자동화 테스트 개입에 적합한 몇 가지 시간 노드 또는 시나리오를 요약했습니다.

1. 제품이 상대적으로 안정적이고 빈번한 수요 변화가 없습니다.

2. 빈번한 회귀검증이 필요한 핵심사업 및 핵심 인터페이스

3. 안정적인 비즈니스 프로세스를 선택하십시오.탐색 기간에 있고 자주 변경해야 하는 비즈니스 모듈을 선택하는 것은 권장되지 않습니다.

4. 유지 관리 주기가 긴 프로젝트에 적합하며 단기 프로젝트에는 적합하지 않습니다.

5. 코드 작성으로 구현된 자동화된 테스트 도구를 사용하는 경우 대부분의 테스트 팀원은 스크립트 개발 능력을 갖추고 있어야 합니다.

3. UI 자동화 테스트가 직면한 두 가지 핵심 문제

UI 자동화 테스트에서 테스트 팀은 일반적으로 UI 자동화의 유지 관리 비용과 학습 비용이라는 두 가지 핵심 문제에 직면합니다.

 유지관리 비용

UI 자동화 테스트는 인터페이스 요소의 위치 및 작동에 의존하며 인터페이스 변경에 민감합니다. 인터페이스 디자인이 변경되면 테스트 스크립트가 유효하지 않을 수 있습니다. 따라서 테스트 스크립트를 적시에 업데이트해야 하므로 UI ​​자동화 테스트의 유지 관리 비용이 증가합니다.

 학습 비용

UI 자동화 테스트에는 특정 테스트 프레임워크 및 도구의 사용이 필요합니다. 많은 도구의 학습 곡선은 상대적으로 가파르며, 해당 프로그래밍 언어 및 도구의 사용은 물론 테스트 설계 기술을 숙달해야 학습이 향상됩니다. 테스터 비용.

4. UI 자동화 테스트의 효율성을 높이는 방법은 무엇입니까?

UI 자동화 테스트는 수동 조작 인터페이스를 시뮬레이션해야 하므로 작업을 완료하는 데 상대적으로 오랜 시간이 걸립니다. 특히 테스트 케이스 수가 많으면 UI 자동화 테스트 실행 시간이 길어집니다. UI 자동화 테스트의 원칙에 따르면 인터페이스 자동화만큼 빠르게 실행할 수는 없다고 판단하기 때문입니다. UI 자동화 테스트의 효율성을 향상시키는 주요 방법은 다음과 같습니다.

1. 사용 사례 선택 전략 개선

핵심 비즈니스 및 안정적인 비즈니스의 사용 사례의 경우 이러한 사용 사례가 먼저 실행되도록 명확한 우선순위를 먼저 정의할 수 있습니다. 발견되지 않은 사용 사례의 경우 비즈니스 중요성과 위험 우선순위를 기준으로 선택하고 점차적으로 테스트 범위를 확장할 수 있습니다.

2. 사용 사례 작성 단순화

반복되는 테스트 단계를 추상화하고 변수 및 루프 구조를 사용하여 구현하여 각기 다른 테스트 데이터에 대해 독립적인 테스트 프로세스를 작성하지 않도록 합니다. 테스트 프로세스 제어 기능을 사용하여 조건부 판단을 통해 실행 분기를 제어하여 테스트 프로세스 중 불필요한 프로세스를 방지하고 중복 작업을 줄입니다.

3. 어설션 설정 줄이기

Assertion의 사용방법은 최대한 간결하고 효율적이어야 하며, 초기 Use Case 설계 시 Assertion의 필요성을 고려하여 불필요한 Assertion 설정을 줄이고, 애플리케이션과의 통신 빈도를 줄여 실행 속도를 높인다.

4. 테스트 단계의 스크린샷을 줄입니다.

동일한 콘텐츠의 스크린샷을 반복해서 찍지 않도록 필요한 단계에서만 스크린샷을 찍으세요. 대용량 이미지 파일의 차단을 줄이고 리소스 사용량을 줄입니다.

5. 합리적인 시험 대기 시간 설정

테스트 환경의 특성을 분석하고 안정성과 응답속도를 바탕으로 대기시간을 설정합니다. 과도한 대기 시간을 피하기 위해 작업을 수행하기 전에 지능형 대기 메커니즘을 사용하여 UI 요소가 로드될 때까지 기다립니다.

6. 멀티스레딩 활성화

테스트 케이스의 종속성을 분석하고 동시에 서로 다른 스레드에서 독립적인 테스트 케이스를 실행합니다. 병렬 실행을 통해 시스템 리소스를 효과적으로 활용하고 전체 속도를 높입니다.

7. 서버 구성 개선

UI 자동화 테스트에 사용할 수 있는 리소스가 충분하도록 서버의 처리 능력과 메모리 용량을 늘립니다. 로드 밸런싱 기술을 사용하여 요청을 여러 서버에 분산시켜 전반적인 실행 속도와 성능을 향상시킵니다.

5. MeterSphere 자연어 UI 자동화 테스트

MeterSphere 오픈 소스 연속 테스트 플랫폼은 테스트 추적, 인터페이스 테스트, 성능 테스트 및 UI 테스트와 같은 기능 모듈을 다룹니다. MeterSphere의 UI 테스트 모듈은 Selenium 브라우저 자동화 솔루션을 기반으로 구축되었으며 재사용 가능성이 높은 테스트 스크립트가 내장되어 있습니다. 테스트 팀은 복잡한 코드 작성 없이 로우 코드 자동화 테스트를 수행할 수 있습니다.

1. 자연어로 작성, 유지관리 비용이 적고, 학습 비용이 저렴함

① 낮은 유지비용

어떤 테스트 도구에 관계없이 유지 관리 비용은 0이 될 수 없습니다. 제품이 ToB인지 ToC인지에 관계없이 고객과 상호 작용해야 합니다. 따라서 제품 출시, 인터페이스 업데이트, 특정 휴일의 운영 활동 등으로 인해 제품이 변경될 수 있습니다. 따라서 일정한 유지관리 비용은 불가피하지만, 적절한 테스트 도구를 선택하고 좋은 테스트 습관을 기르면 UI 자동화 테스트의 유지관리 비용을 효과적으로 줄일 수 있습니다.

MeterSphere 오픈 소스 연속 테스트 플랫폼의 UI 테스트 모듈은 요소, 지침 및 시나리오의 자유로운 조합과 무료 참조를 지원합니다. 요소는 가장 기본적인 구성 요소이고 지침은 일반적인 테스트 단계의 모음을 나타내며 시나리오는 일반적으로 완전한 비즈니스 프로세스입니다. MeterSphere 플랫폼에서 요소는 지침과 장면에서 참조될 수 있으며 지침과 장면도 서로 참조할 수 있습니다. 제품 인터페이스가 변경되면 그에 따라 인터페이스 요소도 변경되는데, 이때 요소를 업데이트하면 해당 요소를 참조하는 지시사항과 장면이 자동으로 요소 정보를 업데이트하므로 과도한 유지관리 비용과 업무량을 줄일 수 있다. 요소를 유지하는 것입니다. 마찬가지로 비즈니스 프로세스가 변경되고 기존 지침이나 시나리오가 추가, 삭제, 수정 또는 편집되면 모든 참조 관계가 동시에 업데이트되며 유연한 참조 설계를 통해 후속 테스트의 유지 관리 비용이 크게 절감됩니다.

그림 2는 MeterSphere 페이지 개체 모드를 기반으로 작성된 "급한 구매" UI 자동화 시나리오 테스트 모델입니다.

▲그림 2 MeterSphere 기반 '급매' UI 자동화 시나리오 테스트 모델

② 낮은 학습 비용

시장에는 브라우저 인터페이스, 모바일 애플리케이션, 데스크톱 애플리케이션 등을 기반으로 하는 자동화된 테스트 프레임워크가 많이 있습니다. 선택할 때 먼저 풍부한 프로젝트에서 테스트된 인기 있는 자동화 테스트 프레임워크를 선택해야 하며, 두 번째로 Java 또는 Python과 같은 주류 개발 언어로 작성된 테스트 프레임워크를 선택해야 합니다. 다용도성이 높을 뿐만 아니라 향후에도 사용될 예정이므로 사용 중 문제가 발생할 경우 관련 솔루션을 찾는 것이 더 쉽습니다.

MeterSphere 오픈 소스 연속 테스트 플랫폼의 UI 테스트 모듈은 Selenium 오픈 소스 프레임워크와 완벽하게 호환됩니다. UI 테스트 스크립트는 자연어 프로그래밍을 사용하여 구현되었으며, 작업 지침은 시각적 컨트롤 형태로 캡슐화되어 있으며, 테스터는 코드 작성 없이 인터페이스 기반의 클릭, 드래그 앤 드롭 작업을 통해 테스트 스크립트를 완료할 수 있습니다.

■ 기존 코딩 구현

▲그림 3 전통적인 코딩 구현

■MeterSphere 자연어 오케스트레이션 구현

▲그림 4 MeterSphere 자연어 오케스트레이션 구현

2. 코드 구현에 비해 자연어 UI 자동화 테스트의 장점

기존 코딩으로 구현된 UI 자동화 테스트와 비교하여 자연어로 작성된 UI 자동화 테스트의 장점은 다음과 같습니다.

■ 효율성 향상

자연어 UI 자동화를 통해 신속하게 테스트 케이스를 생성하고, 손으로 작성한 코드의 시간과 오류율을 줄이고, 테스트 효율성을 높일 수 있습니다.

■ 하한치

프로그래밍 언어에 익숙하지 않은 테스터의 경우 자연어로 작성하는 것이 시작하기가 더 쉽고 학습 및 사용의 문턱이 낮아집니다.

■ 보다 직관적인 조작

인터페이스 기반 오케스트레이션을 통해 테스터는 테스트 케이스의 운영 프로세스를 보다 직관적으로 이해할 수 있어 오류를 보다 쉽게 ​​찾고 수정할 수 있습니다.

■ 유지 관리가 더 쉬워졌습니다.

시각적 인터페이스 레이아웃 디자인은 테스터가 테스트 케이스를 쉽게 유지 관리하고 업데이트하는 데 도움이 됩니다. 애플리케이션 및 요구 사항의 변경 사항에 신속하게 대응하기 위해 공통 테스트 요소를 수정하여 테스트 사례를 동기식으로 업데이트합니다.

반면, 코드를 사용하는 방법은 테스터가 프로그래밍 언어와 프레임워크에 대한 지식을 숙지해야 하며 코드를 작성할 때 모든 세부 사항을 신중하게 고려해야 하며 실수하기가 상대적으로 쉽습니다. 동시에 코드가 구현되는 방식은 상대적으로 유지 관리 및 수정이 어렵고 코드의 논리와 구조에 대한 더 깊은 이해가 필요합니다. 따라서 UI 자동화 테스트 측면에서는 자연어 오케스트레이션을 사용하는 것이 더 효율적이고 직관적인 방법입니다.

레이쥔: 샤오미의 새 운영 체제인 ThePaper OS의 공식 버전이 패키징되었습니다. Gome App의 추첨 페이지에 팝업 창이 창시자를 모욕합니다. Ubuntu 23.10이 공식적으로 출시되었습니다. 금요일을 활용하여 업그레이드하는 것이 좋습니다! Ubuntu 23.10 릴리스 에피소드: 증오심 표현이 포함되어 있어 ISO 이미지가 긴급하게 "리콜"되었습니다. 23세 박사 과정 학생이 22세 Firefox에서 "유령 버그"를 수정했습니다. RustDesk 원격 데스크톱 1.2.3이 출시되었습니다. TiDB 7.4를 지원하기 위해 향상된 Wayland 릴리스 : MySQL 8.0과 공식 호환됩니다. Logitech USB 수신기를 분리한 후 Linux 커널이 충돌했습니다. 마스터는 Scratch를 사용하여 RISC-V 시뮬레이터를 문지르고 Linux 커널을 성공적으로 실행했습니다. JetBrains는 도구인 Writerside를 출시했습니다. 기술 문서를 작성하기 위한 것입니다.
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4736111/blog/10116739