삽질의 현장/- Web

[삽잡이::web] 웹 기반 소프트웨어를 반복해서 테스트해보자! Selenium

shovelman 2016. 6. 8. 20:55



웹 기반의 프로그램을 쉽게 테스팅할 수 있도록 도와주는

흔히 말하는 테스팅 프레임워크로 

대표적인 Selenium이라는 녀석이 있습니다.


이와 비슷한 프레임워크와 관련하여

이전에 Robot Framework에 대해서 포스팅한 기억이 있네요~



아무튼.. 상대적으로 Selenium이라는 용어에 대해서 더 많이들 들어보셨을 것이고, 

앞으로 접하시더라도... Selenium을 더 많이 들으실 것 같습니다.


웹 기반 소프트웨어들은 모두 인터넷 브라우저에 의해 실행됩니다.

QA 테스터 경험이 있는 삽잡이는 

웹 기반의 페이지들을 테스트 하려고 

F12 누르고 요소 찾고 뭐하고 했던 기억이 나네요...


정리해서 말씀드리면, Selenium은 자동으로 테스팅...

즉, 사용자들이 자동화 테스팅을 주도할 수 있도록 강력한 기능을 제공해주는 고마운 친구입니다.


 


흔히들 아는 IE, Chrome, Safari, Opera 그리고 Firefox등의 

브라우저 환경에서 테스팅이 가능하도록 지원해줍니다.


사실, Selenium은 Firefox의 Add On이지요... 

확장 플러그인이라는 것입니다.


간단하게 한번 테스팅해보고 싶다 하신 분들은 



[ 출처_ https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/ ]


요곳에서 다운 받으시면 됩니다.


   요기 생기구나~!


실행하시면, 


     


빨간색으로 반짝거리는 버튼을 누르면

이 후에 웹 요소들을 클릭할 때마다 녹화가 됩니다.


이를 통해 재생 버튼을 눌러서 녹화된 행동들에 대해 반복할 수 있구요,

이를 테스트 케이스를 작성한다고도 말 할 수 있습니다.


 


테스트 케이스를 저장할 수도 있습니다.


Selenium은 Java, Ruby, Python, C# 등 다양한 언어를 지원해주는데요.

JUnit, TestNG와 같은 형식으로 Export하여 

해당 언어로 직접 Test를 수행할 수 있습니다.


이렇게 추출된 코드는 @Before, @Test, @After 애노테이션으로 작성되있는데

쉽게 생각하시면 전처리, 실행, 후처리라고 생각하시면 됩니다.


저는 JUnit 형식으로 한번 Export 해보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class SapzapeWorld {
  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();
 
  @Before
  public void setUp() throws Exception {
    driver = new FirefoxDriver();
    baseUrl = "http://shovelman.tistory.com/";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }
 
  @Test
  public void testSapzapeWorld() throws Exception {
    driver.get(baseUrl + "/");
    driver.findElement(By.id("sidebar-toggle")).click();
    driver.findElement(By.linkText("愿�由ъ옄")).click();
    driver.findElement(By.linkText("移댄뀒怨좊━ �꽕�젙")).click();
    driver.findElement(By.linkText("湲� �꽕�젙")).click();
    driver.findElement(By.linkText("�뒪�뙵 �븘�꽣")).click();
    driver.findElement(By.linkText("釉붾줈洹몃줈")).click();
    driver.findElement(By.xpath("//div[@id='paging']/a[6]/span")).click();
  }
 
  @After
  public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }
}
 
cs


정말 위에서 언급한대로 생성이 되지요...

사실, 좀 이것 저것 짜르고 올리긴 한건데...

그리고... 한글로 된 Element들을 이리저리 다니다보니 인코딩 문제도....


아무튼!

불필요한 Code들을 깔끔히 하고 사용자 기호에 맞게 사용할 수 있겠지요...


 신난다~~


이처럼 Test Case를 만들고, 

Export하여 위에서 언급한 언어의 코드로 재사용할 수 있으며,

간단히 테스트도 수행할 수 있는 놀라운 Selenium을 보셨습니다!


또한, WebDriver 라는 도구 덕분에 

기존 Selenium 1.0에서 지원하지 못했던 기능들을 수행할 수 있었습니다.


이녀석은 다양한 환경에서 테스트를 수행할 수 있도록...

간단하게 이미 작성된 테스트 케이스에 대해서 Driver만 변경해주면,

여러 환경에서 테스트를 할 수 있도록 도와주는 친구입니다.


물론, 이 친구는 Selenium과 합체하여 Selenium 2.0이 되었습니다.


아무튼... 조금만 어루어 만져주면

실무에 아주 편하게 테스팅할 수 있도록 도와주는 Selenium!


앞으로 좀 가까이해야하겠습니다!


굳~