>  기사  >  백엔드 개발  >  Python 자동화 테스트 인터뷰 FAQ 및 답변

Python 자동화 테스트 인터뷰 FAQ 및 답변

王林
王林앞으로
2023-04-27 15:31:072218검색

1. 자동화된 테스트에 적합한 프로젝트는 무엇입니까?

키워드: 불변, 반복, 표준화

1) 작업 테스트가 명확하고 요구 사항이 자주 변경되지 않습니다

2) 프로젝트 주기가 충분히 길어야 합니다

3) 자동화된 테스트 스크립트는 다음과 같이 재사용할 수 있습니다. as: 비교 잦은 회귀 테스트

4) 테스트 중인 소프트웨어 시스템의 개발이 상대적으로 표준화되어 있어 시스템의 테스트 가능성을 보장할 수 있습니다

5) 소프트웨어 시스템 인터페이스가 거의 변경되지 않고 안정적입니다

6) 프로젝트 진행 압력은 그리 높지 않아요

2. PO 모드란?

은 특정 페이지를 프로그래밍 언어의 객체로 변환하고, 페이지 특성을 객체 속성으로 변환하고, 페이지 작업을 객체 메소드로 변환하는 것을 말합니다.

1) 일반적으로 각 페이지를 하나의 객체로 간주하며 위치 지정 요소 방식과 페이지 조작 방식은 페이지 레이어에 기록됩니다

2) 유스 케이스 레이어는 페이지 레이어에서 조작 방식을 호출하여 다음과 같이 작성합니다. 사용 사례

3) 요소 위치 지정 및 스크립트 분리가 가능합니다

4) 주로 페이지 작업과 테스트 로직의 분리를 위해 사용됩니다

3. PO 모드의 캡슐화 원리는 무엇인가요?

1) 페이지의 기능이나 서비스를 캡슐화하려면, 예를 들어 페이지 요소를 클릭하여 새 페이지를 입력한 다음 이 서비스에 대한 "새 페이지 입력" 메소드를 캡슐화할 수 있습니다.

2) 세부정보를 캡슐화합니다. 메서드 이름이나 인터페이스만 제공하고 페이지 내부를 노출하지 마세요

3) 캡슐화된 작업 세부 정보에 어설션을 사용하지 말고 별도의 모듈에 어설션을 넣으세요.

4) 버튼을 클릭하면 새 페이지가 열립니다. return 메소드를 사용하여 점프할 수 있습니다. 예를 들어 return MainPage()는 홈페이지로 점프하는 것을 의미합니다

5) 전체 PO의 동작을 캡슐화할 필요는 없습니다. 사용되는 모든 로직을 캡슐화할 수 있습니다

6) 예를 들어, 버튼을 클릭하면 성공할 수도 있고 실패할 수도 있습니다. click_success 및 click_error

4의 역할은 무엇입니까? 파이썬?

은 모두 가변 길이 매개변수로, 고정되지 않은 매개변수 문제를 해결합니다.

args는 튜플에 사용되는 키워드가 아닌 매개변수입니다. kwargs는 키워드 매개변수(사전)입니다.

즉, args는 이름이 지정되지 않은 여러 매개변수를 나타내는 반면, kwags는 해당 관계가 있는 키워드 매개변수를 나타냅니다.

사용 시 주의가 필요합니다. *args는 **kwags 앞에 와야 합니다. 그렇지 않으면 구문 오류가 발생합니다.

5. Python의 가비지 수집 메커니즘은 무엇인가요?

GC라고도 하는 가비지 수집은 Python 인터프리터와 함께 제공되는 메커니즘으로, 특히 가비지 수집에 사용됩니다.

변수를 정의할 때 메모리 공간이 적용됩니다. 변수가 모두 사용되면 변수가 차지하는 메모리 공간도 해제되어야 하며 Python은 GC 메커니즘을 통해 이를 재활용합니다.

어떤 종류의 가비지 수집 메커니즘이라도 일반적으로 가비지 감지와 가비지 수집의 두 단계로 나뉩니다.

가비지 감지는 할당된 메모리에서 "재활용 가능" 메모리와 "재활용 불가능" 메모리를 구별하는 것입니다.

가비지 수집을 통해 운영 체제는 가비지 감지 단계에서 식별된 재활용 가능한 메모리 블록에 대한 제어권을 다시 얻을 수 있습니다.

일명 가비지 컬렉션은 이 메모리의 데이터를 직접 지우는 것이 아니라 이를 사용할 수 있는 권한을 운영 체제에 반환하므로 애플리케이션이 이를 점유하지 않습니다.

가비지란 무엇입니까

1) 변수가 호출되어 더 이상 필요하지 않으면 가비지입니다.

2) 변수 주소를 가리키는 변수명이 다른 주소를 가리키는 경우 원래의 변수 메모리 주소에 접근할 수 없으며 이때 변수도 가비지입니다.

6. 셀레늄에서 숨겨진 요소를 찾는 방법은 무엇입니까?

우선, Selenium은 숨겨진 요소를 조작할 수 없습니다(그러나 정상적으로 위치할 수는 있습니다). 이 프레임워크 자체는 숨겨진 요소를 조작해야 하는 경우 Selenium을 실행하기 위한 입구를 제공합니다. js 스크립트.

Python 자동화 테스트 인터뷰 FAQ 및 답변

요소의 속성은 숨겨지고 표시되며 주로 type="hidden" 및 style="display: none;" 속성에 의해 제어됩니다.

7. 브라우저 종료 시 종료와 닫기의 차이점

간단히 말하면 둘 다 브라우저 세션을 종료하는 기능을 구현할 수 있습니다.

close는 브라우저만 닫고, quit는 모든 브라우저를 닫고 드라이버 프로세스도 종료합니다

8. 발생한 예외의 예를 제공하세요

  • ElementNotSelectableException: 요소를 선택할 수 없습니다. 예외

  • ElementNotVisibleException: 요소가 보이지 않는 예외

  • NoSuchAttributeException: 해당 속성 예외가 없습니다.

  • NoSuchElementException: 해당 요소 예외가 없습니다.

  • NoSuchFrameException: 해당 프레임 예외가 없습니다.

  • TimeoutException: 시간 초과 예외

  • 현재 시점에서 요소가 보이지 않습니다.

9. 경고 팝업 창을 처리하는 방법은 무엇입니까?

1) 먼저 switch_to_alert() 메소드를 사용하여 경고 팝업 상자로 전환합니다.

2) text 메소드를 사용하여 팝업 텍스트 정보를 얻을 수 있습니다.

3) accept()를 통해 확인 버튼을 클릭합니다.

4) 팝업 상자를 취소하려면 해제() 버튼을 클릭하여 취소하세요

5) text()를 통해 팝업 창의 텍스트를 가져옵니다

10 셀레늄에서 여러 창을 처리하는 방법은 무엇입니까?

핸들: 창의 고유 식별자

1) 먼저 현재 창 핸들을 얻습니다.driver.current_window_handle

2) 그런 다음 모든 창 핸들을 얻습니다. 그렇지 않은 경우에는 drivers.switch_to_window 메소드를 사용하여 새 창으로 이동하세요.

11. 셀레늄에 원소가 존재하는지 확인하는 방법은 무엇입니까?

Selenium은 요소가 존재하는지 확인하는 기본 방법을 제공하지 않습니다. 일반적으로 요소 위치 지정 + 예외 캡처를 통해 확인할 수 있습니다.

Python 자동화 테스트 인터뷰 FAQ 및 답변12. 자동화에는 기다림의 세 가지 유형이 있나요? 그들의 특징은 무엇입니까?

1) time.sleep(2)과 같은 스레드 대기(강제 대기): 스레드가 2초 동안 강제로 대기 상태가 된 후 후속 코드가 실행됩니다. 아껴서 사용하는 것이 좋습니다.

2) imlicitlyWait(암시적 대기)는 요소가 발견되거나 시간 초과될 때까지 지정된 시간 범위 내에서 요소를 계속 검색합니다. 특징은 전체 페이지가 로드될 때까지 기다려야 한다는 것입니다.

3) WebDriverWait(명시적 대기)는 일반적으로 우리가 사용자 정의하는 함수 코드입니다. 이 코드는 후속 코드를 계속 실행하기 전에 특정 요소가 로드될 때까지 기다리는 데 사용됩니다.

13. 셀레늄의 작동 요소 성공률을 보장하는 방법은 무엇입니까? 즉, 클릭한 요소가 클릭 가능해야 하는지 확인하는 방법은 무엇입니까?

1) WebDriverWait()을 사용하여 명시적으로 대기하고 요소가 로드될 때까지 기다린 다음 요소 작업을 수행합니다.

2) 불필요한 작업을 줄이세요. 페이지에 직접 액세스할 수 있다면 클릭 작업을 통해 액세스하지 마세요

3) 일부 페이지는 로드하는 데 시간이 너무 오래 걸리므로 로드를 중단하는 것을 고려할 수 있습니다

4) 개발자는 표준화해야 합니다. 페이지 요소와 고유 이름, ID 등을 제공하는 등의 개발 습관

14. 셀레늄 스크립트의 실행 속도를 향상시키는 방법은 무엇입니까?

1) 명시적 대기를 사용하여 강제 대기 또는 암시적 대기의 사용을 줄입니다.

2) 불필요한 단계를 줄입니다.

3) 페이지에 너무 많은 콘텐츠가 로드되면 시간 초과를 설정하여 페이지 로드를 중단하세요.

15. 유스 케이스는 작동 중에 불안정해지는 경우가 많습니다. 즉, 이번에 통과하면 다음 번에는 통과하지 못할 것입니다.

1) 자주 감지되지 않는 요소 앞에 명시적인 대기 시간을 추가하고, 다음 작업을 수행하기 전에 작동할 요소가 나타날 때까지 기다리십시오.

2) 예외 포착 및 처리를 사용하세요

3) 다른 유형의 테스트가 동시에 수행되어 데이터에 간섭을 일으키지 않도록 전용 테스트 환경을 사용해 보세요

16. 자동화된 사용 사례가 있나요?

자동 테스트 케이스의 실행 전략은 일반적으로 다음과 같은 전략이 있습니다.

1) 자동 테스트 케이스는 모니터링에 사용됩니다. 예. , 5분 또는 1시간마다 실행된다면 Jenkins에서 예약된 작업을 생성하면 됩니다.

2) 반환해야 하는 사용 사례입니다. 실행을 트리거하도록 테스트 사례를 설정하고 자동화된 테스트 작업을 Jenkins의 개발 빌드 작업에 바인딩합니다. 개발자가 시뮬레이션 환경에서 코딩하면 자동화된 테스트 사례가 트리거되고 실행됩니다.

3) 자주 실행할 필요가 없는 테스트 케이스입니다. 전체 테스트 케이스와 마찬가지로 항상 실행 상태로 돌아갈 필요가 없으며, 일부 비주요 비즈니스 라인은 때때로 돌아올 필요가 없습니다. 이러한 유형의 테스트 사례는 Jenkins에서 작업을 생성하고 실행해야 할 때 수동으로 빌드합니다.

17. 지속적 통합이란 무엇입니까?

지속적 통합은 팀 개발 구성원이 코드를 트렁크에 자주 통합하는 소프트웨어 개발 방식으로, 이는 매일 여러 통합이 발생할 수 있음을 의미합니다.

두 가지 주요 이점이 있습니다.

1) 오류를 빠르게 감지합니다. 업데이트가 완료될 때마다 백본에 통합되어 오류를 빠르게 발견할 수 있으며 오류를 더 쉽게 찾을 수 있습니다.

2) 가지가 몸통에서 크게 벗어나는 것을 방지합니다. 통합이 빈번하지 않고 백본이 지속적으로 업데이트된다면 향후 통합이 더 어려워지거나 심지어 어려워질 것입니다.

목적:

지속적 통합의 목적은 고품질을 유지하면서 제품을 빠르게 반복할 수 있도록 하는 것입니다. 핵심 측정은 코드가 트렁크에 통합되기 전에 자동화된 테스트를 통과해야 한다는 것입니다. 하나의 테스트 케이스가 실패하는 한 통합될 수 없습니다.

18. 자동화된 테스트 중에 데이터 검증을 위해 데이터베이스에 연결해야 합니까?

UI 자동화에는 필요하지 않고 인터페이스 테스트에 필요합니다

19. 일반적으로 사용되는 요소 위치 지정 방법은 무엇입니까? 당신이 가장 좋아하는 것은 무엇이며 그 이유는 무엇입니까?

8가지 유형, 즉 id, 이름, 클래스 이름, 태그 이름, 링크 텍스트, 부분 링크 텍스트, xpath, css

제가 가장 많이 사용하는 것은 xpath(또는 CssSelector)입니다

많은 경우 html 태그가 있기 때문에 속성은 충분히 표준화되지 않았으며 단일 속성으로 위치를 지정할 수 없습니다. 현재 xpath를 사용하여 중복을 제거하고 고유 요소의 위치를 ​​지정할 수 있습니다.

사실 ID는 고유하기 때문에 가장 빠른 위치 지정은 ID이지만, 대부분의 개발자는 ID를 설정하지 않습니다.

20. 페이지에서 동적으로 로드된 요소를 찾는 방법은 무엇입니까?

동적 속성 변경은 요소에 고정된 속성 값이 없으므로 요소의 상위 노드 또는 하위 노드를 찾기 위해 xpath 축을 통한 상대 위치 지정을 통해서만 위치를 지정할 수 있음을 의미합니다. . 링크를 클릭하면 Selenium이 페이지가 로드될 때까지 자동으로 기다리나요?

말도 안돼.

그래서 Selenium이 페이지 로드를 완료하지 못하고 페이지 리소스를 요청하는 경우 이 요소가 존재하지 않는다고 잘못 보고되는 경우가 있습니다.

먼저 셀레늄이 이 페이지 로딩을 완료했는지 판단하는 것을 고려해야 합니다. 둘째, 함수를 통해 요소를 찾습니다. (요소를 조작하기 전에 페이지가 로드될 때까지 기다리려면 디스플레이 대기를 사용하십시오.)


22. 웹드라이버 클라이언트의 원리는 무엇입니까?

Selenium이 시작된 후 드라이버는 서버 역할을 하며 클라이언트 및 브라우저와 통신합니다. 클라이언트는 웹 드라이버 프로토콜에 따라 드라이버에 요청을 보냅니다. 드라이버는 요청을 구문 분석하고, 브라우저에서 해당 작업을 수행하고, 실행 결과를 클라이언트에 반환합니다.

23. 웹드라이버의 프로토콜은 무엇인가요?

웹드라이버 와이어 프로토콜

24. 브라우저를 시작할 때 어떤 웹드라이버 프로토콜이 사용되나요?

http 프로토콜

25. 드롭다운 상자에서 값=xx인 옵션을 선택하는 방법은 무엇입니까?

1) select 클래스에서 제공하는 메소드: select_by_value ("xxx")

2) xpath의 구문도 찾을 수 있습니다.


26 Python에서 공통 변수 매개변수 유형과 불변 매개변수 유형은 무엇입니까?

불변 데이터 유형에는 정수, 부동 소수점 숫자, 음수, 부울 값, 문자열, 튜플이 포함됩니다.

가변 매개변수 유형에는 사전, 목록, 집합이 포함됩니다.

27 요소를 배치한 후 강조 표시하는 방법(디버깅 목적) ?

요소 속성을 재설정하고 위치가 지정된 요소에 배경과 테두리를 추가합니다

28 어설션이란 무엇입니까?

assert, 테스트 결과가 예상 결과와 일치하는지 확인하기

목적은 소프트웨어 개발자가 기대하는 결과를 표현하고 검증하는 것입니다. 프로그램이 Assertion 위치로 실행되면 해당 Assertion이 true여야 합니다. 주장이 사실이 아닌 경우 프로그램은 실행을 종료하고 오류 메시지를 표시합니다.

29/자동 테스트 과정에서 어떤 문제가 발생했으며 어떻게 해결했나요?

1) 페이지를 자주 변경하고 페이지 개체 클래스의 코드를 자주 수정합니다

2) 자동화된 테스트에서 가끔 오탐이 발생합니다

3) 자동화된 테스트 결과가 포함됩니다. Jenkins는 시간을 기준으로 폴더를 생성합니다

4 ) 자동화된 테스트 코드 유지 관리가 더 까다롭습니다

5) 데이터베이스 비교 데이터에 대한 자동화된 테스트

30. 브라우저의 앞으로, 뒤로 및 새로 고침 작업을 시뮬레이션하는 방법

    driver.navigation().forward() //Forward
  • driver.navigate().back() //뒤로
  • driver.navigate0.efresh() //새로 고침

위 내용은 Python 자동화 테스트 인터뷰 FAQ 및 답변의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제