> 백엔드 개발 > 파이썬 튜토리얼 > Python 자동화 테스트 도구인 Selenium을 사용하는 방법

Python 자동화 테스트 도구인 Selenium을 사용하는 방법

WBOY
풀어 주다: 2023-05-17 10:43:37
앞으로
1496명이 탐색했습니다.

    1 자동화된 테스트

    자동화된 테스트는 정상 및 비정상 조건을 포함하여 미리 설정된 조건에서 애플리케이션 또는 시스템을 실행하고 최종적으로 실행 결과를 평가하는 소프트웨어 테스트의 자동화를 의미합니다. 인간 중심의 테스트 동작을 기계 실행으로 변환하는 프로세스입니다.

    Python 자동화 테스트 도구인 Selenium을 사용하는 방법

    자동 테스트에는 UI 자동화, 인터페이스 자동화, 단위 테스트 자동화가 포함됩니다. 이 피라미드 모델에 따른 자동화된 테스트 계획은 최고의 자동화된 테스트 ROI(출력 대 입력 비율)를 생성하고 적은 투자로 좋은 이점을 얻을 수 있습니다.

    1.1 단위 테스트

    단위 테스트에 가장 큰 투자를 해야 하며, 단위 테스트를 더 자주 실행해야 합니다.

    Java의 단위 테스트 프레임워크는 Junit입니다.

    1.2 인터페이스 테스트

    인터페이스 테스트는 UI 자동화에 비해 API 자동화가 구현하기 쉽고 실행이 더 안정적입니다.

    인터페이스 자동화에는 다음과 같은 특징이 있습니다.

    • 인터페이스가 완료된 후 제품 초기 단계에 개입할 수 있습니다.

    • 유스 케이스 유지 관리량이 적습니다.

    • 작은 인터페이스를 가진 프로젝트에 적합합니다. 변경 및 빈번한 인터페이스 변경

    Common 인터페이스 자동화 테스트 도구에는 RobotFramework, JMeter, SoapUI, TestNG+HttpClient, Postman 등이 포함됩니다.

    1.3 UI 테스트

    테스트 피라미드에서는 가능한 한 API 계층을 사용하고 UI 계층의 자동화된 테스트는 사용자 요구 사항 및 소프트웨어 시스템의 실제 비즈니스에 더 가깝습니다. 때로는 UI 레이어 테스트를 수행해야 하는 경우도 있습니다.

    UI 자동화 기능:

    • 대량의 사용 사례 유지 관리

    • 페이지 관련성이 높으며 프로젝트 페이지 개발이 완료된 후 개입해야 합니다.

    • UI 테스트는 소규모 프로젝트에 적합합니다. 인터페이스 변경

    Windows 클라이언트 테스트용 AutoIT, 웹 테스트용 Selenium, TestPlant, eggPlant, Robot 프레임워크, QTP 등 UI 레이어용 테스트 프레임워크가 많이 있습니다.

    1.3.1 UI 자동화 테스트의 장점

    대규모 시스템의 변경이나 다단계 개발로 인한 회귀 테스트에 대한 인력 투자를 줄이는 것은 특히 프로그램 수정이 잦은 경우 자동화 테스트의 가장 중요한 작업일 수 있습니다. 효과는 매우 명백합니다. 자동화된 테스트의 초기 단계에서는 많은 인력 투자가 이루어지지만 유지 관리 기간에 들어가면 많은 인력을 절약할 수 있습니다. 그러나 수동 테스트의 후반에는 많은 인력이 필요합니다. 회귀 테스트에 필요

    • 반복 테스트 시간을 줄이고 신속한 회귀 테스트 달성

    • 훌륭하고 신뢰할 수 있는 테스트 프로세스를 만들고 인적 오류를 줄입니다

    • 점점 더 지루한 테스트를 실행할 수 있습니다

    • 할 수 있습니다 수동으로 수행하기 어렵거나 불가능한 테스트 수행

    • 리소스 활용도 향상

    • 테스트 스크립트의 재사용성

    1.3.2 UI 자동화 테스트에 적용할 수 있는 개체

    자동 테스트 구현을 위한 전제 조건: 수요 변화 자주 발생하지 않고, 프로젝트 주기가 충분히 길며, 자동화된 테스트 스크립트를 반복적으로 사용할 수 있습니다.

    자동화 프로젝트에 적합:

    • 제품 유형 프로젝트. 제품형 프로젝트의 경우 새 버전은 이전 버전을 개선한 것이며 프로젝트의 기능은 크게 변경되지 않았습니다. 그러나 프로젝트의 새 기능과 이전 기능에 대한 회귀 테스트를 반복해야 합니다. 자동화된 테스트의 장점은 회귀 테스트로, 새로운 결함이 발생했는지, 오래된 결함이 복구되었는지 여부를 효과적으로 확인할 수 있습니다. 자동화된 테스트 도구는 어느 정도 회귀 테스트 도구라고 부를 수 있습니다.

    • 기계적이고 빈번한 테스트. 장기 프로젝트에서는 동일한 양의 데이터를 계속해서 입력해야 합니다. 호환성 테스트 등.

    다음 프로젝트는 자동화된 테스트에 적합하지 않습니다.

    • 수요 변경이 잦고 자동화된 스크립트를 재사용할 수 없으며 유지 관리 비용이 너무 높고 비용 성능이 낮은 프로젝트

    • 프로젝트 주기가 짧습니다. , 자동화 스크립트가 컴파일된 후 사용 빈도가 낮고 비용이 저렴함

    • 상호 작용이 강한 프로젝트와 수동 개입이 필요한 프로젝트에서는 자동화를 구현할 수 없습니다

    1.4 자동화된 테스트 프로세스

    • 분석: 시스템 전체 파악 시스템 핵심 아키텍처를 논리화하고 분석합니다.

    • 디자인 테스트 케이스는 광범위하고 정확한 적용 범위를 포함하여 충분히 명확해야 합니다.

    • 구현: 스크립트를 구현하려면 두 가지 요구 사항이 있습니다. 하나는 어설션이고 다른 하나는 다음과 같습니다. 매개변수화의 합리적인 사용.

    • 실행: 스크립트를 실행하는 것은 우리가 상상했던 것만큼 간단하지 않습니다. 스크립트 실행 중 이상 현상이 발생하면 원인을 면밀히 분석해야 합니다.

    • 요약: 테스트 결과 분석 및 테스트 프로세스 요약은 자동화된 테스트의 핵심입니다.

    • 유지 관리: 자동화된 테스트 스크립트의 유지 관리는 해결하기 어렵지만 반드시 해결해야 하는 문제입니다.

    • 분석: 자동화된 사용 사례의 적용 범위 위험과 자동화된 테스트 프로세스 중 스크립트 유지 관리 비용에 대한 심층 분석.

    2 selenium

    Selenium은 웹 애플리케이션을 위한 UI 기반 자동화 테스트 프레임워크로, 다중 플랫폼, 다중 브라우저 및 다중 언어를 지원합니다.

    초기 Selenium RC는 간단히 Selenium1.0 + webdriver로 이해하면 되는 현재의 webDriver와 현재의 Selenium2.0으로 대체되었습니다. 일반적으로 Selenium 2.0을 지칭하기 위해 "Selenium"이라는 용어를 사용합니다. Selenium에는 Selenium IDE, Webdriver 및 Selenium Grid의 세 가지 구성 요소가 포함되어 있습니다.

    각 항목을 소개하겠습니다.

    Selenium IDE

    Selenium IDE는 Selenium 테스트를 위한 완전한 통합 개발 환경으로, 브라우저에서 사용자 작업을 직접 기록하고 테스트 스크립트를 재생, 편집 및 디버그할 수 있습니다. 디버깅하는 동안 실행을 단계별로 진행하거나 실행 속도를 조정할 수 있으며 하단의 로그에서 오류 정보를 볼 수 있습니다. 기록된 테스트 스크립트는 Java, C#, Python, Ruby 등 여러 언어로 내보낼 수 있어 다양한 언어를 마스터한 테스터가 보다 쉽게 ​​작업할 수 있습니다. Webdriver

    Selenium RC 브라우저에서 JavaScript 애플리케이션을 실행할 때 환경 샌드박스 문제가 발생하지만 WebDriver는 JavaScript 샌드박스에서 벗어나 다양한 브라우저에 대해 보다 강력하고 분산된 크로스 플랫폼 자동화 테스트 스크립트를 생성할 수 있습니다. 특정 언어(Java, C#, Python, Ruby, Perl, JavaScript 등) 바인딩을 기반으로 브라우저를 구동하여 웹 요소를 작동하고 유효성을 검사합니다.

    webdriver 작동 방식:

    • 브라우저를 시작한 후 selenium-webdriver는 대상 브라우저를 특정 포트에 바인딩하고 시작된 브라우저는 webdriver의 원격 서버 역할을 합니다.

    • 클라이언트(즉, 테스트 스크립트)는 ComandExecutor를 사용하여 서버에 HTTP 요청(통신 프로토콜: WebDriver Wire Protocol)을 보냅니다. HTTP 요청 본문에서는 JSON 형식의 문자열입니다. WebDriver Wire 프로토콜에 의해 지정됩니다. 브라우저가 다음에 수행할 작업을 Selenium에게 알려줍니다.

    • 서버 측은 작업을 완료하기 위해 웹 서비스 명령을 브라우저 기본 호출로 변환하기 위해 기본 브라우저 구성 요소에 의존해야 합니다.

    selenium Grid

    selenium Grid는 브라우저 인스턴스가 접속하는 서버 목록을 제공하고 각 노드의 등록 및 상태 정보를 관리하는 서버입니다. 다양한 테스트 스크립트를 동시에 여러 서버에서 실행할 수 있습니다.

    3 셀레늄 IDE 기록 스크립트

    Edge-Plug-in-select 셀레늄 IDE 열기:

    새 프로젝트를 생성합니다. 이때 왼쪽 테스트 케이스 창에 마우스 오른쪽 버튼을 클릭하면 제목 없는 테스트 케이스가 있을 것입니다.

    Python 자동화 테스트 도구인 Selenium을 사용하는 방법수동 녹화를 시작하려면 IDE 오른쪽 상단에 있는 녹화 버튼(빨간 작은 점)을 클릭하세요

    테스트할 URL(예: http://www.baidu)을 입력하세요. 주소창에 com을 검색해 키워드를 검색하면 IDE Recording 작업이 수행된 것을 확인할 수 있습니다.

    체크포인트를 추가하려면 페이지를 마우스 오른쪽 버튼으로 클릭하세요.

    녹화가 완료된 후 녹음 버튼(작은 빨간색 점)을 클릭하면 수동 녹음이 종료됩니다. Selenium IDE에서 테스트 케이스를 선택하고 마우스 오른쪽 버튼을 클릭한 후 "test.py 파일로 내보내기"를 선택합니다.

    Python에서 스크립트를 실행하고 디버그합니다.

    # Generated by Selenium IDE
    import pytest
    import time
    import json
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.support import expected_conditions
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    class TestTest():
      def setup_method(self, method):
        self.driver = webdriver.Chrome()
        self.vars = {}
      def teardown_method(self, method):
        self.driver.quit()
      def test_test(self):
        self.driver.get("https://www.baidu.com/")
        self.driver.set_window_size(809, 864)
        self.driver.find_element(By.ID, "kw").click()
        self.driver.execute_script("window.scrollTo(0,0)")
        self.driver.find_element(By.ID, "kw").send_keys("四月是你的谎言")
        self.driver.find_element(By.ID, "su").click()
    로그인 후 복사

    위 내용은 Python 자동화 테스트 도구인 Selenium을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:yisu.com
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿