샘플 영상

1. 소셜커머스 위메프 웹에서 selenium 구동 영상 (위메프 직원 아님)

 

자동화 validation 체크

1. 임의 메뉴에서 배너(이미지)가 정상 노출되었는지

2. 해당 배너 선택 후 진입한 페이지에서 정상적인 코드(200)를 받아왔는지

 

 

 

테스트로 얻을 수 있는 결과

1. 각 프로모션 일정 마다 변경되는 배너(이미지)가 정상으로 설정되었고 노출되는지 매일 자동화 테스트가 수행되며 결과과 공유되기 때문에 서비스 운영에 대한 안정성 확보

 

2. 프로모션 이미지 설정에 실수가 없었더라도 페이지 링크가 잘못되어 정상 응답(200)이 안오는 경우가 있을 수 있어 (1)결과와 더불어 크로스 체크

Selenium 초기 설정

1. 최초 selenium 자동화 스크립트 환경설정 부분에 대한 설명입니다.

System.setProperty("webdriver.chrome.driver", "D:\\chromedriver\\chromedriver.exe"); // 드라이버 파일 경로

DesiredCapabilities capabilities = DesiredCapabilities.chrome(); // 해당 브라우저의 속성을 저장하기위한 브라우저 지정

capabilities.setCapability("marionette", true); // 해당 브라우저의 속성을 저장하기위한 코드

driver = new ChromeDriver(); //크롬 드라이버 지정

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // 10초 이상 대기 시 fail처리

 

현재 도메인 접근 시 응답 받은 응답코드를 기준으로 PASS / FAIL 을 판한다는 자동화 스크립트를 작성하는 방법입니다.

 

왜 필요한가?

- selenium 으로 자동화 테스트 케이스 작성 시 단순 element 값을 기준으로 테스트하는 경우가 많은데, 막상 자동화를 돌리면 element만 체크하는 스크립트에서 오류가 발생되는 상황도 왕왕 있고 추후 리포트 발생 시 테스트 결과에 대한 좀 더 명확한 근거 자료로 사용될 수 있다고 생각합니다. 

 

스크립트

1. 네트워크 응답값을 받아 오는 방법

URL url = new URL(driver.getCurrentUrl());

HttpURLConnection connection = (HttpURLConnection)url.openConnection();

connection.setRequestMethod("GET");

connection.connect();

  

int code = connection.getResponseCode();

 

1-1. 사용 예)

if (code == (404)) {    // code 값이 404면 캡처

takeScreenshotofpage(driver, screenpath + getDateTimeStamp() + "_Failcase." + Thread.currentThread().getStackTrace()[1].getMethodName() + ".png"

);

}

Assert.assertEquals(200, code);   // 위에서 받은 code값이 200이 아니면 fail 처리

 

1-2 스크립트 설명

네트워크 응답값을 code 변수에 받아 404가 떴을 경우 화면을 캡쳐한다.

캡쳐 후 code 값이 200이 아닐경우 test에서 fail로 처리하게 함

 

 

 

postman api 테스트

request 추가하기

1. Post 방식

(?) post방식이란? : 게시판에 글을 등록할 때 사용하는 Method 종류으로 생각하면 됩니다. (역시 정확한 개념은 구글링)
 
1) 호출 방식 Post 선택

 

2) api url 입력
3) 게시글 데이터 입력
4) 호출
 

- 위 이미지 내용을 풀이하자면, 게시글 등록 api(url)을 호출하여 작성한 게시글(하단 json 형식 문자)를 해당 서버 db에 저장한다라는 의미입니다.

 

 

 

2. 호출 후 응답값 확인

1) 어떤 상태 코드를 받았는지 확인 > 정상 201 Created 응답 받음
- (?) 201 응답은? 요청이 성공적으로 처리되었으며, 자원이 생성되었음을 나타내는 성공 상태 응답 코드 (구글링하면 쉽게 확인 가능합니다.)
2) 작성된 데이터 확인 > json 응답 데이터 확인
 
- 위 이미지 내용을 풀이하자면, "http://localhost:3000/posts/ url을 post 방식으로 호출했고, 서버에 등록 요청한 데이터를 성공적으로 생성했다" 로 보시면 됩니다.
 
예를 들면, 게시판에 게시글 작성 후 [작성] 버튼을 눌렀을 때 상황으로 보시면 됩니다.
 
 

3. 오류가 발생된 경우는?

- 중복된 id값으로 등록을 요청할 경우 서버 오류
(같은 게시판에 제목이 같을 순 있어도 해당 게시물의 고유한 id값은 중복될 수 없습니다.)
1) 어떤 상태 코드를 받았는지 확인 > 에러 500 server error 응답 받음 (에러 코드는 이전글 참고)
2) 서버에서 해당 에러에 맞는 메세지 응답
 

- 위 이미지 내용을 풀이하자면, 위 2번에서 호출했던 데이터를 수정없이 다시 한번 요청한 경우 동일한 id값으로 등록 요청이 한번 더 왔으므로 오류가 발생된 상황입니다.

- 여담으로 프론트엔드 개발 시 서버에서 내려온 에러 코드&메세지를 참고해서 사용자에게 디자인된 오류 팝업 등을 보여주고 있습니다. 
 
 

4. Post로 등록된 게시글(데이터) 확인 하기

1) get 방식으로 3번에서 등록한 게시글(id: 102)를 호출합니다.
2) 정상 응답 유무를 확인하여 id:102에 맞는 데이터가 있는지 확인합니다.

- 위 이미지 내용을 풀이하자면, 2에서 등록한 id:102를 get 방식으로 url에 id값까지 넣고 호출했고, 해당 id에 해당하는 내용(게시글) 응답이 내려온 상황입니다.
예를 들어, 게시판에서 id : 102 글을 클릭할 때, 프론트에서 서버로 get방식 id:102를 호출하고 응답 온 데이터(타이틀 / 본문 등)를 이용해서 게시글 상세 화면을 만들어준다고 보시면 됩니다.
 

마치며..

여기까지 초간단 poestman을 이용한 get/post 테스트에 대해서 작성해봤습니다.
현재 업무로 기능 QA을 하는 입장에서 빠른 시간 내 로그 확인 용도로 사용할 정도 수준으로 작성 했고 api test를 전문으로 하시는 분들은 잘 정리된 다른 블로그 내용 구글링 하시기 바랍니다.
 
 
이어서 postman으로 api testcase 생성 > 수행 > 결과 리포트까지 받아보는 과정을 공유드리겠습니다.
 
 

'Postman' 카테고리의 다른 글

postman을 사용한 api 테스트 (2)  (0) 2023.11.04
postman을 사용한 api 테스트 (1)  (0) 2023.11.04

postman api 테스트


request 추가하기

0. 들어가기 앞서..

아래 내용들은 제가 기능QA를 업무를 진행하면서 실제로 수행했던 테스팅 방법을 바탕으로 작성되었습니다. 다소 전문적이지 않고 부족한 글이지만 딱 실무자 입장에서 이정도면 된다. 라는 느낌으로 작성하는 부분이니 참고만 해주시면 됩니다.
 

1. 테스트할 api 메소드 선택 및 api url 입력

1-1. GET 방식

(?) get 방식이란? : 간단하게 게시판 접근 시 게시물을 불러올 때 사용하는 Method 종류으로 생각하면 됩니다. (정확한 개념은 구글에 치면 나오니 해당 글 참고)
 
1) 호출 방식 선택
2) api url 입력
3) 호출
 

- 위 이미지 내용을 풀이하자면, get 방식으로 작성된 url을 호출한다라는 뜻입니다.

정상 호출 여부에 따라 응답값이 서버에서 내려올 거고 저희 QA는 해당 api에서 정상적인 응답이 오는지 체크하면 됩니다.

2. 호출 후 응답값 확인

참고) 저는 간단하게 개인 서버를 띄운 후 테스트를 진행했습니다.
 
1) 호출 후 받은 응답은 하단 영역에 노출
2) 어떤 상태 코드를 받았는지 확인 > 정상 200 ok 응답 받음
3) 응답값으로 내려온 데이터 노출 > userId, id, title, body 필드로 구성된 json 형식의 응답을 받음
 
- 위 이미지 내용을 풀이하자면, "http://localhost:3000/posts/1 url을 get 방식으로 호출했고, 서버에서 아래 값(userid, id, title, body) 응답을 내려줬다." 로 보시면 됩니다.
 
예를 들면, 게시판에 게시글 중 1번 게시글을 눌렀을 때 내려온 상황입니다.
 

3. 테스트 결과 공유

[참고 네트워크 응답 코드]

  • 응답 코드 내용 중요도
    (상/중/하)
    1xx(정보) 요청을 받았으며 프로세스를 계속 진행 하(본적 없음)
    2xx(성공) 요청을 성공적으로 받았으며 인식했고 수용 상(맨날 봄)
    3xx(리다이렉션) 요청 완료를 위해 추가 작업 조치가 필요 하(어쩌다 한번)
    4xx(클라이언트 오류) 요청의 문법이 잘못되었거나 요청을 처리할 수 없음 상(맨날 봄)
    5xx(서버 오류) 서버가 명백히 유효한 요청에 대한 충족을 실패 상(맨날 봄)
 
 
- 테스트 종료 후 위 응답 코드를 기준으로 담당 개발자에게 전달하거나 200 ok면 결과에 pass를 넣고 넘어가면 됩니다.
 
- 참고로 보통 기능 QA에서 확인 가능한 응답 코드는 200 / 401 / 404 / 500 정도이고 그 외 것들은 테스트 하면서 보기도 힘들지만 만약 보게 돼도 외울 필요 없이 인터넷 검색하면 1초면 결과나 나오니 검색을 추천 합니다.
 

[응답 코드에 따른 대응]

 
응답 코드 내용 예시
200 정상 응답, 데이터가 제대로 넘어왔는지 추가 검증을 진행하면 된다. 게시물 제목에 본문 내용이 나오거나, 문자열 깨지거나 등
401 에러, 특정 권한이 필요한 호출에 권한 없이 시도한 경우 발생
> 본인 환경 먼저 점검 후 개발자 문의
로그인 안한 유저로 로그인 이후 사용가능한 메뉴 등 호출 시 발생
404 에러, 요청한 페이지 없음
> 서버 개발자에게 확인 요청 필요 (환경 문제인지 확인)
url 오타(없는 url) 또는 아직 배포 전 url(배포전이라 아직 없음) 호출 시 종종 발생
500 에러, api요청은 성공했으나 서버에서 못내려줌
> 서버 개발자에게 확인 요청 필요 (이슈)
게시글 접근 시 오류로 접근이 불가능함
 
 

4. get 방식을 마치며

- api 호출 시 파라미터, 헤더값 조작 등 다양한 방식으로 테스트가 가능하지만 이 글에선 가장 기초적이면서 기능 QA 중 중간중간 간단하게 api 테스트를 진행하고 내려온 응답값(로그)를 확인하는 목적으로 작성했습니다.
 
 

post 방식은 다음에 이어서..

'Postman' 카테고리의 다른 글

postman을 사용한 api 테스트 (3)  (0) 2023.11.05
postman을 사용한 api 테스트 (1)  (0) 2023.11.04
반응형

postman 설치 및 실행 


포스트맨이란?

api 테스트 툴 중 하나로 사용하기 간편하고 무료인점이 큰 장점

 

아래 내용은 위키백과 내용

- 포스트맨은 개발자들이 API를 디자인하고 빌드하고 테스트하고 반복하기 위한 API 플랫폼

 

포스트맨을 사용하는 이유?

1) 반복적인 데이터 세팅 (상태값 변경, 데이터 입력, 삭제 등) 시 한번 만들어 두면 어제든 불러와서 사용할 수 있다. (실무진 입장에서 1번 사유가 제일 크다)
2) api 검증이 필요한 경우 테스트 케이스 작성 및 자동화 세팅이 가능하여 매우 편리하게 테스트가 가능하다
3) 무료이다.
 

포스트맨 설치 및 실행

1. 사이트 접속 > 설치

https://www.postman.com/downloads/ 접속 후 다운로드 > 설치

 

2. 포스트맨 실행 및 workspaces 생성

1) 구글 로그인 > 상단 workspaces 선택
2) create workspace 선택
3) 이름 임의로 작성 후 생성

3. collections 생성

1) 생성된 workspaces 선택
2) 좌측 메뉴 > collections

 

 

4. request 생성 (= api 테스트 케이스 생성)

1) 생성한 collections 우클릭 > add request 선택

 
 


테스트 방법은 다음에 이어서..

 

'Postman' 카테고리의 다른 글

postman을 사용한 api 테스트 (3)  (0) 2023.11.05
postman을 사용한 api 테스트 (2)  (0) 2023.11.04

#세션 생성

Create Session api http://api-search2.wemakeprice.com


#파라미터 값 정의

${params} Create Dictionary os=pc select_first=A api_version=1.0.0


#api 호출동작 변수 처리

${resp} Get Request api /brandselect ${params}


#json 데이터 파싱

${json} Set Variable ${resp.json()}


#json데이터內 code값을 code 변수로 처리

${code} Get From Dictionary ${json} code


#응답값 상태코드 문자가 200과 동일한지 체크

Should Be Equal As Strings ${resp.status_code} 200


#변수 ${json}에 code 0 인 값이 포함되어 있는지 체크

Dictionary Should Contain Item ${json} code 0


# 변수 ${code}에 문자가 0과 일치하는지 체크

Should Be Equal As Strings ${code} 0

'robot framework' 카테고리의 다른 글

로봇 프레임웍 설치(RIDE)  (0) 2017.03.14

[설치]

- Python 2.7.* 설치

https://www.python.org/downloads/>(Path 설정)

64bit용  Windows x86-64 MSI installer 설치


- WxPython 설치 (GUI tool)

(Python 버전확인 및 unicode 버전으로 설치)


- PyCrypto 설치 (파이썬 데이터 암호화)

(Python 버전 확인)

pip install pycrypto 로설치


- Robot Framework 설치

(Python경로>pip install robotframework  or 관련 사이트에서 다운로드)


- Robot Framework-ride 설치

(Python경로>pip install robotframework-ride)


- 필요한 Library 설치

(Python경로>pip install library명)

http://robotframework.org/>라이브러리 참고


- pip list 로 설치파일들 확인 가능



테스트 케이스 작성 가이드


*** Settings ***
LibraryCollections
LibraryRequestsLibrary
*** Test Cases ***
Get Requests
Create Sessiongithubhttp://api.github.com
Create Sessiongooglehttp://www.google.com
${resp}=Get Requestgoogle/
Should Be Equal As Strings${resp.status_code}200
${resp}=Get Requestgithub/users/bulkan
Should Be Equal As Strings${resp.status_code}200
Dictionary Should Contain Value${resp.json()}Bulkan Savun Evcimen


'robot framework' 카테고리의 다른 글

기본 테스트 케이스  (0) 2018.03.12


cmd창 열기 > 기존 maven 프로젝트 폴더 이동(pom.xml 파일이 위치한 폴더)


해당 명령어 입력


gradle init --type pom

위와 같이 하면 project name  dependencies 등이 gralde용 build script로 변환이 되고 프로젝트가 gradle를 사용가능하도록 설정 됨

'App자동화' 카테고리의 다른 글

*)gradle + testng 자동화 설정  (0) 2017.02.09
2) 이클립스 설치 및 설정  (0) 2016.10.12
1) JAVA(JDK) 설치  (0) 2016.10.11

이클립스 - Gradle 프로젝트 생성(기본)




테스트만 수행하기위해서는 src/test/java 에서만 스크립트 작성




위 형식으로 테스트 스크립트 작성







Build.gradle 설정


apply plugin: 'java'

apply plugin: 'eclipse'


sourceCompatibility = JavaVersion.VERSION_1_8

targetCompatibility = JavaVersion.VERSION_1_8

compileJava.options.bootClasspath = "C:/Program Files/Java/jdk1.8.0_73/jre/lib/rt.jar"   //bootClasspath 라고/jre/lib/rt.jar 파일 경로는 적어주는데 미작성 시 경고 오류 발생


version = '1.0-SNAPSHOT'

[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'   //폰트 설정같은데, 설정하지 않을 시 테스트 스크립트에 한글이 포함된 경우 동작하지 않음


jar {

    manifest {

        attributes 'Implementation-Title': 'Gradle Quickstart',

                   'Implementation-Version': version

    }

}



repositories {

    mavenCentral()

}



dependencies {

        compile group: 'commons-collections', name: 'commons-collections', version: '3.2'

        compile group: 'io.appium', name: 'java-client', version: '3.3.0'

testCompile group: 'org.testng', name: 'testng', version: '6.8.8'

compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '2.53.1'      //사용하는 라이브러리 추가

}



test {

useTestNG()    //해당 영역 미작성 시 기본 Junit을 사용하게 된다고 함 그래서 따로 testng를 사용하게끔 설정

}



uploadArchives {

    repositories {

       flatDir {

           dirs 'repos'

       }

    }

}





Tasks 설정

Clean

test


설정 후 Rus As - Gradle (STS) Build 시 테스트 동작

*프로젝트 경로 > Build > reports > tests > index.html 확인 시 결과 리포트 확인가능







'App자동화' 카테고리의 다른 글

+) maven에서 gradle로 변환  (0) 2017.02.13
2) 이클립스 설치 및 설정  (0) 2016.10.12
1) JAVA(JDK) 설치  (0) 2016.10.11

+ Recent posts