탐색적 테스팅 접근법(Exploratory testing approach)

  • 테스트케이스 작성의 시간을 최소화하면서 테스트 엔지니어의 발견적인(Heuristic) 지적 능력을 최대한 활용하여 테스트를 수행하는 것
  • 테스트 설계, 테스트 수행, 테스트 계획, 테스트 기록 및 학습을 동시에 진행하는 휴리스틱한(Heuristic, 발견적인) 테스팅 접근법
  • 테스트 케이스를 먼저 작성하지 않고, 테스트 대상 제품을 실행하면서, 익숙해지는 것과 동시에 테스트를 설계하고 테스트를 계획한다.
  • 60~120분 동안에 몰입하여 수행할 수 있는 정도의 테스트 목적을 담고 있는 테스트 차터(Test Charter)를 기반으로 “제한된 시간(Time-Boxing)” 내에 테스팅의 “목적”을 정한 후, “몰입”하여 최소한의 설명 가능한 기록(Note)를 남기면서 테스트를 수행하고, 수행 후 “요약보고(Debriefing)”하는 것을 강조한다.
  • 테스트 케이스 기반의 공식적인 테스팅과 반대되는 개념의 “테스팅 접근법”
  • 최소한의 문서화를 통해 테스트를 실행하면서 분석/설계하고 계획을 세우는 것으 공식적인 테스팅 방법론보다 더 효율적이고 결함을 발견할 확률이 높아질 수 있다고 보는 테스팅 접근법
  • 공식적 테스팅이 문서화된 테스트 케이스를 기반으로 수행하는 것임에 반해, 탐색적 테스팅은 테스트 케이스를 문서화하는데 소요되는 시간을 최소화하여 테스트를 ”실행”하는 것에 집중한다.
  • 여러 테스팅 기법과 방법론을 훈련된 테스트 엔지니어가 많은 생각과 지적인 활동을 통해 창조적으로 테스팅하는 것을 강조
  • 탐색적 테스팅이 포함하는 내용
    • 제품 탐색(Product Exploration)
    • 테스트 설계(Test Design)
    • 테스트 실행(Test Execution)
    • 휴리스틱스(Heuristics)
    • 검토 가능한 결과물(Reviewable Results)
  • 탐색적 테스팅의 테스트 절차
    • 제품의 목적 식별(Identify the purpose of the product)
    • 기능 식별(Identify functions)
    • 잠재적으로 불안정한 부분 식별(Identify areas of potential instability)
    • 각각의 기능 테스트 및 문제점 기록(Test each function and record problem)
    • 일관성 검증 테스트 설계 및 기록(Design and record a consistency verification test)

탐색적 테스팅의 구성요소

  • 테스트 차터(Charter)와 시간 제한(Time Box)
    • 테스트 차터 : 무엇이 어떻게 테스트되어야 하고, 무슨 문제를 살펴야 하는지를 제안하는 내용
    • 테스트 차터를 정할 때에는 먼저 수행될 각 세션당 시간을 정해 놓는다.(Time box)
    • 테스터는 정해진 시간 내에 테스트 차터를 수행해야 하며, 몰입하여 테스트하는 것을 원칙으로 한다.
    • 테스터가 정해진 시간 안에 수행해야 할 것
      1. 정확한 리포팅(Accurate reporting)
      2. 유연성 있는 일정관리(Flexible scheduling)
      3. 테스트 방향 정정(Course correction)
      4. 견고한 테스팅(Solid testing done)
      5. 효율적인 요약 보고(Efficient debriefings)
    • 테스트 차터를 효율적/효과적으로 만들기 위해서는 제품 리스크 기반하여 만들어야 한다. 즉 리스크 분석 결과 제품의 리스크가 높은 기능에는 테스트 차터가 많이 생성하고, 리스크 낮은 기능에는 적게 생성하여 테스트를 수행하는 것이다.

예제) Test charters are used in ________ testing ( A )

a)      Exploratory testing

b)     Usability testing

c)      Component testing

d)     Maintainability testing

  • 테스트 노트(Test note)와 요약 보고(Debriefing)
    • 테스트 엔지니어는 테스트 실행과 동시에 머리 속에 계획, 설계하고 테스트 케이스를 작성하며, 이러한 사고활동을 간단하게 노트에 기록한다.
    • 작성한 테스트 노트는 테스트 케이스의 역할을 대처함과 동시에, 검토 가능한 결과물로써 활용된다.
    • 탐색적 테스팅의 한 세션이 종료된 후에는 팀원끼리 요약보고(Debriefing)하는 시간을 갖는다. 요약 보고 중에는 테스트 중 발견했던 결함과 이슈사항에 대해 보고하고, 어떤 식으로 테스트를 수행했는지에 관한 경험을 팀원 모두가 공유한다. 이러한 토론 과정을 통해 경험이 적은 테스터는 경험이 많고 뛰어난 테스터의 지도와 조언으로 스스로를 훈련시킬 수 있다.
    • 테스트 노트에 포함되어야 할 내용
      1. 테스트한 제품에 대한 노트 및 기록
      2. 발견된 결함과 장애에 대한 노트 및 기록
      3. 어떻게 테스트되었는지를 기술하는 요약된 문서
  • 테스트 케이스 기반 테스팅과 탐색적 테스팅의 비교
    • 테스트 케이스 기반 테스팅과 탐색적 테스팅의 가장 큰 차이점은 테스트 기반 테스팅은 모든 테스트 케이스의 작성을 마친 후 그것을 절차적으로 실행하지만, 탐색적 테스팅은 테스트 대상을 알게 되면서 동시에 테스트를 설계하고 실행하는 것이다.
    • 두 가지의 테스팅 방식이 발견하는 결함의 종류도 서로 다르다. 테스트 케이스 작성이 완료된 상태에서 테스트를 실행하게 되면 테스터 주체에 상관없이 같은 결함을 발견하지만, 탐색적으로 테스트할 경우 테스터의 성향(파괴적 테스터, 스크립트적 테스터, 사용성 테스터, 남/여 등)에 따라 서로 다른 결과를 산출하게 된다.
    • 탐색적 테스팅은 “자유로운 방식”에서 시작하여 스크립트 정도와 탐색적 정도에 따라 테스트 케이스 기반 방식으로 확장할 수 있다.

테스트 케이스 기반 테스팅

탐색적 테스팅

테스트가 먼저 설계되고 기록된다. 나중에 (때에 따라 다른 테스터가 이를 수행한다.)

테스트 설계됨과 동시에 수행된다. 테스트가 반드시 기록되어야 하는 것은 아니다.

[비유]준비된 연설과 같다. 테스트는 미리 착안된 생각에 따라 수행된다.

대화를 하는 것과 같다. 테스트는 아이디어를 반영하고, 생각을 발전시키는 방향으로 수행된다.

테스트의 실행을 관리하는 것이다.

(Controlling test execution.)

테스트 설계를 계속 향상 시키는 것이다.

(Improving test design.)

테스트 실행을 시작하기 전에 테스트 케이스를 작성한다.

프로젝트 기간 내내 테스트 계획/설계와 실행을 반복한다.

테스트 문서 작성, 검토에 많은 에너지를 소비함으로써, 생성될 테스트의 전체 수를 줄이는 경향이 있다.

테스트 문서 작성, 검토에 대한 필요성을 최소화하여 보다 많고 복잡한 테스트에 상대적으로 많은 노력 투자가 가능하다.

테스트 간의 (특성, 능력) 차이를 제거하려는 능력

테스트 간의 (특성, 능력) 차이를 십분 활용하려는 노력

테스터가 아닐 수 있는 테스트 설계자가 테스트를 설계한다.

테스트 설계자일 수 있는 테스터가 테스트를 설계한다.

완벽하게 한번에 테스팅을 수행한다.

점진적이고 주기적으로 테스팅을 수행한다.

    • 리스크가 가장 높은 곳에는 테스팅 경험이 가장 많고 능력 있는 테스트 엔지니어가 탐색적 테스팅을 수행해야 하고, 반대로 리스크가 가장 낮은 곳에는 경험과 능력이 상대적으로 부족한 테스트 엔지니어가 수행해야 한다.
  • 성공적인 탐색적 테스팅의 효과
    • 경험적으로 테스팅을 하는 것을 체계화 시킬 수 있다.
    • 테스트 케이스를 작성하는 시간을 줄여 보다 많은 테스트를 실행할 수 있다.
    • 테스터 또는 테스트 엔지니어의 역량을 월등히 향상시킬 수 있다.
    • 적은 테스트 인력으로 많은 테스트를 수행할 수 있다.
    • 명세가 거의 없고 시간이 부족한 경우 테스트를 효과적/효율적으로 수행할 수 있다.

'QA > Theory' 카테고리의 다른 글

version naming  (0) 2016.08.23
Bullseye를 이용한 Code Coverage Test  (0) 2016.03.30
탐험적 테스팅(Exploratory Testing)  (0) 2016.03.29
Web Automation Test Tool Guide  (0) 2016.03.29
Pairwise testing  (0) 2016.03.29
Fit & FirNeses  (0) 2016.03.29

 

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 사용법
관련 자료 다운로드


 

'QA > Theory' 카테고리의 다른 글

Bullseye를 이용한 Code Coverage Test  (0) 2016.03.30
탐험적 테스팅(Exploratory Testing)  (0) 2016.03.29
Web Automation Test Tool Guide  (0) 2016.03.29
Pairwise testing  (0) 2016.03.29
Fit & FirNeses  (0) 2016.03.29
ISTQB Agile Test Extension  (0) 2016.02.03

페어와이즈 조합 테스팅(Pairwise testing)

  • 커버해야 할 기능적 범위에 비해 상대적으로 적은 량의 테스트 세트를 구성하여 소프트웨어의 결함을 찾고 테스트에 대한 자신감(Confidence)을 얻을 수 있는 방법 중 한 가지
  • 관찰 결과 대부분의 결함이 2개의 요소의 상호작용(Interactions of two factors)에 기인한다는 것에 착안하여 2개 요소의 모든 조합을 다룬다.
  • 페어와이즈 조합의 의미는 테스트를 하는데 필요한 각 값들이 다른 파라미터의 값과 최소한 한번씩은 조합을 이룬다는 의미
  • 모든 조합을 고려해 테스팅했을 때 발견할 수 있는 결함을 모두 발견하는 것은 아니지만, 테스팅한 결과에 결함이 없다는 것까지는 보장성을 제공해준다.
  • 경험적으로 의미 있고 결함을 발견할 가능성이 높다고 판단되는 조합을 추가하여 관리 가능한 선에서 조합을 늘이는 것은 조합 테스팅의 효과성을 높이는데 도움이 된다.(물론 늘어난 조합을 감안하여 도출한 테스트 케이스가 보장하는 범위는 페어와이즈 조합 테스팅 기법이 보장하는 범위까지이다.)

'QA > Theory' 카테고리의 다른 글

탐험적 테스팅(Exploratory Testing)  (0) 2016.03.29
Web Automation Test Tool Guide  (0) 2016.03.29
Pairwise testing  (0) 2016.03.29
Fit & FirNeses  (0) 2016.03.29
ISTQB Agile Test Extension  (0) 2016.02.03
ISO/IEC 25010 품질특성과 품질 부특성  (0) 2016.02.03

Reference :  Fit_소개.pptx

Introduction to Fit

  • Great software requires collaboration and communication.
  • During development, how can customers know that their programmers are producing the right thing? 
  • How can programmers know what the customers really want? 
  • How can testers know what's right and what's wrong? 
  • Getting these groups to communicate effectively and precisely should be a goal for teams creating great software.
  • Fit is a tool for enhancing communication and collaboration. 
  • Fit creates a feedback loop between customers and programmers. 
  • Fit allows customers and testers to use tools like Microsoft Office to give examples of how a program should behave--without being programmers themselves. 
  • Fit automatically checks those examples against the actual program, thus building a simple and powerful bridge between the business and software engineering worlds.

FitNess

  • Requirement are written with example tables.

  • The tables are really tests.

  • Writing test as a table is an interesting paradigm

  • Some tests naturally fit into tables

  • Some tests require thought to put them in the form of a table


 

'QA > Theory' 카테고리의 다른 글

Web Automation Test Tool Guide  (0) 2016.03.29
Pairwise testing  (0) 2016.03.29
Fit & FirNeses  (0) 2016.03.29
ISTQB Agile Test Extension  (0) 2016.02.03
ISO/IEC 25010 품질특성과 품질 부특성  (0) 2016.02.03
탐험적 테스팅(EXPLORE IT)  (0) 2016.02.03

swapy-ob

Swapy-ob is a tool for GUI Automation for Windows. Finally you will get native python code for pywinauto module.

Automate in 3 steps:

  1. Select a control.
  2. Choose action by right-click.
  3. Get native python code.

I think...

Window Application에 특화된 Tool 임. Web Automation에 적합하지 않음. 

Web Element 찾기도 쉽지 않음


 

'QA > Test Automation' 카테고리의 다른 글

Selendroid vs Appinum  (0) 2016.03.30
Monkey Talk  (0) 2016.03.30
Swapy-ob For UI Automation  (0) 2016.02.17
PyWinAuto For UI Automation  (0) 2016.02.17
AutoIT For UI Automation  (0) 2016.02.17
Sikuli For UI Automation  (0) 2016.02.17

What is PywinAuto?

 - URL : http://pywinauto.googlecode.com/hg/pywinauto/docs/index.html

 - pywinauto is a set of python modules to automate the Microsoft Windows GUI. At it’s simplest it allows you to send mouse and keyboard actions to windows dialogs and controls.

 - Window의 GUI에 접근하여 마우스,키보드 작업을 자동화할 수 있는 라이브러리이다. 임의의 창을 특정하거나, (없으면 실행하는 것도 가능하다) 창의 모듈을 특정하여 키 입력이나 마우스 입력을 전달하여 사용자가 미리 정의한대로 작업을 자동화하는 것이 가능하

Installation

Install Python 2.7

Source  : http://sourceforge.net/projects/pywinauto/

pywinauto 에서는 win32의 Sendkeys 함수를 이용하는데 그것의 Wrapping python 모듈이 필요함

http://code.google.com/p/sendkeys-ctypes/downloads/detail?name=SendKeys-ctypes-0.2.zip&can=2&q=

환경변수 추가

Path : C:\Python27

pywinauto 모듈 소스가 있는 곳에 가서 설치 

C:\PyWinAuto\pywinauto-0.4.0

> python setup.py install

마찬가지로 sendkeys-ctypes-0.2.zip 도 풀어 설치

C:\PyWinAuto\SendKeys-ctypes-0.2

> python setup.py install

Sample Code

from pywinauto.application import Application


#app = Application.start("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
app = Application.start("C:\Program Files (x86)\Internet Explorer\iexplore.exe")
app.window_().TypeKeys({F11})
app.window_().TypeKeys('https://www.yogiyo.co.kr')
time.sleep(5)

Some similar tools for comparison

I think...

Tool 자체가 Web이 아닌 Window에 특화되어 있다는 느낌을 받음

Home Page에 추천하는 툴로 이전에 사용하던 AutoIt이 있어서 적용해볼 예정

 

'QA > Test Automation' 카테고리의 다른 글

Monkey Talk  (0) 2016.03.30
Swapy-ob For UI Automation  (0) 2016.02.17
PyWinAuto For UI Automation  (0) 2016.02.17
AutoIT For UI Automation  (0) 2016.02.17
Sikuli For UI Automation  (0) 2016.02.17
Selenium & Maven  (0) 2016.02.03

AutoIT?

AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys).

AutoIt 은 윈도우즈에 특화되어 있는 스크립트 언어로 기존의 스크립트 언어와는 달리 윈도우즈에서 하는 여러 가지 작업을 자동화하기 쉽다.


Features

  1. Easy to learn BASIC-like syntax
  2. Simulate keystrokes and mouse movements
  3. Manipulate windows and processes
  4. Interact with all standard windows controls
  5. Scripts can be compiled into standalone executables
  6. Create Graphical User Interfaces (GUIs)
  7. COM support
  8. Regular expressions
  9. Directly call external DLL and Windows API functions
  10. Scriptable RunAs functions
  11. Detailed helpfile and large community-based support forums
  12. Compatible with Windows XP / 2003 / Vista / 2008 / Windows 7 / 2008 R2 / Windows 8 / 2012 R2
  13. Unicode and x64 support
  14. Digitally signed for peace of mind
  15. Works with Windows Vista’s User Account Control (UAC)

Sample Code

#include <IE.au3>

$url = "https://www.yogiyo.co.kr"
; Active Yogiyo Web
$oIE = _IECreate($url)
$hWnd = _IEPropertyGet($oIE, "hwnd")
WinSetState($hWnd, "", @SW_MAXIMIZE)
_IELoadWait($oIE)
; Input Zip Code Address
$submit = _IEGetObjByName($oIE, "zipcode_or_city")
_IEPropertySet($submit, "innerText", "요기요시 요기요구 요기요동")
Sleep(1000)
_IEFormImageClick($oIE, "search_btn.png", "src")
Sleep(1000)



 

'QA > Test Automation' 카테고리의 다른 글

Swapy-ob For UI Automation  (0) 2016.02.17
PyWinAuto For UI Automation  (0) 2016.02.17
AutoIT For UI Automation  (0) 2016.02.17
Sikuli For UI Automation  (0) 2016.02.17
Selenium & Maven  (0) 2016.02.03
UFT(Unified Functional Testing) Mobile  (0) 2016.02.03

Sikuli

http://www.sikuli.org/

Sikuli automates anything you see on the screen. It uses image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.

 

Download : https://launchpad.net/sikuli/+download

Installation :

  1. Set JAVA_HOME
  2. execute sikuli-setup.jar

 

장점 :

  • Screen 내에 보이는 모든 것들을 Control 할 수 있다.
  • 하나의 머신에서 테스트 할 땐 용이한다.

단점 :

  • Screen 외의 것들은 MOUSE_UP or MOUSE_DOWN 등으로 접근해서 Control 해야한다.
  • 여러 머신에서 General하게 사용할 수 없다. 약간의 이미지 Miss에도 민감하다.

 

'QA > Test Automation' 카테고리의 다른 글

PyWinAuto For UI Automation  (0) 2016.02.17
AutoIT For UI Automation  (0) 2016.02.17
Sikuli For UI Automation  (0) 2016.02.17
Selenium & Maven  (0) 2016.02.03
UFT(Unified Functional Testing) Mobile  (0) 2016.02.03
Sikuli For UI Automation  (0) 2014.11.27

JAVA 설치 : http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Eclipse 설치 : http://www.eclipse.org/downloads/download.php?file=/oomph/epp/mars/R1a/eclipse-inst-win64.exe

Maven 다운로드 : http://maven.apache.org/download.cgi?Preferred=http%3A%2F%2Fapache.mirror.cdnetworks.com%2F#


Create a Project on Eclipse

File > New > Others > Maven > Maven Project

Check "create a simple project(skip archetype selection)" on New Maven Project

Input Group Id & Artifact Id on New Maven Project

add a project node on pom.xml

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>SeleniumCookbook</groupId>
  <artifactId>SeleniumCookbook</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>2.25.0</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>  
  </dependencies>
</project>

project name > src/test/java > New > Class > input Name > Finish

Input a test code

package seleniumcookbook.example.test;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
public class GoogleSearchTest {
 protected WebDriver driver;
 private StringBuffer verificationErrors = new StringBuffer();
 
 @Before
 public void setUp() {
  driver = new FirefoxDriver();
  driver.get("http://www.google.com");
 }
 @Test
 public void testGoogleSearch() {
  try {
   // name 속성으로 텍스트 입력 엘리먼트만 찾는다.
   WebElement element = driver.findElement(By.name("q"));
   // 검색어응 입력한다.
   element.sendKeys("Selenium testing tools cookbook");
   // 웹드라이버는 폼 엘리먼트를 찾아 제출한다.
   element.submit();
   (new WebDriverWait(driver, 10)).until
       (new ExpectedCondition<Boolean>() {
    public Boolean apply(WebDriver d) {
     return d.getTitle().toLowerCase().startsWith("selenium testing tools cookbook");
    }
   });
   
   assertEquals("Selenium testing tools cookbook - Google Search", driver.getTitle());
  } catch (Error e) {
   verificationErrors.append(e.toString());
  }
 }
 
 @After
 public void tearDown() throws Exception {
  driver.quit();
  String verificationErrorString = verificationErrors.toString();
  if (!"".equals(verificationErrorString)) {
   fail(verificationErrorString);
  }
  
 }

Runs As > Maven test


Trouble Shooting

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile

Windows -> Preferences -> Java -> Installed JREs -> jdk

JRE 경로가 JAVA 디렉토리에 있는 것이 아닌 JAVA 밑에 JDK 안에 있는 것으로 선택하면 된다.
 

'QA > Test Automation' 카테고리의 다른 글

PyWinAuto For UI Automation  (0) 2016.02.17
AutoIT For UI Automation  (0) 2016.02.17
Sikuli For UI Automation  (0) 2016.02.17
Selenium & Maven  (0) 2016.02.03
UFT(Unified Functional Testing) Mobile  (0) 2016.02.03
Sikuli For UI Automation  (0) 2014.11.27

UFT Mobile은 기존의 Application Test Automation Tool인 UFT/QTP에 Plugin 되어 Mobile Application의 Test Automation까지 가능한 Solution이다.


두 가지 큰 특징이자 장점을 가지는데 

첫번째는 실제 Mobile 단말에서의 Mobile Application 검증이 가능하다는 점이다. Mobile Application의 경우 운영체제가 같더라도 단말기 제조사별 커스터마이징이 들어가면서 모든 단말에서 동일하게 동작한다는 것에 대한 보증을 하기 어려웠다.

두번째는 Test 대상 Mobile 기기를 클리우드 환경에서 구성할 수 있다는 점이다. Mobile Application을 개발하고 Test 하는 동안 실제 단말에서 Debugging이나 Test의 작업이 필요한데, 이때 생기는 문제가 바로 단말기의 관리이다. Test 단말기의 관리가 제대로 되지 않으면, 단말기의 중복 구매, 붐실 등의 이유로 불필요한 비용 및 시간 손실이 생기게 된다. 하지만 Test 대상 단말기를 한 곳에 모아두고, 원격으로 이들에 접근해서 조작할 수 있는 클라우드 환경을 구성하면 Mobile 단말기의 관리가 가능해진다.


UFT Mobile은 UFT/QTP에 통합되어 기존 UFT/QTP 기능을 활용하면서 실제 단말기 상에서의 Mobile Application Test Automation을 가능하게 하는 Solution이다. 또란 ScriptOnce Technology를 통해 하나의 단말기에서 작성한 Script를 다른 기종의 단말기에서 돌릴 수 있는 기능을 제공하여 Auto Test Script의 관리 및 생산성을 향상시켜준다.

 

'QA > Test Automation' 카테고리의 다른 글

PyWinAuto For UI Automation  (0) 2016.02.17
AutoIT For UI Automation  (0) 2016.02.17
Sikuli For UI Automation  (0) 2016.02.17
Selenium & Maven  (0) 2016.02.03
UFT(Unified Functional Testing) Mobile  (0) 2016.02.03
Sikuli For UI Automation  (0) 2014.11.27

+ Recent posts