단위 테스트의 새로운 이름 [닫힘]


9

나는 단위 테스트를 좋아하지 않았다. 나는 항상 그것이해야 할 일의 양을 늘렸다 고 생각했습니다.
실제로 작성한 코드 줄 수와 관련해서 만 사실이며, 테스트 및 테스트 중심 개발로 한 시간 안에 작성할 수있는 유용한 코드 줄 수가 증가함에 따라 완전히 상쇄됩니다.

이제는 유용한 코드를 작성할 수 있으므로 단위 테스트를 좋아합니다. (나무에 노크)

나는 사람들이 엄격한 시한 내에 있거나 다른 사람들이 그렇게하지 않는 환경에서 유닛 테스트를하거나 테스트 주도 개발 프로젝트를 시작하는 것을 꺼려한다는 것을 알게되었습니다. 문화적 시도조차도 거부합니다.

단위 테스트에서 가장 강력한 점 중 하나는 리팩토링을 수행 할 수 있다는 확신입니다. 또한 새로운 코드를 다른 사람에게 리팩토링 / 개선 할 수있는 코드를 줄 수 있으며, 단위 테스트가 여전히 작동하는 경우, 수정 한 라이브러리의 새 버전을 거의 사용할 수 있습니다.

새로운 이름이 필요하다고 생각되는 것은 단위 테스트의 마지막 측면입니다. 단위 테스트는 현재와 미래에이 코드가 수행해야 할 작업의 계약과 비슷합니다.
단어 테스트를 들었을 때, 새장에있는 마우스를 생각하고 화합물의 효과를 확인하기 위해 여러 실험을 수행했습니다. 이것은 단위 테스트가 아니며, 가장 정서적 인 접근 방식이 무엇인지 확인하기 위해 다른 코드를 시도하지 않고 입력에 대해 어떤 출력을 기대하는지 정의하는 것입니다. 마우스 예제에서 단위 테스트는 마우스에서 수행 된 실험과 달리 우주가 어떻게 작동하는지에 대한 정의와 비슷합니다.

내가 균열에 빠졌거나 다른 사람이 테스트를 거부하는 것을 보았고 그들이 그것을 원하지 않는 비슷한 이유라고 생각합니까?
테스트를하지 않은 이유는 무엇입니까?
그들의 동기가 단위 테스트가 아니라고 생각하십니까?

그리고 일부 이의 제기를 극복 할 수있는 단위 테스트의 새로운 이름으로 jContract는 어떻습니까? (내가 아는 약간의 Java 중심), 또는 단위 계약?


14
이름이 뭐야? 우리가 장미라고 부르는 것은 다른 이름으로도 달콤한 냄새가납니다. -셰익스피어, 로미오와 줄리엣, 1600 년경
Steven A. Lowe

8
난 당신이 균열에 있는지 모른다. 나는 균열이나 당신을 시도한 적이 없습니다.
Tim Post

1
아이디어는 단어가 아니라 아이디어와 태도에 따라 달라집니다. 이름이 편견과 관련되어 있기 때문에 Spastics Society가 이름을 Scope로 변경 한 것을 발견 한 것을 기억합니다. 아이들이 그날 일찍 "스코피"라고 부르는 이유를 설명했기 때문에 기억합니다. 당신이 태도를 바꾸고 싶다면, 이름이 아니라 태도에 집중하십시오-이름에 집착하는 것은 단지 시간 낭비입니다.
Steve314

2
계약에 의한 설계 : en.wikipedia.org/wiki/Design_by_contract 구체적인 구성 요소가 있으며 단위 테스트도 아닙니다. 계약서에 이름이있는 것을 보면 뇌가 연관되는 것입니다.
Berin Loritsch

@ Steve314 스코피. 좋아요 :)이 경우 단어 테스트가 이미 정의되어 있으므로 단위 테스트의 이름을 정의되지 않은 용어로 바꾸는 것이 좋습니다. 언급 된 '인터페이스'때문에 계약을 체결 할 수 없습니다. '더 나은 프로그램을 더 빨리 만들'거나 CBPF는 어떻습니까?

답변:


5

내가 균열에 빠졌거나 다른 사람이 테스트를 거부하는 것을 보았고 그들이 그것을 원하지 않는 비슷한 이유라고 생각합니까?

단위 테스트에서 단어 테스트는 사람들이 통합 테스트 또는 사용자 인터페이스 테스트라고 생각합니다. 자바를 자바 스크립트에 넣는 것과 같습니다.

이름이 잘못되어 사람들의 생각에 영향을 미치는 경우이를 프레임 오류라고합니다. 프레이밍 오류는 피상적 인 경향이 있습니다. 사람들은 영리하고 모든 종류의 나쁜 이름, 나쁜 은유를 통해 볼 수 있습니다.

테스트를하지 않은 이유는 무엇입니까?

모의 / 가짜 /가 어려운 종속성

그들의 동기가 단위 테스트가 아니라고 생각하십니까?

단위 테스트는 적당한 개념 수를 가지며 나쁜 단위 테스트 작성을 중지하고 좋은 단위를 작성하기 전에 사소한 양의 작업을 수행해야합니다. 사람들이 단위 테스트가 무엇인지 설명하는 데 익숙해 짐에 따라 채택이 증가 할 것입니다. 내 경험상 단위 테스트는 생산성과 코드 품질에 거의 마법의 영향을 미칩니다. 그러나 그렇게 시작되지 않았습니다. 원래 통합 테스트를 작성하는 편리한 방법으로 단위 테스트 프레임 워크를 사용했습니다.


좋은 지적. 설명하려고 왜 것 '테스트'는 간단한 get 메소드는 코드의 모든 나머지의 안정성에 대한 계약 중요한 이유 get 메소드는 항상 당신이 기대하는 만들기 위해 쉽게 인수입니다 반환 설명, 어렵다

3

이름 변경의 개념은 이미 권장되었습니다. 이를 행동 주도 개발 이라고 합니다. 그와 같은 사람들은 아직 만들어지지 않은 것을 테스트하기 위해 부수적 인 적합성과 자연스럽지 않은 적합성을 발견했습니다. 대신, 그들의 개념은 실행 가능한 사양을 작성하는 것입니다 (이것은 TDD가 실제로 무엇인가).

나는 같은 푸시 백을 발견했다. 또한 많은 사람들이 단위 테스트를 작성하는 방법을 모른다는 것을 알았습니다. 그것들은 과학적인 프로세스 분야에는 부족하고, 모든 것을 함께 연결하고 디버거를 시작하는 방법으로 단위 테스트 프레임 워크를 사용합니다. 요컨대, 그들은 시간 사용을 진정으로 개선하지는 않습니다. 단 한 번의 주장이 아니라 수십 줄 (30 줄 이상) 인 단위 테스트 수를 알 수 없습니다. 내가 그것을 볼 때, 나는 개발자와 함께 일하고 그들에게 어설 션이 무엇인지, 실제로 테스트하는 단위 테스트를 작성하는 방법을 가르쳐야 할 때라는 것을 안다.


2
실행 가능한 사양은 아마도 TDD / BDD / Agile / XP보다 우선합니다. CMMI만큼 오래되었을 수 있습니다. 사람들이 UML이 ES 작성을위한 언어라고 생각했을 때 UML과의 공동 유행이었습니다.
rwong

TDD와 같은 BDD는 일종의 테스트 (기능적 v 통합 v 단위 v 승인)가 아닌 테스트에 대한 접근 방식 입니다. 저자는 단위 테스트를위한 "더 나은"이름에 대해 구체적으로 묻고 있습니다.
ybakos

0

대부분의 경우 계약을 "인터페이스"라고합니다. 단위 테스트가 있다고해서 테스트 자체를 보장 할 수는 없으며 테스트도 변경할 수 있으므로 라이브러리를 테스트했기 때문에 새 버전의 라이브러리를 사용할 수 있다는 것을 실제로 알지 못합니다. 라이브러리를 사용하는 코드도 테스트해야합니다. 그것은 다른 단위 테스트와 다르지 않으므로 새로운 이름이 필요한 이유는 모르겠습니다.

나는 당신처럼, 대부분의 사람들은 시험이 더 효과적이고 쓸모 없다고 생각하기 때문에 시험을 꺼려한다고 생각합니다.


0

TDD가 마음에 들지 않는 이유를 알려 드리겠습니다. TDD의 가치를 볼 수 없거나 각 수정 후 모든 코드를 확인하기 위해 실행할 수있는 테스트 스위트의 이점을 인식하지 못하기 때문입니다.

필요하지 않기 때문입니다. 나는 아주 오래된 학교 개발자입니다. 어렸을 때 편집을 계속하고 코드를 작성하는 멋진 통합 디버거가 없었으며 컴파일에 오랜 시간이 걸리므로 일을해야했습니다. 처음부터 바로. 이러한 교육을 받으면 단위 테스트를 많이 작성하여 생산성을 높이거나 코드를 더 버그없이 만들 수 있다는 것을 실제로 알지 못합니다.

내 코드를 테스트하지만 항상했던 것처럼 개별 조각이 아닌 전체에 적용되었습니다. 아마도 '단위 테스트'가 있을지 모르지만 다소 거칠습니다.

그게 내 이유야 내가해야 할 필요성을 알 수 없습니다. 내가 생성하는 코드는 충분하며, 그 경우 깨진 것이 아닌 문제를 해결하기 위해 프로세스를 변경해야하는 이유는 무엇입니까?


그런 다음 매우 간단한 코드를 작성해야합니다. 대부분의 현대 시스템에서 도달 할 수있는 상태의 양은 엔드 투 엔드 테스트를 수행하는 데 우주의 수명이 걸린다는 것을 의미합니다. 4 비트 상태로 각각 2 개의 조각을 테스트하려면 각각 16 개의 경우 또는 32 개의 테스트 사례가 필요합니다. 엔드-투-엔드 시스템으로 구성되어 8 비트 상태 또는 256 가지 테스트 사례를 제공하여 모든 상태를 처리합니다. 개인적으로 작업의 1/8을 수행하고 싶습니다.
피트 커캄

1
@PeteKirkham의 결론은 다수의 단위 테스트를 작성한 다음 통합 테스트를 작성하여 단위가 여전히 서로 작동하는지 확인해야한다는 것입니다. 내가 단위 테스트를 매우 좋아했던 장소는 코드베이스를 잃어 버릴 정도로 많은 시간을 소비하고 코드를 잃어 버렸고 작업 환경은 내가 그 환경 밖에서 달성 한 것에 비해 작습니다. 마법의 총알은 아무것도 아닙니다. 중요한 비트에 대한 테스트 범위를 제공하면서도 무언가를 생성하는보다 실용적인 접근 방식을 찾는 것이 좋습니다.
gbjbaanb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.