2017-11-01 12 views
0

내가 Trello REST API를 대상으로 다음 오이 기능/시나리오 작성했습니다 재설정 : 그러나명중 Trello 오이 테스트 경험을위한 API 및 테스트 Trello 보드의 상태를 얻으려고 노력에 붙어이

Feature: Change existing board details 
    In order to keep my boards up to date 
    As Trello member 
    I want to be able to edit board details 

Scenario: Update the board name 
    Given I have an existing board with id 59f8c6debdf037ee708c302f 
    When I request to update the name 
    Then the name of the board should change 

를, 내가 한 번 내 테스트를 통해 실행하면 보드 이름이 초기 상태로 재설정되지 않기 때문에 이후의 모든 테스트가 실패합니다. 여기에서 초기 이름과 일치합니다 (하지만 테스트를 실행하면 업데이트 된 이름으로 변경됩니다).

[Given("I have an existing board with id (.*)")] 
    public void GivenIHaveAnExistingBoard(string id) 
    { 
     request = restHelper.GetBoard(id); 

     if (request.StatusCode == HttpStatusCode.OK) 
     { 
      board = JsonConvert.DeserializeObject<Board>(request.Content); 
      testBoardId = board.Id; 
      Assert.That(board.Name, Is.EqualTo(initialBoardName)); 
     } 
     else 
     { 
      Console.Write(String.Format("Request unsuccessful with status code {0}", request.StatusCode)); 
     } 
    } 

나는 Given ste p는 테스트를 실행하기 전에 보드 이름을 초기 이름으로 설정하지만, 필자는 설치 중에 REST 쿼리 (보드 이름을 바꾸려면 끝점에 PUT 요청)를 사용하고 있다는 것을 깨달았습니다. 이것은 잘못된 것 같습니다. 테스트를 실행하기 전에 내 테스트 Trello 보드가 기본 상태로 돌아가는 더 좋은 방법이 있습니까?

+0

또 다른 옵션은 Before Hook에 정리 코드가 있지만 Trello API에 대한 PUT 요청은 보드 이름을 원래 값으로 되 돌리는 데 여전히 필요합니다. 테스트 코드에 새로운 PUT 요청을 작성하여 테스트중인 메소드를 클린업 코드에서 격리 된 상태로 유지할 수 있지만 일부 코드 중복이 발생합니다 ... –

+0

왜 Trello API를 테스트하고 있습니까? 확실히 Trello는 API 자체를 테스트합니다. 외부 서비스를 테스트하는 것은 오이가 설계된 것이 아니므로 작업에 잘못된 도구를 사용하고 있거나 전혀 작업을 수행 할 필요가 없을 수도 있습니다! – diabolist

+0

@diabolist API를 통해 타사 소프트웨어를 테스트하기위한 다양한 메커니즘을 시험 중입니다. 나는 Trello를 테스트하려고하지 않고 있으며, 단지 무료이고 문서화 된 옵션이었습니다. :) 당신의 두 번째 요점 - 외부 서비스가 오이에 잘 맞지 않는지 테스트하는 것 - 기본적으로 정확히 내가 측정 한 것입니다.이 노트에서 비 기술적 인 사람과 기술자가 협력하여 타사 소프트웨어에 대한 테스트를 만들 수있는 다른 옵션을 제안합니까 (솔루션 수준 테스트가 아닌 단위 테스트)? –

답변

0

오이는 기존 소프트웨어를 테스트하기위한 도구가 아니고 다른 사람의 소프트웨어를 테스트하기위한 도구가 아니라 기존 API를 테스트하는 도구가 아닌 소프트웨어 개발 도구입니다.

오이를 사용하여 몇 가지 방법으로 자신의 API를 테스트 할 수 있습니다. 사용 가능한 서비스에 대한 추상적 인 접근법을 적용하고 일반적인 비즈니스 언어로 이야기하거나 요청 코드 및 반환 값에 대해 이야기하는 시나리오를 작성할 수 있습니다 (첫 번째 방법을 선호합니다. 두 번째 작업을 수행하는 경우 단위를 쓸 수도 있습니다. 테스트).

일반적인 접근 방식은 사용자가 제어 할 수없는 API와 상호 작용할 때 응답을 기록하는 것이므로 데이터 변경 및 결과 응답 문제를 피할 수 있습니다. VCR (https://github.com/vcr/vcr)과 같은 도구는 읽을만한 가치가 있습니다.

또 다른 접근법은 쓰기 테스트를 전혀하지 않는 것이므로 모든 테스트를 읽기 전용으로 만드는 것입니다.

사실 때문에 매우 flakey가되는 API를 실행 위험 호출 외부 API의 모든 자동화 된 테스트 : API를 사용하지 못할 수 있습니다

  1. API가 그것을 호출을 반복해서 정말 짜증받을 수 있습니다 다음은 API를 읽고에
  2. API에 대한 모든 쓰기가 계단식 영향을 미칠 수
  3. 쓰기가 취소하지 않을 수 있습니다

그래서 일반적으로 Cukes를 사용하면 자신의 API로 작업하거나 외부 API를 사용하는 소프트웨어 기능을 작성할 수 있습니다.