2010-02-17 4 views
1

일부 스레드 잠금 로직에 대한 단위 테스트를 작성하므로 테스트가 빨리 실패 할 수 있습니다. 나는 모든 스레드를 매우 자주 그리고 임의의 시간에 서로 바꿔야한다.유닛 테스트에서 사용할 수있는 .net 스레드 쉐이커가 있습니까?

나는 이것이 버그를 가지고 있지 않다는 것을 증명하지 못할 것이지만, 적어도 버그가 더 자주 나타나게해야한다는 것을 알고있다. 모두가 "이렇게하지"라고,하지만 난 는 결코 실패하지 우리는 현재 장소에서 단위 테스트를해야한다 매우 간단한 잠금을 가지고


감사합니다. 누군가가 자신이하는 일을 이해하지 않고 잠금 장치를 제거 할 위험을 줄이려면 어떤 것도 가치가 있습니다.

답변

1

CHESS을 살펴보십시오.

+1

같은 대답을 게시하는 두 사람이 downvote의 이유가 아닙니다. – Sapph

+0

@Steven : 시대를 한번보세요. 이 대답이 먼저 왔습니다. –

+0

죄송합니다. 메시지를 다시 upvote 할 수 없습니다. 나는 다른 스레드에서 당신에게 그것을 만들거야. – Steven

1

무작위로 이동하는 스레드가 코드를보다 효율적으로 테스트한다는 점이 다릅니다. 가장 잘 쓰여지는 멀티 쓰레드 코드는 만약 당신이 충분히 열심히 쓰러 뜨리면 교착 상태가 될 수 있습니다.

내가하는 일을 모른 채 자세히 설명 할 수는 없지만 일반적으로로드 테스트는 스레드 잠금 논리를 테스트하는보다 효과적인 방법이라고 생각합니다.

2

This question은 스레드 쉐이커에 관한 것이 아니라 일반적으로 스레드 테스트에 관한 것입니다. 권장 도구를 살펴보십시오. 한 명의 주석 작성자가 this other question과 연결되어있어 흥미로울 수 있습니다.

1

MS Research에서 CHESS을 조사하는 것이 좋습니다.

+0

왜 downvote ...? – Sapph

0

이렇게하지 말 것을 강력히 권합니다. 이것은 단위 테스트를 신뢰할 수 없게 만들고 쓸모 없게 만듭니다. 단위 테스트는 항상 동일한 결과를 가져야합니다 (코드가 변경되지 않은 경우). 그러한 테스트가 예측할 수없는 경우, 개발자는 더 이상이 테스트를 쓰지 않고이 단위 테스트를 작성하는 데 낭비가됩니다.

테스트는 유용 할 수 있지만 단위 테스트가 아닙니다. 그것은 나에게 특별한 시험처럼 보입니다.

[업데이트] this answerthis thread에서 확인하십시오. 필자는 멀티 스레드 단위 테스트에 관해서도 같은 생각을하지만, 필자는 내가했던 것보다 훨씬 더 잘 설명한다.

관련 문제