ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리그레션 자동화 테스트 in 애자일
    테스팅 관련/자동화 2021. 3. 7. 22:52

     

     

    애자일 프로젝트에 리그레션 자동화 테스트 적용하기

     

    1. 테스트 케이스, 자동화 툴, 프로그래밍 언어 식별

     

    1-a. 리그레션 테스트 스위트에 포함시킬 테스트 케이스 식별

     

    리그레션 테스트 케이스를 자동화시키려면,

    우선 리그레션 테스트 케이스를 모든 단계, 데이터, 전제조건을 포함하여 올바르게 정의하고 식별하기

     

    효율적인 리그레션 테스트 스위트를 생성하기 위해서 선택되는 예시 테스트 케이스

    • 반복되는 결함이 포함된 테스트 케이스
    • end-to-end 시나리오를 커버하는 테스트 케이스
    • 고객에게 가시적인 테스트 케이스
    • 한계값이 있는 테스트 케이스
    • 긍정적 & 부정적인 테스트 케이스 조합
    • 복잡한 테스트 케이스

     

    1-b. 요구사항과 시스템 동작에 가장 적합한 자동화 툴 식별

     

    리그레션 테스트 케이스 식별과 자동화를 적용할 준비가 끝나면, 테스트 케이스에 적합한 툴을 찾는다

    효과적인 방법 중 하나는 툴과 요구사항에 대한 매트릭을 생성하여, 어떤 툴이 요구사항을 충족하는지 추적한다

     

    1-c. 사용할 프로그래밍 언어 식별

     

    많은 툴은 다양한 언어를 지원하므로, 어떤 프로그래밍 언어로 자동화 테스트 케이스를 작성할지 알아본다

     

    예. 웹 브라우저 기반 소프트웨어에 대한 리그레션 테스트를 자동화하는 경우

    - 테스트 케이스 식별 (예. 사용자가 올바른 아이디/패스워드와 함께 성공적으로 로그인할 수 있는지 검증)

    - 자동화 툴 식별 (예. Selenium, Ranorex, TestComplete) - Selenium

    - 프로그래밍 언어 식별 - Java

     

     

    2. 비용, 리소스/공수, 시간 분석

     

    2-a. 비용 분석

    분석 단계에서 얼마나 많은 테스트 케이스를 자동화시킬 것인지, 사용 가능한 툴은 무엇인지 알 수 있었으며,

    나온 결과들은 추정 예산을 결정하는데 도움을 준다

     

    2-b. 리소스 / 공수 분석

    리소스를 적절하게 할당하고, 시간을 능률적이게 사용하기 위해서 리소스, 공수 분석을 수행하는 것은 매우 중요하다

    리소스와 공수를 추정할 때, 리스크를 고려해야한다

     

    2-c. 시간 분석

    예산과 데드라인 안에 프로젝트를 완수할 수 있을지 확신하는데 시간 분석은 필요하다

    시간 분석하는데 있어 진행 상황을 모니터할 수 있는 타임라인 차트를 준비하면 도움이 된다

     

    2-4. 프로젝트 스케쥴에 대한 분석:

    프로젝트에서 테스크와 하위 테스크를 식별하기

    테스크/하위테스크의 우선순위를 정하기

    차트나 네트워크 다이어그램을 활용해 타임라인을 시각화하기

     

     

    3. 프레임워크 및 가이드라인 결정

     

    3-a. 툴과 리소스가 준비되면, 파일 구조를 생성하거나 또는 이미 존재하는 프레임워크 선택한다

    이미 빌드된 프레임워크를 사용해도 되고, 스크래치로부터 새로운 프레임워크를 빌드해도 된다

    테스트 케이스, 로그, 리포트, 입력값, 데이터베이스 연결 등과 연관된 컴포넌트를 사용할 수 있는 프레임워크를 선택할 것

     

    3-b. 도움을 줄 수 있는 다른 툴을 결정한다

    자동화 스크립트를 생성하는데 코드 작성이 포함되므로, 개발 툴들을 사용할 수 있다

    예. git, GitHub, Jenkins 등

     

    3-c. 자동화 스크립트를 작성하기 위한 가이드라인의 개요 서술

    모든 리소스는 동기화(Synchronized)되며, 같은 명명 규칙(Naming conventions), 같은 코드 체크인/아웃 절차, 같은 프로그래밍 언어를 사용한다.

     

    예. 구조: 자동화 테스트에 BDD(Behavior Driven Development)를 사용한다

    도구 툴: 자동화에 완전한 도움을 줄 GitHub, Jenkins, Log4J, Cucumber, JUnit.

     

     

    4. 자동화 스크립트 작성

     

    자동화 툴, 프로그래밍 언어, 스킬, 테스트 케이스 등이 준비 되면 자동화 스크립트를 작성한다

     

    시나리오를 작성할 때, 주의해야 할 점:

    가이드라인을 따라 작성할 것

    툴을 사용할 것

    테스트 케이스는 모듈로 나눠진다

    여러 테스트 케이스에서 컴포넌트를 재사용할 수 있다

    모든 팀 멤버가 쉽게 협업할 수 있도록, 버전 컨트롤 툴에서 코드가 잘 처리되고 있는지 확인한다

     

    예. 테스트 케이스를 실행할 스크립트 작성

     

    Function: 로그인 기능 확인
    유저로서, 나는 어플리케이션에 로그인 하길 원한다
    시나리오 개요: 어플리케이션 로그인
    어플리케이션을 실행한다
    When 아이디를 입력한다
    And 패스워드를 입력한다
    And 로그인 버튼을 클릭한다
    Then 홈페이지가 보인다

     

    로그인 function

    public class Login { 
        
        LoginImpl loginImpl = new LoginImpl(); 
        
        @Given('^나는 어플리케이션을 실행한다$') 
        public void i_open_application() { 
        	loginImpl.openURL('URL'); 
        } 
        
        @When('^나는 아이디를 입력한다$') 
        public void i_Enter_username(String arg1) { 
        	loginImpl.enterUserName(arg1); 
        } 
        
        @When('^나는 패스워드를 입력한다$') 
        public void i_Enter_password(String arg1) { 
        	loginImpl.enterPassword(arg1); 
        } 
        
        @When('^나는 로그인 버튼을 누른다$') 
        public void i_click_on_Login_button() { 
        	loginImpl.clickLoginButton(); 
        } 
        
        @Then('^나는 홈페이지에 접속한다$') 
        public void i_go_to_Home_page() { 
        	loginImpl.verifyHomePage(); 
        } 
    }
    

     

    로그인 function 클래스 구현

    public class LoginImpl {
    
        WebDriver driver; 
        
        public LoginImpl(){ 
        	System.setProperty('webdriver.chrome.driver', 'webdriver/chromedriver.exe'); 
            driver = new ChromeDriver(); 
        } 
        
        public void openURL(String string) { 
        	driver.get(string);
        } 
        
        public void enterUserName(String arg1) { 
        	driver.findElement(By.id('UserName')).sendKeys(arg1); 
        } 
        
        public void enterPassword(String arg1) { 
        	driver.findElement(By.id('Password')).sendKeys(arg1); 
        } 
        
        public void clickLoginButton() { 
        	driver.findElement(By.id('LoginButton')).click(); 
        } 
        
        public void verifyHomePage() { 
        	String currUrl = driver.getCurrentUrl(); 
            if(currUrl.equals('homePageURL')) { 
            	System.out.println('Home page verified'); 
            } 
        }
    }

     

     

    5. 리뷰

     

    5-a. 코드 리뷰

    자동화 스크립트가 완성되면, 다양한 레벨에서 코드 리뷰를 수행한다

     

    코드 리뷰는,

    - 잘못된 검증을 인식한다

    - 코드 최적화 포인트를 찾는다

    - 리소스 효율성을 시행하기 위한 더 나은 방법을 찾는다

     

    5-b. 테스트 케이스 리뷰

    코드 리뷰뿐만이 아닌 테스트 케이스 리뷰도 매우 중요하다

    자동화 테스트 스크립트가 실행되면, 수동 테스트에서 기대했던 것과 같이 동작, 검증이 수행되는지 확인한다

     

     

    6. 전달

     

    누구든지 언제나 실행할 수 있도록 테스트 케이스를 제공하기

    자동화 스크립트가 사용할 준비가 되면, 전달 계획을 세워야한다

     

    자동화 테스트 케이스에 대한 실행은 사람 또는 스킬에 따른 제한이 없다

    각 팀 멤버는 테스트 케이스를 실행할 수 있다

     

    Jenkins를 사용하여 자동화된 테스트 케이스를 수행할 수 있다

     

    예. Jenkins가 GitHub에서 코드를 가져와서 컴파일하고 테스트 케이스를 다른 머신에서 실행

     

    테스크가 성공적이게 완수되면, 테스트 리포트를 생성한다

    Jenkins에 접근 권한이 있는 팀 멤버가 테스크를 완성한다

    특정 시간에 테스크가 실행되도록 예약할 수 있다

Designed by Tistory.