StoryCode

'Web Automation Test Tool'에 해당되는 글 3건

  1. WebCrawl.py
  2. Selenium 을 이용한 Web 어플리케이션 테스트 자동화
  3. Web Automation Test Tool Guide

WebCrawl.py

Web Automation Test Tool
반응형

from selenium import webdriver

from selenium.webdriver.common.by import By


# WebDriverWait는 Selenium 2.4.0 이후 부터 사용 가능합니다.

from selenium.webdriver.support.ui import WebDriverWait


# expected_conditions는 Selenium 2.26.0 이후 부터 사용 가능합니다.

from selenium.webdriver.support import expected_conditions as EC


from bs4 import BeautifulSoup










driver = webdriver.Chrome('chromedriver.exe')

# 브라우저가 무조건 3초 기다림.

driver.implicitly_wait(5)















driver.get('http://www.t.net')

# 특정 개체가 나올때까지 10초간 대기 ( 로그인전 )

try:

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="loginli"]/a')))

finally:

driver.find_element_by_xpath('//*[@id="loginli"]/a').click()


driver.find_element_by_xpath('//*[@id="loginli"]/a').click()

driver.find_element_by_name('memberid').send_keys('아이디')

driver.find_element_by_name('memberpwd').send_keys('비밀번호')

driver.find_element_by_xpath('//*[@id="btn_login"]').click()


# 특정 개체가 나올때까지 10초간 대기 ( 로그인후 )

try:

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="login_div2"]/li[3]/a')))

finally:

print("")












driver.get("http://www.t.net/math/main.jsp")


try:

# 중요 : frame 안의 frame 은 최상위부터 차례대로 하나씩 내려가야 한다.

driver.switch_to_default_content()


WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, 'main')))

driver.switch_to_frame(driver.find_element_by_name("main"))


WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, 'middleFrame')))

driver.switch_to_frame(driver.find_element_by_name("middleFrame"))


WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, 'leftFrame')))

driver.switch_to_frame(driver.find_element_by_name("leftFrame"))


WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="t_left_menu"]/div[1]/p/span')))

finally:

# 하나만 찾기

membername = driver.find_element_by_xpath('//*[@id="t_left_menu"]/div[1]/p/span')

print(membername.text)








# 여러개 찾기

try:

driver.switch_to_default_content()


WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, 'main')))

driver.switch_to_frame(driver.find_element_by_name("main"))


WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, 'middleFrame')))

driver.switch_to_frame(driver.find_element_by_name("middleFrame"))


WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, 'mainFrame')))

driver.switch_to_frame(driver.find_element_by_name("mainFrame"))


WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="datatable"]/table')))

finally:

tasklist = driver.find_elements_by_css_selector('#datatable > table > tbody > tr > td > div > div')


for t in tasklist:

print(t.text)



# 동작중에 다른 웹 화면이 가려지거나 하면 오동작도 하는 것 같다.

# 가끔동작하지 않는 경우가 있는데, 왠만한 곳에는 WebDriverWait 을 추가한 후에 액세스하는 것이 좋을 듯 하다.

반응형

Selenium 을 이용한 Web 어플리케이션 테스트 자동화

Web Automation Test Tool
반응형

참조 http://tech.whatap.io/2015/10/02/automation-with-selenium/

반응형

'Web Automation Test Tool' 카테고리의 다른 글

WebCrawl.py  (0) 2018.06.01
Web Automation Test Tool Guide  (0) 2018.05.31

Web Automation Test Tool Guide

Web Automation Test Tool
반응형

[ 출처 ] http://wingsh.tistory.com/148

Selenium

도구 명Selenium 
구매 여부
    • 오픈 소스 (Apache License 2.0)
도구 설명(특징)
    • 웹 어플리케이션 테스트 프레임워크
적용 장점
    • 다양한 프로그래밍 언어 지원 (Python, Ruby, .Net, Perl, Java, PHP)
    • 현재 사용되고 있는 대부분의 Browser에서 실행 가능 (IE, FireFox, Opera, Safari, Chrome)

    • 다양한 운영 체제에서 동작 가능 (Windows, Linux, Macintosh)

    • 웹페이지 객체에 대해 다양한 접근 가능 (Id, Name, Identifier, XPath, Dom, CSS, Link 등)

    • Flash, SilverLight, Ajax 지원 가능 (추가 설치 필요)

    • 다양한 테스트 프레임워크와 연동 가능 (Bromine, JUnit, NUnit, TestNG, FitNesse)

    • 언어를 자바로 선택했을 경우, 이클립스 사용 가능하고 이클립스 플러그인 사용가능

    • JUnit과 결합할 경우 개발자 Unit 테스트와 유사한 형태 (CI서버, Clover 등 연동 가능)

적용 범위
    • 서비스에 대한 브라우저 호환성 체크, 서비스 테스트 자동화 등
제약 사항
    • FireFox에서 가장 잘 수행되며, IE 등 다른 브라우저에서는 버그가 존재함(Cross Domain등)
    • Flash 테스트는 외부에 노출된 External Interface에 한해서만 가능
사용 팁 
    • 코드 작성시 Selenium IDE(레코딩 기능), XPath Checker, FireBug 툴을 사용하면 코드 작성이 용이함
    • 코드 작성 이후 기존 Unit Test 하는 방법과 유사하게 진행됨.
    • 다양한 이클립스 플러그인 사용하면 좀 더 쾌적한 환경을 구성할 수 있음
필요한 기술
    • JAVA를 베이스로 사용할 경우: JAVA, HTML, JAVA SCRIPT, 이클립스 사용법
관련 자료 다운로드

AutoIt

도구 명AutoIT
구매 여부
    • 오픈 소스
도구 설명(특징)
    • 윈도우 GUI와 범용적인 동작들을 테스트 자동화 하기 위한 도구로 윈도우 기반의 웹, 어플리케이션에 대해 손쉬운 스크립트 작성 가능
적용 장점
    • Web Browser 뿐만 아니라, Windows Application에 대한 제어도 가능함
    • 이미지 비교를 통해서 웹이나 어플리케이션에 대한 UI 테스트가 가능함
    • Recording 기능 및 명령어 자동완성 기능을 통해 손쉽게 테스트 케이스를 만들 수 있음
    • 외부 API, DLL 사용이 가능함
    • ImageSearch.DLL을 이용하여 UI 테스트가 가능
    • 국내/해외 사용자가 많아, 관련 문서나 Example을 찾기 쉬움(커뮤니티 활성화)
    • SWAT과 연동 활용 가능함
    • Compile 후 별도의 Framework 설치 필요 없이 독립적으로 실행 가능
    • Random, For, IF 문 등의 사용이 가능하므로 복잡하고 다양한 테스트 시나리오 작성이 가능함
적용 범위
    • Flash를 제외한 모든 웹/윈도우 어플리케이션에서 제약 없이 테스트 자동화 가능
    • 웹과 어플리케이션을 병행하는 서비스에 대해서 효율적인 결과를 도출할 수 있음
    • 이미지 비교(ImageSearch.DLL)을 통해서 UI 테스트 자동화 가능
제약 사항
    • Flash는 테스트 불가능 (ImageSearch.DLL을 이용해 이미지 비교 후 해당 좌표에 대한 Action은 가능함)
    • Recording이 가능하나, Recording 시 객체에 대한 확인 보다는 Low Recording으로 좌표에 대한 Action으로 Recording (Recording 효율성이 낮음)
    • Low Level Action에 대해 Recording을 하게 되므로, UI 변경 시 Recording된 Script에 대한 효율성이 낮음
    • 테스트 결과에 대한 View가 제공되지 않아, 별도의 Test Result를 볼 수 있도록 결과 페이지를 작성 해야 함
    • 기본적인 스크립트를 작성하기 위해서는 기초적인 Language Skill이 요구되므로 지식이 없는 사용자가 사용하기에 진입장벽이 존재함
사용 팁 
    • 결과에 대한 Result View가 존재하지 않으므로, 별도의 Result를 볼 수 있도록 Log나 Html, XML 형식으로 결과를 Write
    • Object의 Name, ID가 존재하지 않을 경우에는 ImageSearch.DLL함수를 이용하여 해당 Object의 Position을 받아와 Action 수행
    • 자주 사용되는 기능이나, 모듈에 대해서는 재사용성이 용이하도록 Function 또는 Module 화
    • SWAT과 연동이 가능하므로 기본적인 웹 기능에 대해서는 SWAT을 이용하고, SWAT으로 Cover 하기 어려운 부분은 AutoIT을 이용
필요한 기술
    • WEB Object(HTML)와 COM 객체에 대한 개념
    • AutoIT의 기본적인 개념 및 기본적인 Script Language 습득
관련 자료 다운로드

SWAT

도구 명SWAT (Simple Web Automation Toolkit)
구매 여부
    • 오픈 소스
도구 설명(특징)
    • HTML 기반의 웹 어플리케이션 테스트 자동화 도구로 End-User 관점에서 다양한 브라우저를 이용하여 손쉽게 테스트 케이스 작성이 가능
적용 장점
    • 스크립트 구조가 간단하여 다른 자동화 도구에 비해 익히기 쉬움
    • 다양한 브라우저 지원 (Internet Explorer 6.0이상 8.0지원, Firefox, Safari)
    • Recording 기능 및 명령어 자동완성 기능을 통해 손쉽게 테스트 케이스를 만들 수 있음.
    • FitNesse와 연동 가능
    • Hudson CI서버와 연동하여 Regression Test 자동화 가능
    • 테스트의 성공/실패에 따라 선택적으로 그 결과를 스크린샷으로 확인 가능
    • RunScript 명령어를 이용하여 JavaScript 를 직접 실행 가능
    • SWAT4NHN 20091111이후 버전부터 AutoIT 연동기능 제공
    • Random, For, IF 문 등의 사용이 가능하므로 복잡하고 다양한 테스트 시나리오 작성이 가능함
적용 범위
    • 기본적으로 HTML과 JavaScript만으로 이루어진 웹 어플리케이션은 제약 없이 자동화 가능
    • 간단한 Ajax와 ActiveX(예, 파일 업/다운로드 컴포넌트)가 사용된 경우도 가능
제약 사항
    • ActiveX / Flash는 테스트가 불가능 (단, AutoIt과 연동 기능을 제공하므로 비교적 단순한 테스트는 자동화가 가능함)
    • Ajax를 지원하지만 제약사항이 존재함 (단순한 구조만 가능)
    • 일부 Recording이 잘 되지 않는 경우가 존재함
    • 테스트 케이스 실행 시 런타임 시점에 테스트 결과에 따라 실행 순서를 변경하거나 특정 테스트를 반복하는 등의 flow control 기능이 없음
      (단, Command Modifier를 지원하여 간단한 컨트롤은 가능함)
    • 명령어가 단순하므로 복잡한 로직을 포함하는 테스트 케이스는 작성이 불가능
    • 현재 FireFox의 JSSH 플러그인 문제로 인해 한글 입력이 잘 되지 않음
사용 팁 
    • SWAT Editor의 Recording 기능을 활용하여 기본적인 스크립트를 완성하고, Play해서 recording이 잘 되지 않는 부분은 명령어를 직접 typing하여 완성
    • 검증 하고자 하는 값(check point)을 정하고 다양한 Assert 명령어를 추가하여 테스트의 성공/실패를 확인할 수 있도록 함
    • 이렇게 작성된 스크립트를 FitNesse 위키 페이지에 옮겨서 저장하고 테스트를 수행
    • FitNesse와 연동할 경우 관련 있는 테스트 케이스를 페이지 별로 구조화 시키고 다른 페이지 내에서 include와 variable를 통해 재사용 가능하도록 만들 수 있으므로 테스트 케이스 작성 및 유지보수성을 높일 수 있음
    • 특히, 관련 있는 테스트는 FitNesse에서 제공하는 Suite기능을 통해 테스트가 작성된 모든 페이지들을 한번에 테스트 가능
    • FitNesse와 연동 시 Hudson CI서버와도 연동이 가능하므로 주기적인 테스트 및 이전 테스트 결과를 비교 참조할 수 있음
필요한 기술
    • SWAT 개념 및 명령어 작성법
    • Hudson 연동을 위한 STAF 커맨드 사용법 
관련 자료 다운로드

QTP

도구 명QTP (Quick Test Professional)
구매 여부
도구 설명(특징)
    • 기능 테스트 자동화 솔루션으로 MS Windows GUI 어플리케이션에 대한 기능 테스트 및 회귀 테스트 자동화가 가능함
적용 장점
    • 오브젝트 자동 인식 및 등록: 어플리케이션 스크린 구성 요소들을 한번의 마우스 클릭으로 Shared Object Repository에 등록함으로써 작업 그룹간에 협업 지원
    • Keyword View를 통해 Coding 작업 없는 스크립트 작성 지원
    • Auto-documentation: 테스트 단계 작성과 동시에 자동 설명 등록
    • Integrated Data Table (간단한 테스트 데이터 등록 및 실행)
    • 테스트 결과 검증이 용이
적용 범위
    • Web/Windows 서비스 모두 테스트 가능
제약 사항
    • 스크립트 오동작으로 오브젝트 인식이 안 되는 경우가 있음
사용 팁 
필요한 기술
    • SWAT 개념 및 명령어 작성법
    • Hudson 연동을 위한 STAF 커맨드 사용법 
관련 자료 다운로드

WebDriver

도구 명WebDriver
구매 여부
도구 설명(특징)
    • Web UI 테스트 자동화 라이브러리로 다양한 드라이버를 통한 다중 브라우저 테스트 가능
    • 개발자 관점의 웹 테스트 자동화 지원 도구 (only API)
적용 장점
    • 다양한 브라우저(Internet Explorer, Firefox, Safari, Chrome)에 대한 직접적인 컨트롤을 통한 네이티브한 테스트 지원
    • HtmlUnit 드라이버 지원을 통한 플랫폼 독립적인 테스트 및 테스트 결과의 빠른 피드백 가능
    • Support 라이브러리를 사용한 Java Object와 Web Page간 Binding
    • 자바스크립트(Javascript) 지원
    • 쿠키(Cookie)와 관련된 다양한 기능 지원
    • Maven을 통한 Maven 프로젝트에의 손쉬운 테스트 케이스 추가 가능
    • 다양한 키보드 제어 기능 지원
적용 범위
    • HtmlUnit이 지원하는 범위 내의 웹UI 테스트를 지원하며, 동일한 테스트케이스에 대해 여러 웹 브라우저에 대한 반복 테스트가 필요할 경우 사용 가능
제약 사항
사용 팁 
관련 자료 다운로드

WebAii

도구 명WebAii
구매 여부
    • 상용 도구이나 테스트 엔진 자체는 무료로 제공되므로 무료 사용 가능
도구 설명(특징)
    • 웹 어플리케이션 테스트 자동화 도구로 End-User 관점에서 다양한 브라우저를 이용하여 손쉽게 테스트 케이스 작성이 가능
    • Browser와 연계된 Win32 Native 이벤트 제어를 광범위하게 지원함으로써, 기존의 테스트 도구로 테스트하기 힘든 복잡한 어플리케이션도 테스트할 수 있음
    • Test Recoder는 상용으로 제공되나, 테스트 엔진 자체는 무료로 제공됨
적용 장점
    • 타 테스트 도구에 비해 많은 API 셋을 제공함으로써, 테스트 코드가 간단함
    • 다양한 브라우저 지원 (Internet Explorer 6.0이상 8.0지원, Firefox, Safari)
    • SilverLight App에 대한 직접 지원(External API 필요 없음).
      Flash에 대한 Window Native Event를 사용한 처리 지원
    • 다양한 .NET 기반 Unit Test 프레임웍 지원 (MbUnit / MSTest / NUnit 등)
    • Recording 기능을 통해 자동으로 테스트 케이스를 만들 수 있음 (단, 상용 버전 구매 필요)
적용 범위
    • 지나치게 복잡하여 다른 도구로 테스트하기에 힘든 Ajax Web Application
    • Silverlight / Flash 를 많이 사용한 Web Application 테스트
    • Web Game Launcher등 Windows Native App 테스트와 연계가 필요한 경우 
      (또 다른 Native App 테스트 환경인 White(http://www.codeplex.com/white)와 자연스럽게 연계 가능)
제약 사항
    • NET 지원 언어 습득 필요. Window 환경에서만 동작
    • Visual Studio 구매 또는 Open Source. NET IDE인 SharpDevelop 사용 필요
    • 한글 FireFox에 대한 JavaScript 다이얼로그 처리 기능 일부 미숙. 패치 필요
    • API가 약간 직관적이지 않아 학습이 필요함스크립트 오동작으로 오브젝트 인식이 안 되는 경우가 있음
사용 팁 
필요한 기술
    • .NET 지원 언어 사용법.
    • .NET Unit Test Framework 사용법
관련 자료 다운로드


 



출처: http://wingsh.tistory.com/148 [꾸준함의 위대함]

반응형

'Web Automation Test Tool' 카테고리의 다른 글

WebCrawl.py  (0) 2018.06.01
Selenium 을 이용한 Web 어플리케이션 테스트 자동화  (0) 2018.05.31