가장 빠른 테스트
왜 스피드 테스트에 관심을 가져야 합니까?
코드를 작성할 때, 특히 테스트 드라이브 개발을 할 때, 나는 가능한 한 빠른 피드백을 얻기를 바란다.이것은 빠른 테스트를 의미한다.
나는 100ms가 내가 어떤 단일 테스트가 충분한지 고려하는 상한선이라는 것을 발견했다.이것은 여전히 고통의 느린 것이지만, 단지 막 시작했을 뿐이다.
100밀리초 이하의 속도라면, 나는 테스트 호출과 테스트 결과 기록 사이의 지연이 말더듬이 마찰을 일으키기에 충분하다는 것을 발견했고, 심지어는 나도 모르게 테스트 실행을 회피하기 시작했다.간단하게 나에게 달콤한 녹색 확인을 허용하는 것이 아니라 내가 생각하는 정확한 코드를 작성하는 데 더 많은 시간을 들일 것이다.새로운 테스트를 작성하고 난간이나 지도 없이 코드를 빠르게 작성하는 데 더 많은 시간이 걸립니다.
만약 내가 있는 코드 라이브러리의 단원 테스트 세트가 몇 초나 몇 분 걸려야 완성될 수 있다면, 나는 곧 이런 쓸모없는 테스트를 삭제할 것을 주장할 것이다.
내가 말한 것은 단원 테스트이지 집적 테스트가 아니다.통합 테스트는 실제 데이터베이스에서 데이터를 얻고 메모리, 디스크 또는 원격 기기의 어떤 구조에 데이터를 써서 실제 데이터를 저장해야 할 수도 있다.이런 테스트의 속도는 진정한 제한이 있다. 이것은 당신이 그것을 얼마나 격리하고 싶은지, 그리고 그것들이 유용하다고 생각하는지에 달려 있다.
그러나 단원 테스트: 네트워크가 없고 서비스가 없다.잠재적인 생산 코드와 테스트 코드의 순도만이 생산 코드를 호출하고 결과를 단언할 수 있다.
그들은 얼마나 빨리 뛸 수 있습니까?
그들은 얼마나 빨리 가야 합니까?
이상적인 상황에서 단원 테스트의 운행 시간은 10밀리초, 최대 100밀리초보다 적어야 한다.
만약 언어나 테스트 프레임워크가 단일 단위 테스트를 실행할 수 없다면, 전체 단위 테스트 세트의 운행 시간은 1000밀리초 (1초) 보다 작아야 합니다.
만약 광범위하게 사용되는 유니버설 프로그래밍 언어를 사용한다면, 수천 개의 테스트를 포함하는 테스트 세트에 대해서도 충분히 가능하다.컴퓨터가 빠르다!
이게 어떻게 가능하지?
이것은 미래 블로그 글의 주제이다!하지만 마이클 페더A Set of Unit Testing Rules부터.
A test is not a unit test if:
- It talks to the database
- It communicates across the network
- It touches the file system
- It can’t run at the same time as any of your other unit tests
- You have to do special things to your environment (such as editing config files) to run it.
가장 빠른 테스트는 얼마나 빠릅니까?이론상?
테스트 속도가 절대 가장 빠르다.만약 우리가 모든 하드웨어와 소프트웨어의 속박에서 해방된다면, 우리의 가장 빠른 테스트 속도는 기본적인 속도 제한이 있을 것이다.
이 속도 제한은 당연히 광속이다.
정보가 없는 전파 속도는 광속을 초과할 수 있다.우리가 어떻게 최적화, 개선, 조정과 간소화를 하든지 간에 우리는 정보에서 사람부터 기계, 그리고 기계까지의 왕복 제한을 벗어날 수 없다.정보는 기본적으로 속도 제한이 있다.
우리의 컴퓨터가 2피트 밖에 있다고 가정해라.우리의 테스트 피드백은 얼마나 빠릅니까?
2피트의 거리는 우리의 신호와 응답이 4피트 이동해야 한다는 것을 의미한다.(물론 빛은 기계와 우리 자신의 머릿속에서 전파되어야 하지만, 우리는 이 거리를 한쪽에 두어야 한다.)
울프강 라마르파에게 바칩니다!Lightspeed over four feet
lightspeed / 4 feet = 4.067ns (nanoseconds)
이것은 흥미로운 수학 괴벽으로, 빛이 1나노초만 있으면 1피트를 이동할 수 있기 때문에, 오래된 영국 단위로 빛의 속도를 측정하여 인류의 척도에 도달하는 거리를 비교적 쉽게 할 수 있다.4ns는 얼마나 빠릅니까?시간 단위를 내려다보자!
1 second = 1 second (1 s)
1 second / 1000 = 1 millisecond (1 ms)
1 millisecond / 1000 = 1 microsecond (1 µs)
1 microsecond / 1000 = 1 nanosecond (1 ns)
수량급이 몇 개밖에 없어요. 문제 없어요!우리의 단원 테스트 10밀리초의 합리적인 상황과 비교하면?1000개의 10ms 단원 테스트를 연속으로 실행하는 데 필요한 시간 내에 우리는 250만 개의 가장 빠른 4ns 테스트를 실행할 수 있습니다!
공평하게 말하자면, 우리는 영원히 그런 속도에 도달하지 못할 것이며, 단독 테스트를 위해 어떤 의미 있는 계산도 하지 않을 것이다.목표가 있는 게 좋아요.
Reference
이 문제에 관하여(가장 빠른 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sdball/the-fastest-possible-tests-4nkb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)