자신의 코드 테스트를 개선하는 방법 [닫기]


12

오늘 나는 다소 어리석지 만 매우 중요한 것으로 인해 전혀 작동하지 않는 것으로 밝혀진 일부 코드의 변경 사항을 확인했습니다. 나는 그것에 대해 정말로 기분이 나쁘고 마지막으로 그것에 대해 배우기를 바랍니다. 멍청한 일은, 나는 전에 이런 일을 해왔고 다음에 나는 그렇게 어리석지 않을 것이라고 항상 나 자신에게 말한다 ... 그런 다음 다시 발생하고 나는 그것에 대해 더 나쁘게 느낀다.

나는 당신이 당신의 턱을 유지하고 실수로부터 배워야한다는 것을 알고 있지만 여기에 있습니다 : 나는 나 자신을 개선하려고 노력합니다. 나는 이러한 일이 발생하는 것을 막을 수있는 방법을 보지 못합니다.

자, 이제 여러분 께 묻습니다 : 코드를 테스트 할 때 특정한 기본 규칙이 있습니까?


답변:


17

코드를 변경하기 전에 테스트를 작성하십시오.

제안 된 변경 사항으로 버그를 수정하는 것이면 먼저 버그를 시연하여 테스트에 실패하도록하십시오. 그런 다음 버그를 수정 한 후에 전달하십시오. 나중에 테스트를 작성하고 통과 한 것을 본 적이 있다면 처음부터 버그를 올바르게 테스트했는지 확신 할 수 없습니다.

기존 기능을 변경하거나 기능을 추가하는 것이 제안 된 변경 사항 인 경우 변경하려는 코드 영역을 제대로 다루기 위해 몇 가지 테스트를 작성하십시오. 코드 변경을 시작하기 전에 이러한 테스트를 통과했는지 확인한 후에도 테스트를 통과하십시오.


이것은 정말 좋은 충고입니다. 버그 수정을 얻는 데 조금 더 오래 걸릴 수 있지만 이런 종류의 실수를 다시 일으키지 않을 것이며 전반적으로보다 안정적인 코드를 작성할 수 있습니다.
Peter

@ 피터 장기적으로 유지 보수 시간을 절약해야합니다. 연기 테스트 수정을 수동으로 연기하는 데 더 적은 시간을 소비해야하며 다음에 코드를 편집 할 때 테스트가 수행됩니다. 때로는 버그를 재현하는 단위 테스트를 빠르게 작성하면 버그를 더 빨리 디버깅하고 수정하는 것이 더 빠를 수 있습니다.
Alb

@ 피터 나는 종종 버그를 수정하면서 버그를 여러 번 재현하는 것을 발견했습니다. 작은 테스트를 작성하면 일반적으로 시간이 절약되고 작동하는지 확실하게 알 수 있으며 향후 작동 할 것입니다.
DasIch

이것은 환상적인 조언 친구입니다, 정말 고마워요!
Shaheer

@Alb 또는 단기에서도.

3

최첨단 사례를 테스트하는 것을 잊지 마십시오! 많은 버그는 가장 일반적인 작업이 테스트되었지만 덜 일반적인 작업은 아니기 때문입니다.


진짜 보석은이 가장자리 케이스를 찾는 것입니다. 특정 시나리오를 생각하지 않았기 때문에 시스템에서 발생하는 버그에 종종 놀라곤합니다.
피터

2

기술 지향 답변의 기술 조언을 따르십시오. 좋은 물건입니다. 내 대답은 태도에 관한 것입니다.

모든 개발자가 가끔 실수를 저지르는 것에 대해 나쁜 생각을하는 것은 터무니 없으며, 앞으로 그러한 종류의 실수를 저지르는 데 도움이되지 않습니다. 거기에 기분이 나쁘지만 빌드가 여전히 깨졌습니다. 그리고 당신의 작업은 실수를 피하는 것입니다. 아침에 일어나 침대에서 매일 매일 흥미 진진한 모험을하는 것을 알고 있습니다.

깨진 코드를 체크인하는 것이 대중의 부끄러움을 일으키는 회사에 대해 들었습니다. 나는 그런 행동으로 이어지는 뒤틀린, 사춘기 소년, 중학교 수준의 사고에 머리를 댈 수조차 없습니다. 팀장이나 관리자가 더 역효과를 낼 수는 없습니다.

그러니 자신을 때리지 마십시오. 우리 모두 다 해냈어 어리석은 실수로 일주일에 반 하루의 비용이 들었고, 오랫동안 (기침)이 일을 해왔습니다. 그것이 코드를 작성하는 것처럼 보이는 것입니다. 자신의 부적절한 것처럼 보이는 것에 대해 끊임없이 충돌하고 있습니다. 전문가를 전문가로 만드는 것은 결코 실수를하지 않는 신화적인 특성이 아니며 (실제로 큰 실수를 포함하여) 그들이 저지르는 실수에 어떻게 대응 하는가입니다.

내가 작업하는 모든 개발자에게 주입 할 수있는 하나의 진언이 있다면 다음과 같습니다. 당신은 코드가 아닙니다 . 당신은 코드를 작성합니다. 당신은 당신이 할 수있는 한 효율적이고 효율적으로 작성합니다. 그럼 집에가 코드의 품질을 가진 사람으로서의 가치 또는 자존심을 동일시하면 실제로 자신에 대한 보트를 놓친 것입니다.


나는 당신이 퍼블릭 쉐이 밍에 대해 당신이 말하는 것을 이해하지만, 동시에 Joe Bloggs가 체크인하기 전에 모든 플랫폼을 빌드하지 않았기 때문에 빌드가 손상되어 차단되는 것이 실망 스럽습니다.
tenpn

@tenpn-완전히. 그러나 내가 말하는 것의 단점은 Joe Bloggs에 대해서도 마찬가지입니다. 그는 또한 자신의 코드가 아닙니다. 동료로서 우리는 조가 우리의 눈을 바보로 만들려는 충동에 저항해야합니다.
Dan Ray

@tenpn은 실제로 트렁크 / 마스터에 변경 사항을 커밋하기 전에 빌드를 자동으로 테스트하지 않는 시스템을 비난 할 수 있습니다.
David

2
@tenpn-동료도 뛰지 않습니다.
Dan Ray

1
변경으로 빌드가 중단되지 않으면 어떻게합니까? 체크인하기 전에 코드를 작성하는 것이 상식입니다. 가능한 모든 방법으로 코드를 테스트하는 것은 분명하지 않습니다. 당신이 할 수 없었던 시나리오가 항상 있습니다. 바로 오늘 저는 부동 소수점 반올림 오류가 발생했습니다.이 오류는 올바른 숫자가 잘못되었을 경우에만 발생합니다
Peter

2

또 다른 중요한 테스트 방법은 테스트를 작성하고 코드를 작성하기 전에 한 번 이상 실패했는지 확인하는 것입니다. 검사하고있는 상태를 실수로 테스트하지 않는 타투 로지 테스트를 작성하는 것은 쉬운 일입니다. 거짓 보증은 보증이없는 것보다 거의 (그리고 때로는 더 나쁘다).


0

내가 때때로 사용했던 아이디어는 이것입니다.

분기를 만들고 코드를 깨고 테스트를 실행 한 다음 테스트에서 오류가 발생하는지 확인하십시오.


0

코드를 테스트 할 때 특정한 기본 규칙이 있습니까?

  • 항상 코드를 단위 테스트하고 가능한 한 높은 범위에 도달하십시오.

몇 가지 추가 일반 사항 :

  • 코딩을 시작하기 전에 디자인 및 계획에 시간을 투자
  • 코드를 리팩터링하십시오!
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.