이 심도 있는 API 테스팅 자습서는 API 테스팅, 웹 서비스 및 조직에서 API 테스팅을 도입하는 방법에 대한 모든 것을 설명합니다.
이 입문 튜토리얼에서 shift-left 테스트 및 웹 서비스의 개념.
웹 API와 같은 개념, API가 작동하는 방식(실제 예 포함) 및 웹 서비스와 어떻게 다른지는 이 예제에서 잘 설명되어 있습니다. tutorial.
API 테스트 자습서 목록
튜토리얼 #1: API 테스트 자습서: 초보자를 위한 전체 가이드
튜토리얼 #2: 웹 서비스 튜토리얼: 구성 요소, 아키텍처, 유형 & 예
튜토리얼 #3: 상위 35개의 ASP.Net 및 웹 API 인터뷰 질문과 답변
튜토리얼 #4: POSTMAN 튜토리얼: API 테스팅 POSTMAN 사용
자습서 #5: Apache HTTP 클라이언트를 사용한 웹 서비스 테스트
이 API 테스트 시리즈의 자습서 개요
Tutorial # | 학습 내용 | |||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tutorial_#1: | API 테스트 자습서 : A Complete Guide For Beginners 이 심층 API 테스팅 튜토리얼은 API 테스팅 및 웹 서비스에 대한 모든 것을 자세히 설명하고 조직에서 API 테스팅을 도입하는 방법에 대해서도 교육합니다. | |||||||||||||||||||||||||||||||||||||||||||||
Tutorial_#2: | 웹 서비스 자습서: 구성 요소, 아키텍처, 유형 & 예 이 웹유효한 응답과 유효하지 않은 응답에 대한 API 응답의 정확성은 실제로 중요합니다. 테스트 API에서 응답으로 상태 코드 200(모두 OK를 의미)을 받았지만 응답 텍스트에 오류가 발생했다고 표시되면 이는 결함입니다. 또한 오류 메시지가 그 자체가 올바르지 않으면 이 API와 통합하려는 최종 고객에게 매우 오해의 소지가 있을 수 있습니다. 아래 스크린샷에서 사용자는 허용되는 2267Kgs보다 큰 잘못된 무게를 입력했습니다. API는 오류 상태 코드 및 오류 메시지로 응답합니다. 그러나 오류 메시지에 무게 단위가 KG가 아닌 lbs로 잘못 언급되어 있습니다. 이는 최종 고객을 혼란스럽게 할 수 있는 결함입니다. (ii) 로드 및 성능 테스트API는 설계상 확장 가능하도록 설계되었습니다. 그러므로 특히 설계 중인 시스템이 요구 사항에 따라 분당 또는 시간당 수천 건의 요청을 처리할 것으로 예상되는 경우 로드 및 성능 테스트가 필수적입니다. API에서 정기적으로 로드 및 성능 테스트를 수행하면 성능, 최대 로드 및 중단점을 벤치마킹하는 데 도움이 될 수 있습니다. 이 데이터는 애플리케이션 확장을 계획하는 동안 유용합니다. 이 정보를 사용할 수 있으면 특히 조직이 더 많은 고객을 추가할 계획인 경우 결정 및 계획을 지원하는 데 도움이 됩니다.요청합니다. 조직에서 API 테스트를 도입하는 방법모든 조직에서 API 테스트를 도입하는 프로세스는 다른 테스트 도구 및 프레임워크를 구현하거나 롤아웃하는 데 사용되는 프로세스와 유사합니다. 아래 표에는 주요 단계와 각 단계의 예상 결과가 요약되어 있습니다.
일반적인 문제 및 이를 완화하는 방법QA 팀이 일반적으로 겪는 몇 가지 문제에 대해 논의해 보겠습니다. 조직에서 API 테스트 프레임워크를 구현하려고 시도하는 동안 직면하게 됩니다. #1) 올바른 도구 선택작업에 적합한 도구를 선택하는 것이 가장 일반적인 문제입니다. 시장에서 사용할 수 있는 여러 API 테스트 도구가 있습니다. 시장에서 사용할 수 있는 가장 최신의 가장 비싼 도구를 구현하는 것이 매우 매력적으로 보일 수 있지만 원하는 결과를 가져오지 않으면 해당 도구는 소용이 없습니다. 따라서 항상 조직의 요구 사항에 따라 '필수' 요구 사항을 해결하는 도구를 선택하세요. 여기에 대한 샘플 도구 평가 매트릭스가 있습니다. 사용 가능한 API 도구
#2) 누락된 테스트 사양테스터로서 우리는 알아야 합니다. 응용 프로그램을 효과적으로 테스트하기 위한 예상 결과. 예상 결과를 알기 위해서는 명확하고 정확한 요구사항이 필요하기 때문에 이는 어려운 경우가 많습니다. 하지만 이는 사실이 아닙니다. 예 의 경우 아래 제공된 요구사항을 고려하세요. “신청서는 유효한 배송 날짜만 수락해야 하며 유효하지 않은 모든 요구 사항은 거부되어야 합니다.” 이러한 요구 사항에는 주요 세부 정보가 누락되어 있고 매우 모호합니다. 유효한 날짜를 어떻게 정의합니까? 형식은 어떻습니까? 최종 사용자 등에게 거부 메시지를 반환합니까? 명확한 요구 사항의 예: 1) 애플리케이션은 유효한 배송 날짜를 수락하십시오. 배송 날짜는 다음과 같은 경우 유효한 것으로 간주됩니다.is
2) 응답 상태 코드 = 200 메시지: OK 3) 위의 기준을 충족하지 않으면 무효로 간주됩니다. 고객이 잘못된 배송 날짜를 보내는 경우 다음 오류 메시지로 응답해야 합니다. 3.1 응답 상태 코드 NOT 200 오류: 제공된 배송 날짜가 잘못되었습니다. 날짜가 DD/MM/YYYY 형식인지 확인하십시오. 3.2 응답 상태 코드 NOT 200 오류: 제공된 배송 날짜는 다음과 같습니다. 지난 #3) 학습 곡선앞서 언급한 바와 같이 API 테스트에 대한 접근 방식은 GUI 기반 애플리케이션을 테스트할 때 따르는 접근 방식과 비교할 때 다릅니다. 만약 API 테스트를 위해 사내 또는 컨설턴트를 고용하는 경우 API 테스트 접근 방식 또는 API 테스트 도구의 학습 곡선이 최소화될 수 있습니다. 이 경우 모든 학습 곡선은 제품 또는 애플리케이션 지식 획득과 관련이 있습니다. 기존 팀원이 API 테스트를 학습하도록 할당된 경우 선택한 도구에 따라 학습 곡선은 다음과 같을 수 있습니다. 테스트 접근 방식 변경과 함께 중간에서 높음으로 변경합니다. 제품 또는 애플리케이션 자체에 대한 학습 곡선은 이 테스터가 테스트했는지 여부에 따라 낮거나 중간일 수 있습니다. #4) 기존 기술이것은 학습 곡선에 대한 이전 요점과 직접적으로 연결됩니다. 테스터가 GUI 기반 테스트인 경우 테스터는 필요에 따라 테스트 접근 방식을 변경하고 새로운 도구 또는 프레임워크를 배워야 합니다. 예 API가 JSON 형식의 요청을 수락하면 테스터는 테스트 생성을 시작하기 위해 JSON이 무엇인지 알아야 합니다. 사례 연구작업 기존 애플리케이션을 확장하기 위해 한 회사에서 표준 GUI 애플리케이션뿐만 아니라 API로 제품을 제공하기를 원했습니다. QA 팀은 일반 GUI 기반 테스트를 넘어서는 API 테스트를 수용할 준비가 되었는지 확인하기 위해 테스트 범위 계획을 제공하라는 요청을 받았습니다. 도전 과제
위험을 완화하고 문제를 해결하기 위해 팀이 따르는 접근 방식
결론API 기반 응용 프로그램은 최근에 인기를 얻었습니다. 이러한 응용 프로그램은 더 많은기존 애플리케이션/소프트웨어에 비해 확장 가능하고 다른 API 또는 애플리케이션과 쉽게 통합할 수 있습니다. 이 API 테스트 자습서에서는 API 테스트, Shift Left 테스트, 웹 서비스 및 웹 API에 대해 자세히 설명했습니다. 또한 예제를 통해 웹 서비스와 웹 API의 차이점을 살펴보았습니다. 튜토리얼의 두 번째 부분에서는 API 테스팅의 전체 스펙트럼, 조직에 API 테스팅을 도입하는 방법 및 몇 가지 일반적인 과제에 대해 논의했습니다. 이 프로세스는 이를 위한 솔루션과 함께 제공됩니다. 예제와 함께 웹 서비스에 대해 자세히 알아보려면 곧 제공될 튜토리얼을 확인하세요!! 다음 튜토리얼 서비스 자습서에서는 아키텍처, 유형 및 유형에 대해 설명합니다. 중요한 용어와 함께 웹 서비스의 구성 요소 및 SOAP와 REST의 차이점. | |||||||||||||||||||||||||||||||||||||||||||||
Tutorial_#3: | 답변이 포함된 상위 35개의 ASP.Net 및 웹 API 인터뷰 질문 답변이 있는 가장 인기 있는 자주 묻는 ASP.Net 및 웹 API 인터뷰 질문 목록을 탐색할 수 있습니다. 이 자습서에서는 초보자와 숙련된 전문가를 위한 예제를 제공합니다. | |||||||||||||||||||||||||||||||||||||||||||||
Tutorial_#4: | POSTMAN 자습서: API 테스트 POSTMAN 이 단계별 자습서에서는 POSTMAN의 기본 사항, 구성 요소 및 샘플 요청과 함께 POSTMAN을 사용하여 API 테스트를 설명합니다. 이해하기 쉽도록 간단한 용어로 응답합니다. | |||||||||||||||||||||||||||||||||||||||||||||
Tutorial_#5: | Apache HTTP 클라이언트를 사용한 웹 서비스 테스트 이 API 튜토리얼은 웹 서비스에서 다양한 CRUD 작업을 수행하고 Apache HTTP 클라이언트를 사용하여 웹 서비스를 테스트하는 방법입니다. |
API 테스트 튜토리얼
이 섹션은 웹 서비스 및 웹 API에 대한 기본적인 이해를 돕고, 이는 곧 이 API 테스팅 시리즈의 자습서에서 주요 개념을 이해하는 데 도움이 될 것입니다.
API ( 응용 프로그램 프로그래밍 인터페이스)의 데이터 또는 기능에 액세스하여 응용 프로그램을 만들 수 있는 모든 절차 및 기능 집합입니다.운영 체제 또는 플랫폼. 이러한 절차의 테스트를 API 테스팅이라고 합니다.
Shift Left 테스팅
현재 API 테스팅 인터뷰에서 요구되는 중요한 테스트 유형 중 하나는 Shift Left 테스팅입니다. 이러한 유형의 테스트는 애자일 방법론을 따르는 거의 모든 프로젝트에서 실행됩니다.
Shift Left 테스트가 도입되기 전에는 코딩이 완료되고 코드가 테스터에게 전달된 후에만 소프트웨어 테스트가 눈에 띄었습니다. 이러한 관행은 마감 시간을 맞추기 위해 막판에 허둥지둥하게 만들었고 제품 품질에도 큰 지장을 초래했습니다.
개발자가 설계 및 코딩 단계를 모두 다시 거쳐야 했기 때문에 막대했습니다.
Shift Left 테스트 전 소프트웨어 개발 수명 주기(SDLC)
전통적인 SDLC 흐름은 다음과 같았습니다. 요구 사항 – > 디자인 –> 코딩 –> 테스팅.
기존 테스팅의 단점
- 테스팅은 극단적이다. 마지막 순간에 버그가 확인되면 많은 비용이 발생합니다.
- 버그를 해결하고 프로덕션으로 승격하기 전에 다시 테스트하는 데 소요되는 시간이 엄청납니다.
따라서, 테스트 단계를 왼쪽으로 옮기는 새로운 아이디어가 떠오른 결과 왼쪽으로 이동 테스트가 시작되었습니다.
추천 읽기 => 왼쪽으로 이동 테스트: A소프트웨어 성공을 위한 비밀 만트라
왼쪽 시프트 테스트의 단계
왼쪽 시프트 테스트는 결함 감지에서 결함 방지로의 성공적인 마이그레이션으로 이어졌습니다. 또한 소프트웨어가 빠르게 실패하고 모든 오류를 조기에 수정하는 데 도움이 되었습니다.
웹 API
일반적으로 웹 API는 클라이언트의 요청을 받는 것으로 정의할 수 있습니다. 시스템을 웹 서버로 보내고 웹 서버에서 클라이언트 시스템으로 응답을 다시 보냅니다.
API는 어떻게 작동합니까?
여러 항공사의 정보를 집계하는 온라인 여행 서비스인 www.makemytrip.com에서 항공편을 예약하는 매우 일반적인 시나리오를 살펴보겠습니다. 항공편 예약 시 여행 날짜/귀국 날짜, 클래스 등의 정보를 입력하고 검색을 클릭합니다.
여러 항공사의 가격과 이용 가능 여부가 표시됩니다. 이 경우 애플리케이션은 여러 항공사의 API와 상호 작용하여 항공사 데이터에 대한 액세스 권한을 부여합니다.
또 다른 예는 www.trivago.com으로, 여러 호텔의 가격, 가용성 등을 비교하고 나열합니다. 특정 도시에서. 이 웹사이트는 여러 호텔의 API와 통신하여 데이터베이스에 액세스하고 웹사이트에서 가격과 가용성을 나열합니다.
따라서 웹 API는 "클라이언트 시스템과 클라이언트 시스템 간의 통신을 용이하게 하는 인터페이스"로 정의할 수 있습니다. 그만큼webserver”.
웹 서비스
웹 서비스는 (Web API와 같이) 한 시스템에서 다른 시스템으로 서비스를 제공하는 서비스입니다. 그러나 API와 웹 서비스 간에 발생하는 주요 차이점은 웹 서비스가 네트워크를 사용한다는 것입니다.
모든 웹 서비스는 웹 API이지만 모든 웹 API는 웹 서비스가 아닙니다(설명 참조). 기사 후반부). 따라서 웹 서비스는 웹 API의 하위 집합입니다. 웹 API 및 웹 서비스에 대한 자세한 내용은 아래 다이어그램을 참조하십시오.
웹 API 대 웹 서비스
웹 서비스 대 웹 API
웹 API와 웹 서비스는 모두 클라이언트와 서버 간의 통신을 용이하게 하는 데 사용됩니다. 주요 차이점은 통신 방식에만 있습니다.
각각은 특정 언어로 허용되는 요청 본문이 필요하고 보안 연결을 제공하는 차이점, 서버와 통신하고 응답하는 속도가 다릅니다.
웹 서비스와 웹 API의 차이점은 참조용으로 아래에 나열되어 있습니다.
웹 서비스
- 웹 서비스는 일반적으로 XML(Extensible Markup Language)을 사용하므로 더 안전합니다.
- 웹 서비스는 데이터 전송 중에 웹 서비스와 API 모두 SSL(Secure Socket Layer)을 제공하므로 더 안전합니다. 이지만 WSS(웹 서비스 보안)도 제공합니다.
- 웹 서비스는 웹 API의 하위 집합입니다. 예를 들어 웹 서비스는 SOAP, REST 및 XML-RPC의 세 가지 사용 스타일만 기반으로 합니다.
- 웹 서비스가 작동하려면 항상 네트워크가 필요합니다.
- 웹 서비스는 “하나의 코드로 다른 애플리케이션”을 지원합니다. 이는 보다 일반적인 코드가 여러 애플리케이션에 걸쳐 작성됨을 의미합니다.
Web API
- Web API는 일반적으로 JSON(JavaScript Object Notation)을 사용합니다. 이는 웹 API가 더 빠르다는 것을 의미합니다.
- 웹 API는 XML과 달리 JSON이 가볍기 때문에 더 빠릅니다.
- 웹 API는 웹 서비스의 상위 집합입니다. 예를 들어 웹 API에도 세 가지 스타일의 웹 서비스가 모두 존재하지만 그 외에 JSON – RPC와 같은 다른 스타일을 사용합니다.
- 웹 API가 반드시 필요한 것은 아닙니다. 작동할 네트워크.
- 웹 API는 시스템 또는 애플리케이션의 특성에 따라 상호 운용성을 지원할 수도 있고 지원하지 않을 수도 있습니다.
조직에서 API 테스트 소개
일상 생활에서 우리 모두는 API를 사용하여 앱과 상호 작용하는 데 너무 익숙하지만 기본 기능을 구동하는 백엔드 프로세스에 대해서는 생각조차 하지 않습니다.
예를 들면 , Amazon.com에서 제품을 탐색하다가 정말 마음에 드는 제품/거래를 보고 이를 Facebook 네트워크와 공유하고 싶다고 가정해 보겠습니다.
클릭하는 순간 페이지의 공유 섹션에 있는 Facebook 아이콘에서공유할 Facebook 계정 자격 증명, Amazon 웹사이트를 Facebook에 원활하게 연결하는 API와 상호 작용하고 있습니다.
API 테스트로 초점 이동
API 테스트에 대해 자세히 논의하기 전에 그 이유에 대해 논의하겠습니다. 최근 API 기반 애플리케이션이 인기를 얻고 있습니다.
조직이 API 기반 제품 및 애플리케이션으로 전환하는 데는 몇 가지 이유가 있습니다. 그 중 일부는 참조용으로 아래에 나열되어 있습니다.
#1) API 기반 애플리케이션은 기존 애플리케이션/소프트웨어에 비해 확장성이 뛰어납니다. 코드 개발 속도가 더 빨라지고 동일한 API가 주요 코드나 인프라 변경 없이 더 많은 요청을 처리할 수 있습니다.
#2) 개발 팀은 매번 처음부터 코딩을 시작할 필요가 없습니다. 기능 또는 애플리케이션 개발 작업을 시작하는 시간입니다. API는 기존의 반복 가능한 기능, 라이브러리, 저장 프로시저 등을 가장 자주 재사용하므로 이 프로세스를 통해 전반적으로 생산성을 높일 수 있습니다.
예를 들어, 전자상거래 웹사이트에서 Amazon을 결제 프로세서로 추가하려는 경우 코드를 처음부터 작성할 필요가 없습니다.
다음을 사용하여 웹사이트와 Amazon API 간의 통합을 설정하기만 하면 됩니다. 결제 중 결제 처리를 위한 통합 키 및 호출 Amazon API.
#3) API는지원되는 독립 실행형 애플리케이션 및 API 기반 소프트웨어 제품 모두를 위해 다른 시스템과 쉽게 통합할 수 있습니다.
예를 들어 토론토에서 뉴욕으로 화물을 보내고 싶다고 가정해 보겠습니다. . 온라인에서 잘 알려진 Freight 또는 Logistics 웹사이트로 이동하여 필요한 정보를 입력합니다.
필수 정보를 제공한 후 Get Rates 버튼을 클릭하면 백엔드에서 이 물류 웹사이트가 연결될 수 있습니다. 여러 운송업체 및 서비스 제공업체 API와 애플리케이션을 사용하여 출발지에서 목적지까지의 위치 조합에 대한 동적 요금을 얻습니다.
API 테스트의 전체 스펙트럼
API 테스트는 요청 전송에 국한되지 않습니다. API에 연결하고 정확성에 대한 응답만 분석합니다. API는 취약점에 대한 다양한 로드에서 성능을 테스트해야 합니다.
자세히 논의하겠습니다.
(i) 기능 테스트
기능 테스트는 GUI 인터페이스가 없기 때문에 어려운 작업이 될 수 있습니다.
API에 대한 기능 테스트 접근 방식이 GUI 기반 애플리케이션과 어떻게 다른지 살펴보고 이에 대한 몇 가지 예도 논의하겠습니다.
a) 가장 분명한 차이점은 상호 작용할 GUI가 없다는 것입니다. 일반적으로 GUI 기반 기능 테스트를 수행하는 테스터는 비 GUI 애플리케이션 테스트로 전환하는 것이 조금 더 어렵다는 것을 알게 됩니다.이미 익숙한 사람입니다.
처음에는 API 테스트를 시작하기 전에도 인증 프로세스 자체를 테스트하고 확인해야 합니다. 인증 방법은 API마다 다르며 인증을 위해 일종의 키 또는 토큰이 필요합니다.
API에 성공적으로 연결할 수 없으면 추가 테스트를 진행할 수 없습니다. 이 프로세스는 로그인하고 응용 프로그램을 사용하기 위해 유효한 자격 증명이 필요한 표준 응용 프로그램의 사용자 인증과 유사하다고 간주할 수 있습니다.
b) 테스트 필드 유효성 검사 또는 입력 데이터 유효성 검사는 매우 중요합니다. API를 테스트하는 동안. 실제 양식 기반(GUI) 인터페이스를 사용할 수 있는 경우 프런트 엔드 또는 백 엔드에서 필드 유효성 검사를 구현하여 사용자가 잘못된 필드 값을 입력할 수 없도록 할 수 있습니다.
예를 들어 애플리케이션의 날짜 형식이 DD/MM/YYYY여야 하는 경우 정보를 수집하는 양식에 이 유효성 검사를 적용하여 애플리케이션이 유효한 날짜를 수신하고 처리하는지 확인할 수 있습니다.
그러나 이것은 API 응용 프로그램과 동일하지 않습니다. 우리는 API가 제대로 작성되고 이러한 모든 유효성 검사를 시행하고 유효한 데이터와 잘못된 데이터를 구분하고 응답을 통해 최종 사용자에게 상태 코드 및 유효성 검사 오류 메시지를 반환할 수 있는지 확인해야 합니다.
c) 테스트