InfoGrab DocsInfoGrab Docs

테스트 모범 사례

테스트 모범 사례 관련 내용을 설명합니다.

테스트 설계 # GitLab에서 테스트는 사후에 덧붙이는 것이 아니라 최우선으로 다루는 대상입니다. 기능을 설계할 때처럼 테스트의 설계도 신중하게 고려해야 합니다. 기능을 구현할 때는 올바른 역량을 올바른 방식으로 개발하는 데 집중합니다. 이렇게 하면 범위를 관리 가능한 수준으로 좁힐 수 있습니다. 기능의 테스트를 구현할 때는 올바른 테스트를 개발하는 것은 물론, 테스트가 실패할 수 있는 중요한 경로를 모두 다뤄야 합니다. 그러면 범위가 빠르게 넓어져 관리하기 어려운 수준에 이를 수 있습니다. 테스트 휴리스틱이 이 문제를 해결하는 데 도움이 됩니다. 테스트 휴리스틱은 버그가 코드에 나타나는 여러 일반적인 방식을 간결하게 다룹니다. 테스트를 설계할 때는 알려진 테스트 휴리스틱을 검토하는 시간을 가지고 테스트 설계에 반영합니다. 유용한 휴리스틱은 핸드북의 테스트 가이드 에 문서화되어 있습니다. RSpec # RSpec 테스트를 실행하려면 다음과 같이 합니다. # run test for a file bin/rspec spec/models/project_spec.rb # run test for the example on line 10 on that file bin/rspec spec/models/project_spec.rb:10 # run tests matching the example name has that string bin/rspec spec/models/project_spec.rb -e associations # run all tests, will take hours for GitLab codebase! bin/rspec Guard 를 사용하면 변경 사항을 지속적으로 감시하면서 일치하는 테스트만 실행할 수 있습니다. bundle exec guard spring과 guard를 함께 사용하는 경우에는 spring을 활용하도록 SPRING=1 bundle exec guard 를 대신 사용합니다. 일반 지침 # 최상위 RSpec.describe ClassName 블록은 하나만 사용합니다. 클래스 메서드는 .method 로, 인스턴스 메서드는 #method 로 설명합니다. 분기 로직을 테스트할 때는 context 를 사용합니다( RSpec/AvoidConditionalStatements RuboCop Cop - MR ). 테스트의 순서를 클래스 안의 순서와 맞추려고 노력합니다. 가능하면 표 기반 테스트 를 우선 사용합니다. Four-Phase Test 패턴을 따르되, 줄바꿈으로 단계를 구분합니다. 'localhost' 를 하드코딩하지 말고 Gitlab.config.gitlab.host 를 사용합니다. 테스트에서 URL을 문자열로 직접 쓸 때는 example.com , gitlab.example.com 을 사용합니다. 이렇게 하면 실제 URL을 사용하지 않게 됩니다. 시퀀스로 생성되는 속성의 절대값을 대상으로 단언하지 않습니다 ( 참고: 주의 사항 ). expect_any_instance_of 또는 allow_any_instance_of 사용을