API 테스트로 코드 커버리지 향상

코드 적용 범위는 자동화된 테스트에서 테스트되고 적용되는 소스 코드의 라인 수를 결정하는 중요한 품질 메트릭입니다. 일반적으로 개발자는 단위 테스트(코드 적용 범위를 생성하는 가장 인기 있는 테스트)를 작성하여 80%에 가까운 코드 적용 범위를 달성합니다.

타겟 코드



일반적으로 단위 테스트는 행복한 경로, 핵심 비즈니스 논리 및 드물게 슬픈 경로를 대상으로 합니다. 거의 80%에 가까운 코드 커버리지를 제공할 수 있습니다. 소스 코드의 나머지 20%는 외부 인터페이스 및 예외/오류 처리를 담당할 수 있습니다. 단위 테스트는 일반적으로 외부 애플리케이션 및 데이터베이스와 상호 작용하는 외부 인터페이스 로직 테스트를 생략합니다.

SDLC의 초기 단계에서 외부 인터페이스 로직을 테스트하는 것은 양질의 소프트웨어 제품을 제공하는 데 매우 중요합니다.

API 테스트



API 테스트는 이제 애플리케이션 로직에 대한 기본 인터페이스 역할을 하기 때문에 테스트 자동화에 매우 중요합니다. API 테스트는 애플리케이션의 코드 범위와 제품에 대한 전반적인 신뢰도를 크게 향상시킬 수 있습니다.

API 테스트에서 코드 커버리지를 얻는 방법을 살펴보겠습니다.

예시



이 예에서는 기본 Node.js 웹 애플리케이션을 살펴보겠습니다.

소스 코드



express에 작성된 샘플 웹 앱 서버를 살펴보십시오. (Express는 최소한의 유연한 Node.js 웹 애플리케이션 프레임워크입니다.)

// index.js
const express = require('express');
const app = express();
const port = 3333;

app.get('/hello', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

응용 프로그램을 실행하려면 터미널에서 아래 명령을 실행하십시오.

node index.js

API 테스트



PactumJSmocha 을 사용하여 작성된 샘플 API 테스트를 살펴보십시오.


pacumjs / 계약


테스트 피라미드의 모든 수준에 대한 REST API 테스트 도구






// app.test.js
const pactum = require('pactum');

describe('App', () => {

  it('GET /hello', async () => {
    await pactum.spec()
      .get('http://localhost:3333/hello')
      .expectStatus(200)
      .expectBody('Hello World!');
  });

});


테스트를 실행하려면 터미널에서 아래 명령을 실행하십시오.

mocha app.test.js


코드 커버리지



응용 프로그램을 실행하고 이에 대한 테스트를 실행하는 방법을 살펴보았습니다. API 테스트에서 코드 커버리지를 생성하기 위해 nyc 이라는 npm 패키지를 사용합니다.

전역으로 패키지 설치

npm i nyc -g


이제 이 마법 도구 nyc로 애플리케이션을 실행하십시오.

nyc node index.js




산출



테스트 실행

mocha app.test.js




산출


CTRL + c를 눌러 애플리케이션을 중지합니다. 이제 nyc 도구가 터미널에서 코드 적용 범위를 생성하고 표시합니다.


산출



For real and complex web applications, the code-coverage setup might not be straightforward. It might require additional steps and advanced configurations.



결론



API 테스트의 중요성은 나날이 커지고 있습니다. 이러한 테스트를 사용하여 응용 프로그램을 검증할 뿐만 아니라 코드 적용 메트릭을 생성하는 것도 추가적인 이점입니다.

대부분의 시나리오에서 간단한 API 테스트는 많은 양의 소스 코드를 다룰 수 있습니다. 이는 더 적은 수의 API 테스트로 더 많은 코드 적용 범위와 애플리케이션에 대한 확신을 얻을 수 있음을 의미합니다.

좋은 웹페이지 즐겨찾기