하나의 기사에서 우편 배달부 인터페이스 자동화 테스트 받기(전체 네트워크에서 가장 완전한 버전)

0 머리말

이 기사는 기본 사용법을 마스터한 독자 , 즉 인터페이스 관련 개념을 어느 정도 이해하고 시뮬레이션된 요청과 같은 기본 조작을 Postman사용할 수 있는 독자에게 적합합니다.Postman

작업 환경 및 버전:

  • 윈도우 7(64비트)
  • 우편 배달부 (Chrome 앱 v5.5.3)

PS 다른 버전의 페이지 UI와 일부 기능의 위치는 약간 다를 수 있지만 영향은 크지 않습니다.

먼저 생각해 봅시다 자동화된 인터페이스 테스트의 효과를 얻으려면 기본 시뮬레이션 요청에 대해 무엇을 더 수행해야 합니까?

대략 3가지 질문으로 요약합니다( 의견 영역에 추가 제안을 남겨주셔도 좋습니다 ).

1. 인터페이스 요청이 성공했는지 판단하는 방법은 무엇입니까?
2. 배치 및 정기 인터페이스 테스트를 수행하는 방법은 무엇입니까?
3. 종속 인터페이스 문제를 처리하는 방법(예: 주문하기 위한 인터페이스는 먼저 로그인을 요구해야 함)?

따라서 이하에서는 크게 3부로 나누어 이 3가지 문제점을 해결하는 방법을 소개한다.

다음은 사용 사례 템플릿, 계획 템플릿, 보고서 템플릿, 성능 튜닝, 자동화 자습서, 테스트 템플릿, 이력서 템플릿, 인터뷰 기술, Dachang의 실제 테스트 질문 등을 포함한 200G 소프트웨어 테스트 자습서 자료입니다! 직접 받으려면 아래를 클릭하십시오.

1 인터페이스 결과 판단

우선 자동화된 테스트이기 때문에 Postman결과가 기대에 부합하는지 직접 판단할 수 있는 도구나 코드가 반드시 필요합니다. 그런 다음 인터페이스 테스트 측면에서 일반적으로 두 가지 아이디어가 있습니다.

1. 요청에 의해 반환된 것이 code기대치를 충족하는지 확인

2. 요청에 의해 반환된 콘텐츠에 예상 콘텐츠(키워드)가 포함되어 있는지 확인

Postman다음으로 위의 문제를 해결하기 위해 사용하는 방법을 살펴보겠습니다 .

1.1 기능 영역

의 관련 기능은 Postman매우 눈에 띄며 Tests기능을 사용하려면 특정 프로그래밍 언어 기반이 필요하며 현재 지원되는 스크립팅 언어는 입니다 JavaScript. 그러나 더 좋은 점은 컨텍스트와 운영 환경을 고려할 필요가 없다는 것입니다. 즉, 여기에서 결과 논리 판단의 코드 블록만 완료하면 됩니다.

또한 패널 오른쪽에 있는 리본 Postman에서 일반적으로 사용되는 일부 코드 템플릿을 제공하므로 에 대해 잘 모르더라도 큰 문제가 되지 않습니다. 코드 작성과 관련된 내용은 아래에서 자세히 소개하도록 하겠습니다.TestsSNIPPETSJavaScript

1.2 스크립트 관련

먼저 위 그림의 코드 부분을 보면 세 가지 변수를 찾을 수 있습니다 responseCode. responseBody및 (직접 사용할 수 있음):tests

  • responseCode: 요청에 의해 반환된 상태 정보를 포함합니다(예: 코드).
  • responseBody: 인터페이스 요청에 의해 반환된 데이터 콘텐츠(유형은 문자열임).
  • tests: 키-값 쌍의 형태로 테스트 결과의 성공 여부를 나타내는 데 사용되며 최종적으로 에 표시됩니다 Test Results.
  • 키: (예: 코드 200) 결과에 대한 설명으로 사용할 수 있습니다.
  • 값: 해당 값은 ture테스트가 통과했음을 나타내는 부울이며 false테스트가 실패했음을 나타냅니다.

따라서 위의 코드는 이해하기 어렵지 않아야 하며 반환된 결과 데이터와 결과의 성공 여부를 나타내는 방법으로 "인터페이스 결과 판단" 문제가 기본적으로 해결됩니다.

또한 일반적으로 사용되는 몇 가지가 있습니다.

  • responseTime: 요청에 소요된 시간
  • postman: 다음과 같이 더 많은 작업을 수행할 수 있습니다.
    • 반환된 데이터의 헤더 정보 가져오기:
      `postman.getResponseHeader("")`
    • 전역 변수 설정:
      `postman.setGlobalVariable("variable_key", "variable_value");`

더 많은 기능은 공식 문서에서 볼 수 있습니다.

당신이 테스트 노동자라면 유명 기업과 대형 공장의 테스트 오픈을 위해 2022년 내부 프로모션 그룹을 설립했습니다.지난해 200명 이상의 학생들이 대형 공장에 들어갈 것을 내부적으로 추천했으며 최고 연봉은 70W+에 도달했습니다.아래를 클릭하여 내부 프로모션 채널에 들어가십시오:

1.3 코드 템플릿

Postman기능 영역 에서 제공되는 코드 템플릿 SNIPPETS은 이미 대부분의 상황을 해결할 수 있습니다.먼저 결과 판단과 관련된 몇 가지를 선택하여 설명하겠습니다.

상태 코드: 코드는 200

//根据返回的 Code 判断请求情况 
tests["Status code is 200"] = responseCode.code === 200;  

응답 본문: 문자열 포함

//判断返回的内容中是否存在“关键字”。(tests 的 key 可修改,将不再强调)  
tests["Body matches string"] = responseBody.has("这里可以改为你要判断的关键字内容");    
//如上文提到的:
//判断结果中是否存在 access_token 关键字
tests["has access_token"] = responseBody.has("access_token");

응답 본문: 문자열과 같음

//判断返回内容是否跟预期完全相等。
tests["Body is correct"] = responseBody === "这里可以改为你的预期内容";

응답 본문: JSON 값 확인

//上文提到,responseBody 为字符串类型,支持转为 Json 格式
var jsonData = JSON.parse(responseBody);
tests["Your test name"] = jsonData.value === 100;

응답 시간은 200ms 미만입니다.

//判断请求时长是否小于200ms ,具体时长按情况自定义
tests["Response time is less than 200ms"] = responseTime < 200;

위에서 설명한 기본 사항은 단일 인터페이스의 테스트를 완료하기에 충분하지만 배치 및 예약 작업이 없으면 의미가 없으므로 계속하십시오...

2 수집(배치) 테스트

일괄 테스트 및 인터페이스 관리를 수행하려면 테스트할 모든 인터페이스를 동일한 컬렉션에 저장해야 합니다 (Collections). 이는 동일한 폴더에 저장하는 것으로 생각할 수 있습니다. Postman먼저 다음의 단계를 살펴보십시오 .

위의 단계를 통해 우리는 테스트할 인터페이스 집합을 얻습니다.상황을 단순화하기 위해 내 쪽 각 인터페이스의 성공 조건은 code200인지 여부로 판단됩니다.

tests["Status code is 200"] = responseCode.code === 200;

2.1 배치 실행

위의 내용이 준비되면 테스트를 위해 인터페이스를 배치로 실행할 수 있습니다.

을 클릭 하면 Run새 페이지가 열립니다.

  • Environment: 인터페이스가 실행되는 환경을 전환할 때 사용합니다.여기서는 신경쓰지 않고 나중에 이야기하겠습니다.
  • Iteration: 인터페이스가 실행될 총 횟수를 설정하는 데 사용됩니다.
  • Delay: 각 인터페이스 실행 사이의 시간 간격을 밀리초 단위로 설정합니다.
  • Data File: 테스트 데이터 파일 업로드(아래 별도)

2.2 파라미터 데이터 변경

여러개의 인터페이스를 반복해서 실행시키는 방법은 이미 이해했지만, 지금 문제가 생겼는데 현재 단계에 따르면 인터페이스의 매개변수가 매번 실행될 때마다 같기 때문에 100번을 실행해도, 1000번을 실행해도 별 의미가 없다.

우리가 작성한 로그인 함수의 인터페이스를 살펴보겠습니다.

변수 사용

이제 로그인 계정 및 비밀번호 매개변수가 하드 코딩되어 있습니다. 즉, 몇 번 실행하든 이 계정을 사용하여 테스트합니다. 그렇다면 계정 비밀번호 매개변수에 다른 값을 사용해도 이상이 없는지 테스트하고 싶다면? (매번 수동으로 변경하고 싶다면 이 부분은 건너뛰셔도 됩니다/수동으로 웃기네요) 여기에서는 Postman아래 그림과 같이 에서 "변수"를 사용하는 방법에 대해 간략하게 설명합니다.

변수 참조 구문: { {변수 이름}} 그림에서 볼 수 있듯이 계정 및 비밀번호 필드의 매개 변수 값을 변수로 설정합니다. { {username}} 、{ {password}}. 이 두 변수가 아직 할당되지 않았기 때문에 수정 후 직접 클릭하여 실행하는 것은 물론 (Send)불가능 하지만 Pre-request Script패널에서 할당 작업을 수행할 수 있습니다.

사전 요청 스크립트

Pre-request Script요청이 실행되기 전에 스크립트 가 실행되고 요청이 완료된 후에 스크립트 가 실행된다는 Tests점을 제외하면 와 유사 합니다 . 따라서 스크립트를 사용하여 다음과 같이 기능 영역에서 위의 두 변수에 값을 할당할 수 있습니다.Pre-request ScriptTestsPre-request Script

//设置全局变量
postman.setGlobalVariable("username", "test1");
postman.setGlobalVariable("password", "123456");

그러나 Pre-request Script할당 작업을 사용하는 것은 여전히 ​​우리의 문제를 해결할 수 없습니다. 이 쓰기 방법에 따르면 몇 번 실행되더라도 여전히 테스트를 위해 고정된(하드 코딩된) 데이터를 사용하기 때문입니다. 물론 스크립팅 언어이기 때문에 더 유연하게 사용할 수 있기 때문에 여기서는 다루지 않겠습니다.

테스트 데이터 세트

Data File다음으로 컬렉션을 실행하기 전에 이 옵션이 해당 변수에 할당할 테스트 데이터(파일)를 업로드하는 데 사용된다는 점에 대해 설명합니다 . CSV다음 형식의 테스트 데이터를 예로 들어 보겠습니다 .

    username,password
    test1,123456
    test2,222222
    test3,123456
    test4,444444

데이터 형식은 표와 유사합니다.첫 번째 줄은 해당 변수 이름을 나타내고, 다음 4줄은 계정 암호 데이터 4세트를 나타냅니다.(2개는 올바른 데이터임) 위 샘플 데이터의 내용과 접미사 이름을 파일로 저장한 후 다시 테스트를 시작하여 효과를 확인합니다.실행 횟수를 4(테스트 데이터 4세트에 해당)로 선택하고 실행할 해당 파일을 선택하면 실제로 결과가 예상한 대로임을 알 수 .csv있습니다 CSV. 인터페이스 Request실행 결과는 2번의 성공과 2번의 실패입니다. 즉, 서로 다른 계정 암호의 테스트 데이터가 각 실행에 할당됩니다(최신 데스크톱 클라이언트 버전에서는 각 요청의 특정 요청 상태를 볼 수 있으므로 여기에서 자세히 설명하지 않겠습니다).

파일을 사용하는 경우 Json형식은 다음과 같습니다.

    [
      {
        "username": "test1",
        "password": "123456"
      },
      {
        "username": "test2",
        "password": "222222"
      },
      {
        "username": "test3",
        "password": "123456"
      },
      {
        "username": "test4",
        "password": "444444"
      }
    ]

2.3 일반 작업

PostmanMonitors1시간에 1회 테스트와 같이 테스트 작업을 제출하고 설정된 타이머에 따라 실행할 수 있는 (모니터) 기능을 제공합니다 .구체적인 작업은 다음과 같습니다.

3 요청 종속성 문제

인터페이스 결과 판단 및 수금 배치 테스트에 대해 이야기한 후 더 복잡한 상황, 즉 종속 요청 문제를 살펴보겠습니다.예를 들어 쇼핑 주문 인터페이스에 액세스하려면 로그인이 필요합니다. 그러나 대부분의 종속성 문제는 실제로 인터페이스 간의 데이터 전송 문제입니다.예를 들어 로그인 인터페이스를 호출한 후 식별자가 반환되면 주문 인터페이스를 요청할 때 요청과 함께 매개 변수만 전달하면 token됩니다 token. 따라서 문제는 다음과 같이 됩니다.

  • 보장된 인터페이스 호출 순서
  • 인터페이스 A에서 반환된 데이터를 후속 인터페이스 B, C 및 D로 전달

3.1 인터페이스 실행 순서

먼저 다음에 언급할 인터페이스들은 기본적으로 동일한 컬렉션에 속해 있음을 설명하겠습니다 (Collections).

여전히 위에서 생성한 인터페이스 모음을 예로 들어 배치 테스트 결과에 주의를 기울이면 인터페이스의 실행 순서가 실제로 여기 디렉토리의 순서(위에서 아래로)를 따른다는 것을 알 수 있습니다 Request1 -> Request2 -> Request3.

여기의 인터페이스 이름은 약간 오해의 소지가 있을 수 있으므로 다시 강조하고 싶습니다. 디렉터리에서 위에서 아래로 순서대로 실행합니다(사전 정렬과 관련 없음).

따라서 이 기본 실행 순서를 사용하여 먼저 실행해야 하는 인터페이스를 배치할 수 있습니다. 예를 들어 "로그인 인터페이스"를 먼저 배치할 수 있습니다.

3.1.2 사용자 지정 실행 순서

물론 기본 실행 시퀀스가 ​​하나만 있는 경우 일반적으로 복잡한 비즈니스 요구 사항을 충족할 수 없으므로 지정된 인터페이스로 이동하여 실행을 계속할 수 있도록 지원하는 Postman함수를 제공합니다 postman.setNextRequest("填写你要跳转的接口名"). 예를 들면 다음과 같습니다.

인터페이스를 성공적으로 실행한 후에 Request1는 다시 실행할 필요 없이 인터페이스 Request2로 직접 점프한 다음 인터페이스의 기능 영역에서 다음과 같은 점프 코드를 실행할 Request3수 있습니다 .Request1Tests

참고할 몇 가지 사항은 다음과 같습니다.

1. postman.setNextRequest()수집 테스트를 실행할 때만 적용됩니다. 즉, (Send)인터페이스 만 실행하면 Request1기능이 작동하지 않습니다.

2. 에서 수집 테스트를 성공적으로 실행한 후 이후에 인터페이스가 있으면 후속 인터페이스가 기본 순서로 계속 실행됩니다. 즉, 그림의 인터페이스가 Request1 -> Request3계속 실행됩니다. 3. 지정된 점프 인터페이스는 동일한 세트에 속해야 합니다. 4. 함수가 스크립트의 어디에서 호출되든 실제로는 현재 스크립트의 끝에서만 실행됩니다. 예를 들어 두 번째 줄을 그림의 첫 번째 줄과 상호 변조하면 두 번째 코드 줄은 점프 기능을 실행한 후에도 여전히 실행됩니다.Request3Request4



setNextRequest()Tests

따라서 setNextRequest()함수를 사용하여 조건에 따라 불필요한 인터페이스를 건너뛰거나 자체 로직 테스트를 구축할 수 있습니다.

3.2 데이터 전송

데이터 전송에 대해 이야기하기 전에 Postman.

3.2.1 전역 변수

전역 변수의 개념은 실제로 위의 Pre-request Script에서 간단히 언급되었습니다 . 즉, 스크립트 코드를 통해 전역 변수를 설정할 수 있으며 위 스크립트를 실행하면 효과를 볼 수 있습니다.

username실행 후 및 의 두 변수가 성공적으로 저장되었음을 알 수 있으며 password다음과 같은 변수 참조 구문을 통해 모든 인터페이스에서 { {username}}사용할 수 있습니다.

또한 Postman코드에서 전역 변수를 설정하는 방법을 지원할 뿐만 아니라 시각적 작업도 지원합니다.

해당 인터페이스에 들어가면 다음을 직접 관리할 수 있습니다.

3.2.2 다중 환경 구분 및 전환

일반적으로 인터페이스는 테스트 버전과 온라인 버전(또는 그 이상)으로 나뉘며 그 차이는 다를 수 있으므로 ULR전역 변수는 이 문제를 해결하는 데 적합하지 않습니다.

매개변수 생성

위의 그림에서 다양한 환경에 대한 여러 매개변수 "컬렉션"을 생성했음을 알 수 있습니다. 다시 살펴보겠습니다.

다음과 같이 각 환경에서 매개 변수를 만들었습니다 host.

물론 환경 매개변수는 스크립트를 통해 설정할 수도 있습니다. 기능은 다음과 같습니다.

//注意,该参数只添加到你当前选择的环境的“参数集”中
postman.setEnvironmentVariable("variable_key", "variable_value");

사용 및 전환

환경 "매개 변수 집합"에서 매개 변수의 사용은 그림에 표시된 대로 전역 변수와 일치하며, 서로 { {host}}다른 환경 간의 전환은 아래 그림에 표시되어 있습니다.

3.3 종속성 문제 해결

Postman위의 예비 지식을 습득한 후 이를 사용하여 종속성이 있는 인터페이스 테스트를 해결하는 방법을 살펴보겠습니다 .

가상 시나리오

인터페이스는 Request1로그인 인터페이스이며 성공적인 로그인은 access_token식별자로 필드를 반환합니다(구현됨). 그리고 그 인터페이스가 정상적으로 접속하기 Request3위해서는 로그인과 함께 반환되어야 하는 주문을 하기 위한 인터페이스라고 가정하자.access_token

생각의 기차

1. 이전에 실행되도록 보장 Request12. 에서 반환된 값을 환경 변수 "매개 변수 집합"에 추가합니다 . 3. 요청시 값을 인용하십시오.Request3
Request1access_token
Request3access_token

특정 비즈니스 상황에 따라 반환 값을 "전역 변수" 또는 "환경 변수"에 저장합니다. access_token 이 예제의 값은 환경과 관련되므로 여기서는 저장하도록 설정된 환경 변수를 사용하도록 선택합니다.

Postman의 작업

1. 2. 의 코드는 카탈로그에서 Request1먼저 실행되도록 보장되었습니다 .
Request1Tests

if(responseCode.code === 200 && responseBody.has("access_token")){
    //如果 code 为 200, 并且返回的数据中存在 access_token 关键字,则认为登录成功
    tests["login"] = true;

    //将返回的内容转为 json 格式,并且取到 access_token 内容,添加到环境变量中
    var jsonData = JSON.parse(responseBody);
    //access_token的取值方式视具体的 json 数据结构而定
    postman.setEnvironmentVariable("token",jsonData.result.access_token);  

    //跳转到 Request3 接口
    postman.setNextRequest("Request3")

}else{
    tests["login"] = false;

    //登录失败,可以选择跳转到对应失败后的处理接口进行测试
    //postman.setNextRequest("Other Request")
}

3. 인터페이스 Request3에서 변수 사용 token:

> 我这边是将 `token` 放在头部信息中, 具体使用方式时接口参数规则而定。

실행하고 결과 보기

수집 테스트를 실행하면 결과가 예상과 일치하고 Request1테스트 Request3가 통과, Request2건너뛰고 Request4여전히 실행되고 있음을 확인할 수 있습니다. 완료…

추천

출처blog.csdn.net/a448335587/article/details/131773243