인간을 위한 테스트 작성
이번 주 10번째, CI 실패로 "받은 값이 저장된 스냅샷과 일치하지 않습니다"와 유사한 오류 메시지가 발생했습니다.
<div
- className="myClassName" >
+ className="myNewClassName" >
+ <div>
Hello world
+ </div>
</div>
이 테스트를 복구하는 것은 무의미하다. 만약 클래스가 다르거나 내가div 표시를 추가했다면, 왜 이것이 중요합니까?팀에 스냅샷 업데이트를 읽는 사람이 없기 때문에 복귀를 막지 못했다.
나는 너무 낙담해서 하마터면 컴퓨터를 망가뜨릴 뻔했다. 문을 쾅 닫고 사직할 뻔했다.
하지만 반대로 나는 이런 에너지를 더 적극적인 일로 이끌기로 했다.
나는 프로젝트 테스트가 어떻게 이런 상태에 들어갔는지 생각하기 시작했다.
왜 모든 사람들이 우리가 코드 라이브러리를 테스트해야 한다고 동의하는데, 이렇게 많은 개발자들이 그것을 싫어합니까?
내가 유일하게 낙담한 사람인가?아니오, 없습니다.
사람들이 TDD를 사용한다고 말할 때 나는 그들을 믿지 않는다에밀리 프리만(
)
왜 아무도 이것에 대해 행동을 취하지 않습니까?
악순환 이론이나 인간을 위한 테스트를 어떻게 멈추나요
이것은 나의 이론으로 이런 상황을 해석하는 것이다.
저는'테스트의 악순환'이라고 합니다.™:
그들은 왜 테스트가 여기에 있는지 모른다.
그들은 그것을 복구하는 데 시간을 들이는 것은 가치가 없다는 생각에 점차 익숙해졌다.
만약 당신이 이것에 대해 공감대를 형성한다면, 당신은 팀원들이 당신의 의도를 이해하게 하는 것이 아니라 CI를 위해 테스트를 작성하여 그 역할을 발휘하도록 하고 있다.
테스트는 협업 도구로 당신이나 당신의 동료가 실패할 때 테스트를 읽을 수 있습니다.
한 달 안에 그들을 이해할 수 있도록 확보해야 한다. 당신이 해야 할 일을 모두 잊어버리면.
Tests are meant to be read by humans, not your CI.
당신은 어떻게 인류를 위해 테스트를 작성했습니까?
다음은 내가 너에게 준 세 가지 건의이다.
왜: 왜 테스트를 하는지 알아야 돼.테스트는 소프트웨어 공학의 보편적인 진리이기 때문에 왜 프로젝트에서 테스트를 해야 하는지 잊기 쉽다.당신을 격려하는 요소를 찾아라. 그것은 당신이 작성한 테스트를 다른 사람들이 읽도록 인도할 것이다.
뭐: 집중이 필요해.나는 그것을 전부 끝내고 평범하게 하는 것이 아니라 한 가지 일을 잘하는 것이 가장 좋다고 생각한다.테스트할 내용을 선택하고 모든 테스트를 시도하지 마십시오.
어떻게: 목표에 맞는 가장 좋은 도구를 선택하십시오.읽기 및 유지 보수가 가능한 품질 테스트를 작성하는 데 도움이 필요합니다
#1: 왜 테스트를 썼어요?
인간을 위한 테스트는 시간이 필요하고, 당신이 하고 있는 일에 몰입해야 한다.
왜 우수한 테스트를 작성해야 하는지 잘 모르겠다면, 이 정도는 할 수 없습니다.
Do not write tests because you have to. Make sure you and your team know why you write tests.
프로젝트에 품질 도구를 설정할 때 보통 자동 테스트를 제공합니다.
linter와 달리 테스트는 매일 실패하는 것이 아니라 코드의 질에 대한 장기적인 투자이다.
왜 이러는지 잊기 쉬워.
테스트 환경을 설정하기 전에 왜 테스트를 해야 하는지 설명해야 합니다.
장기적으로 볼 때, 당신은 무엇을 얻기를 원합니까?
더 좋은 문서?
더 적은 컴백 오류?TDD의 개발자 체험 도구?
너와 너의 팀은 네가 왜 이러는지 확실히 알아야 한다.엉망진창인 테스트의 악순환에 빠지기 쉬우므로, 왜 테스트를 작성해야 하는지 모두가 알고 있다면, 목표를 벗어날 때 일찌감치 발견할 수 있다.당신의 목표를 명확히 하면 당신의 팀원들이 당신의 테스트에 대해 소유권을 가지게 될 것입니다. 그들은 필요할 때 당신의 개선을 도울 것입니다.
#2: 먼저 테스트해야 할 부품 선택
만약 우리가 나의 프로젝트에서 스냅샷을 사용하도록 선택한다면, 그것은 더욱 빠를 것이다.
우리는 너무 많은 시간이 걸리지 않는 상황에서 모든 코드 라이브러리를 테스트하기를 바란다.
100%의 커버율을 유지하기 위해서, 우리는 기능을 추가할 때마다 유지해야 하는 테스트를 작성하기 시작했다.그들은 우리가 후퇴를 잡는 것을 도울 수 없다. 왜냐하면 그들은 변화가 너무 빈번하기 때문이다.
투자가 아무리 작아도 가치가 없다.
Do not aim for a 100% code-coverage of generic tests, aim for 100% of readable tests
모든 내용을 테스트할 필요가 없습니다.
설정이 코드의 모든 방면에 적합하지 않을 수 있습니다.
나는 항상 논리성이 강한 함수를 위해 단원 테스트를 작성한다.
전방 응용 프로그램의 사용자 체험을 테스트해야 합니까?
만약 내가 복잡한 단일 페이지 응용 프로그램을 작성하고 있다면, 사용자 체험은 매우 발전할 것이다.
테스트는 아마도 나의 가장 중요한 임무일 것이다. 이렇게 하면 나는 후퇴를 방지할 수 있다. 이것은 사용자가 나의 응용 프로그램에 대한 감상에 큰 영향을 미친다.
나는 이 때문에 통합되거나 끝까지 테스트를 작성하고 싶다.
전방 응용 프로그램 인터페이스를 테스트해야 합니까?
만약 내가 공유 구성 요소 라이브러리를 쓰고 있다면, 나는 UI에 중점을 두고 논리적 구성 요소를 가지고 있을 것이다.
나의 첫 번째 임무는 나의 사용자에게 신뢰할 수 있고 일치하는 사용자 인터페이스를 제공하는 것이다.
사용자 체험 논리를 테스트하는 것은 처음부터 이 점을 주목하지 않고 선택할 수 있는 추가적인 장점이다.
#3 올바른 도구 선택
좋은 테스트 도구가 많이 있습니다.
이제 테스트를 작성하는 이유와 코드의 어떤 부분을 주목해야 하는지 알게 되었습니다. 장갑처럼 필요한 도구를 찾을 수 있습니다
다른 항목에서, 나는 React 테스트 라이브러리를 사용하여 나의 전단 React 응용 프로그램을 테스트하기로 선택했다.
도구를 원합니다.
이것은 아주 좋은 개발 체험이다.
나도 개인적인 목표가 하나 있다. 바로 이 새로운 도구를 시도하는 것이다. 그것은 매우 좋은 평론이 많다.
컴파일링 테스트를 재미있게 할 수 있는 도구를 찾거나 테스트 구동 개발을 할 수 있는 도구를 찾으려면 이런 방식으로 인간을 위해 테스트를 작성할 수밖에 없다.
준비됐어!
이제 알겠다. 만약 당신이 테스트가 쓸모없다고 생각하거나 유지하는 것이 고통스럽다는 것을 발견한다면, 당신은 테스트의 악순환에 처해 있을 것이다.
이러한 상황에서 벗어나려면 다음 절차를 따르십시오.
이것은 네가 자랑스러워하는 우수한 테스트를 쓰도록 격려할 것이다.
커버율은 숫자일 뿐 코드 품질의 상징이 아니다.
중점은 모든 부분이 아니라 좋은 부분을 테스트하는 것이다.
Reference
이 문제에 관하여(인간을 위한 테스트 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/adelegauvrit/write-tests-for-humans-2nl1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)