테스터와 개발자 작성 테스트

테스터와 개발자 작성 테스트

테스터와 개발자가 테스트에 협력하게하는 방법은 무엇입니까?

개발자가 테스트를 전혀 도와 주면 이미 좋은 출발입니다. 그러나 그때에도 접근 방식에는 차이가 있습니다.

개발자는 창의적인 사고 방식을 가지고 있으며 테스터는 파괴적인 사고 방식을 가지고 있다는 것이 잘 알려져 있습니다. 테스터는 까다 롭고 호기심 많은 사용자로 생각하도록 훈련을 받았습니다. 시스템에 대한 그들의 견해는 더 넓습니다. 개발자의 전문 지식은 아키텍처에 있습니다. 그들의 견해는 더 깊다.

테스트를 작성할 때 이것은 또 다른 차이점으로 해석됩니다. 개발자는 코드를 실행하고 녹색 표시등을 얻기를 원합니다. 반면에 테스터는 있습니다 소비자 테스트 중에서 사용하기 쉽고 이해하기 쉬운 테스트.

그러나 이것이 우리가 고양이와 개처럼 싸우는 것을 의미하지는 않습니다. 테스트를 작성하면 개발자가 도움이됩니다 모듈 식 코드를 작성하십시오유지 가능하고 이해하기 쉽습니다. 그렇기 때문에 개발자와 QA는 근본적으로 같은 것을 원하지만 다른 맛을 원합니다.

이 기사에서는이 차이점을 탐구하고 극복 경험을 공유하고 싶습니다. 먼저, 우리는 테스터와 개발자의 접근 방식의 차이점에 대해 자세히 설명 할 것입니다. 그런 다음 이러한 차이가 극복 할 수 없음을 보여줄 것입니다.

테스트에 대한 다른 접근법

테스트 코드는 여러 가지 방법으로 생산 코드와 다릅니다.

  • 테스트를 사용한다는 것은 테스트를 읽는 것을 의미합니다 (실패한 경우 실패 원인을 파야합니다). 그것은 가독성에 추가로 강조됩니다.
  • 테스트 코드는 테스트에 의해 점검되지 않으므로 간단해야합니다.
  • 테스트를 읽는 사람들은 개발자만큼 코딩 경험이 많지 않아서 가독성과 단순성을 더욱 중요하게 만듭니다.

개발자는이 환경에 익숙하지 않을 수 있습니다. 이것을 예제로 설명합시다.

요소가 표시되는지 확인하는 JavaScript 함수가 있다고 가정합니다.

public void checkElement(boolean visible = true) {
// if the element should be visible, pass nothing
// if the element should be invisible, pass false
}

테스트 에서이 기능을 호출하는 것은 다음과 같습니다. checkElement(). 개발자는이 문제를 보지 못할 수도 있지만 테스터가 물어볼 것입니다. 우리가 무엇을 확인하고 있는지 어떻게 알 수 있습니까? 함수 내부를 들여다 보지 않으면 분명하지 않습니다.

훨씬 더 나은 이름은 “Visvisible”입니다. 또한 기본값을 제거하는 것이 가장 좋습니다. 우리가 그렇게한다면, 함수 호출은 다음과 같습니다. isVisible(true). 테스트에서 읽으면 요소가 표시되면이 검사가 통과된다는 것을 즉시 알 수 있습니다.

모든 사람이 이와 같은 요구 사항을 준수하도록하려면 어떻게해야합니까?

  • 모든 사람이 규칙을 따를 때까지 사람들을 존중하는 방식으로 잔소리 할 수 ​​있습니다. 불행히도, 이것은 때때로 유일한 방법입니다.
  • 다른 경우에는 단순하고 테스트 가능한 인터페이스 뒤에 응용 프로그램의 복잡성을 숨길 때 개발자를 불필요한 맥락에서 보호 할 수 있습니다.
  • 이것은 종종 모든 사람이 따르기를 원하는 규칙을 자동화하는 형태로 제공됩니다.

마지막 두 지점을 예제로 풀겠습니다.

맥락에서 차폐

테스트 설계

엔드 투 엔드 테스트 설계는 쉬운 일이 아닙니다. 개발자는 단위 테스트를 설계 (및 쓰기)하기 가장 좋은 위치입니다. 그러나 프론트 엔드 테스트를 통해 테스트 설계가 더 어려워집니다. 프론트 엔드 테스트는 시스템 자체와의 상호 작용을 모방하는 대신 사용자와의 상호 작용을 모방합니다.

우리의 경험에 따르면, 개발자가 처음부터 UI 테스트를 작성하는 것은 매우 스트레스가 많습니다. 항상 테스트해야 할 내용을 알아 내기가 어렵습니다. 이 때문에 프로세스는 일반적으로 두 부분으로 나뉩니다. 테스터는 테스트 문서를 작성한 다음 자동 테스트의 기초로 사용됩니다. 이런 식으로 개발자는 코드 전문 지식을 테이블에 가져 오지만 사용자 관련 컨텍스트에서 보호됩니다.

특징과 이야기

우리는 우리 중 개발자가 기능과 스토리에 테스트를 할당하는 데 어려움을 겪는 경향이 있음을 알았습니다. 매우 작은 프로젝트를 수행하지 않는 한 다른 기능마다 개발자가 있으며 모든 사람이 모든 것을 추적하기가 어렵습니다.

특징과 이야기

이것은 어디로 가나 요?

이 문제를 해결하기 위해 테스트가있는 폴더에 따라 테스트에 기능을 할당하는 고정물을 작성했습니다. 그런 다음 하위 폴더는 스토리 등을 결정합니다. 따라서 코드 검토를 수행 할 때 메타 데이터를 채우는 것에 대해 사람들에게 잔소리 할 필요가 없습니다. 그냥 말 : 테스트를 “XYZ”폴더로 옮길 수 있습니까? 지금까지 모든 사람들은이 배치에 만족하는 것 같습니다.

데이터 테스트

우리가 문제가있는 또 다른 메타 데이터 필드는 데이터 testID입니다.이 ID가 표준화되는 한 테스트 할 때 구성 요소를 빠르고 안정적으로 찾을 수있는 고유 식별자입니다.

우리는 특정 형식을 고안했습니다 data-testid그리고 우리는 사람들이 성공하지 않고 1 년 반 동안 그 형식을 사용하도록 노력해 왔습니다. 제대로 작성되지 않은 ID는 일반적으로 다른 모든 것이 이미 작동 할 때 코드 검토에서 발견됩니다. 이 단계에서 ID를 수정하는 것은 특히 다른 많은 작업에 개발자의 관심이 필요한 경우 형식처럼 느껴집니다.

그리고 그것은 개발자가 원칙적으로 관행에 반대하는 것과는 다릅니다. 그들은이 ID를 올바르게 작성하는 방법을 계속 묻습니다. 양측은 같은 일을하고 있으며 올바르게 수행하기를 원합니다. 그 과정에 딸꾹질이 있다는 것입니다.

글쎄, 그것은 누군가가 린터를 만든 것으로 밝혀졌습니다 data-testid – 이것은 우리가 이것으로 고통받는 유일한 사람이 아니라는 것을 의미합니다. 그것은 그것을 보장합니다 data-testid 값은 모두 제공되는 REGEX와 일치합니다.

우리는 모든 커밋 및 풀 요청에 대해이 Linter를 추가했으며 문제가 해결되었습니다. 우리의 개발자들은 또한 테스터가 수입, 들여 쓰기 등을 확인할 수있는 라이터를 설정했으며, 이것이 훌륭한 관행이라는 것을 알고 있습니다.

그럼에도 불구하고 결과는 매우 말하고 있습니다. 이미 모든 코드를 작성하고 테스트를 전달했을 때 ID와 같은 것을 수정하는 것은 형식처럼 보입니다. 그러나 처음부터 ID를 작성하는 방법을 알려주는 자동 규칙이 있으면 프로세스의 자연스러운 부분이됩니다. 왼쪽으로 행동하십시오!

풀 스택 테스터가되면 도움이됩니다

이러한 모든 솔루션을 작동 시키려면 테스터가 코드 및 인프라로 작업 할 수 있어야합니다.

자동 테스트를 함께 작성하려면 개발자와 테스터 모두보다 “전통적인”책임을 벗어나야합니다. 개발자는 사용자의 관점을 가정하고 “외부에서”코드를보아야합니다. 테스터는 코드를 작성해야합니다.

그리고 이것은 좋은 것입니다. 우리는 다른 곳에서 개발자의 장점에 대해 이야기했습니다. 테스터의 경우 작업중 인 시스템에 대한 기술적 지식이 더 많으면 초강대국을보다 완전하게 사용할 수 있습니다.

이것은 우리가 매력 테스트를 할 때 직접 본 것입니다. 특정 기능을 뛰어난 기술적으로 구현할 수 있습니다. 테스터는 그것을보고 말할 것입니다.

  1. 글을 쓰는 데 비용이 많이 듭니다
  2. 이것은 사용자를 혼동합니다
  3. 사용자가 원하는 것을 달성하는 훨씬 쉬운 방법이 있습니다.

풀 스택 테스터가 분석가와 개발자의 계획을 확인하면 많은 시간과 노력을 절약 할 수 있습니다.

결론

테스트에서 협력하려면 테스터와 개발자가 노력하고 적응해야합니다. 전문 지식의 차이는 불필요한 세부 사항에서 서로를 보호하는 데 사용될 수 있습니다.

테스터는 가장 활발한 테스트 소비자이므로 당연히 더 많은 것을 원합니다. 규칙을 자동화하는 것은 규칙과 요구 사항을 작동시키는 좋은 방법입니다.

테스터는 풀 스택 전문 지식을 가지고 있다면 기술을 가장 효율적으로 적용 할 수 있습니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다