이 테스트는 어떻게 생겼습니까?
테스트는 3 부분으로 구성됩니다.
- 이 컨텍스트를 설정이 작업을 수행
는 조치가 당신이 무엇을 테스트합니다 알아낼 어떻게
수행 할 작업을했는데 않았다고 주장한다
만들려는 기능을 가장 잘 나타내야합니까? 테스트는 기능을 기반으로하지 않으며 (
cucumber과 같은 상위 수준의 프레임 워크에 대해 언급하지 않는 한) 코드의 "단위"를 기반으로합니다. 일반적으로 단위는 함수이며, 함수의 모든 가능한 동작이 올바르게 작동한다고 주장하는 여러 테스트를 작성합니다.
예를들 수 있습니까? 정말 사용하는 프레임 워크에 따라 다릅니다. 개인적으로, 내가 좋아하는 것은 루비 Test :: Unit framework의 확장 인 shoulda이다.
다음은 readme의 예제이다. 나는 다음 테스트 버튼을 찾는 페이지를 치는 것 웹 응용 프로그램에 로그 아웃 버튼 기능을 할 경우이 같은 BDD 프레임 워크의 경우, 상황에 맞는 설정은 자신의 블록처럼
class UserTest < Test::Unit::TestCase
context "A User instance" do
setup do
@user = User.find(:first)
end
should "return its full name" do
assert_equal 'John Doe', @user.full_name
end
context "with a profile" do
setup do
@user.profile = Profile.find(:first)
end
should "return true when sent #has_profile?" do
assert @user.has_profile?
end
end
end
end
에 어떻게됩니까? 또는 무엇을?
세 가지 주요 유형의 테스트가 있습니다.
먼저 단위 테스트를합니다 (사람들이 일반적으로 TDD 테스트에 대해 이야기 할 때 말하는 것으로 가정합니다). 단위 테스트는 단일 작업 단위를 테스트하며 그 외에는 테스트하지 않습니다. 즉, 일반적으로 메서드가 데이터베이스에 도달하면 테스트 기간 동안 해당 데이터베이스에 실제로 충돌하지 않도록합니다 ("조롱 (mocking)"이라는 기술 사용).
다음에는 통합 테스트가 있습니다. 통합 테스트는 일반적으로 인프라와의 상호 작용을 포함하며 더 "전체 스택"테스트입니다. 따라서 최상위 API에서 삽입 메소드가있는 경우 전체 삽입을 수행 한 다음 결과 데이터를 데이터베이스에서 테스트하십시오. 이러한 종류의 테스트에는 더 많은 설정이 있기 때문에 실제로는 개발자 머신에서 실행해서는 안됩니다 (빌드 서버에서 자동화하는 것이 더 좋습니다).
마지막으로 UI 테스트가 있습니다. 이것은 가장 신뢰할 수 없으며 UI 주위를 클릭하는 것을 자동화하기 위해 Selenium 또는 Waitr과 같은 UI 스크립팅 프레임 워크가 필요합니다. 이 테스트는 매우 약하다 (작은 변화는 그들을 깨뜨릴 수있다) 고하며, 어쨌든 (예 : 스타일링과 같은) 전체 클래스의 클래스를 잡아 내지 못하기 때문에 이런 유형의 테스트에는 미친 짓이 마세요.
"만들려는 기능을 가장 잘 나타내는 테스트는 무엇입니까?" 그것이 요점입니다. 이 기능에 대해 생각하고 사용 방법을 생각해야합니다. 기본적으로주의 깊게 디자인해야합니다 *. –
지금 사용자 테스트에 대해 이야기하고 있습니다. TDD는 기능 테스트를위한 것입니다. – Skilldrick
TDD 사용에 대해 진지한 사람이라면 위키 피 디아가 아닌 다른 것을 읽을 것을 제안합니다. –