TIL26 ✨

YaR Lab·2023년 5월 29일
0

TIL✨

목록 보기
16/136
post-thumbnail

23.05.29

유닛테스트

소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차
모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차
메서드 단위의 테스트
로그램의 각 부분을 고립 시켜서 각각의 부분이 정확하게 동작하는지 확인
프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사
상향식(bottom-up) 테스트 방식
프로그램의 각 부분을 검증하고 그 부분들은 합쳐서 다시 검증하는 통합 테스트에서 빛을 발함

FIRST

Fast 테스트는 빠르게
Independent/Isolated 각각의 테스트는 독립적으로
Repeatable 언제 어디서나 같은 결과가 반복되어야 함 (테스트를 위한 객체)
Self-Validating Bool을 이용한 성공 실패
Timely (실제코드를 작성하기 전에)

유동적으로 5개의 항목을 지켜나가면 됨, 특히 Timely는 잘 안지켜짐

Unit Test 작성

Test파일이 필요함

XCTest framework

XCTest는 유닛 테스트, 퍼포먼스 테스트, UI 테스트를 만들고 실행하는 프레임워크

XCTestCase

추상 클래스인 XCTest의 하위 클래스로, 테스트를 작성하기 위해 상속해야 하는 가장 기본적인 클래스

XCTestCase를 상속받은 클래스에서는 test에서 사용되는 다양한 프로퍼티와 메서드를 사용 가능

setUpWithError()

각각의 test case가 실행되기 전마다 호출되어 각 테스트가 모두 같은 상태와 조건에서 실행될 수 있도록 만들어 줄 수 있는 메서드

tearDownWithError()

각각의 test 실행이 끝난 후마다 호출되는 메서드
보통 setUpWithError()에서 설정한 값들을 해제할 때 사용

setUp(), tearDown()

error를 throw할 수 있느냐 없느냐의 차이
이 메서드는 throw 불가능

testExample()

test로 시작하는 메서드들은 우리가 작성해야 할 test case가 되는 메서드
메서드 네이밍은 무조건 test로 시작돼야함

testPerfomanceExample()

성능을 테스트해보기 위한 메서드
measuere(block:) 메서드를 통해 성능 측정

@testable

@testable은 Unit Test에서 실제 앱 타깃에 있는 코드들에 접근하기 위한 키워드
internal수준의 접근제한을 푸는 과정

XCTAssertEqual()

테스트의 결과를 확인하는 메서드
XCTAssertEqual(inputValue,expectValue,"error message"): 어설션이 실패한 이유에 대한 더 많은 컨텍스트를 제공

BDD

시나리오를 설정하고 예상대로 결과가 나타나는지를 확인하는 방법론

given: 시나리오의 예정된 행위를 하기전의 조건 설정
when: 예정된 행위를 함
then: 예상한 결과를 도출하는지 확인

테스트 메서드 실행 방법

  1. 테스트 네비게이터에서 실행
  2. gutter에서 다이아몬드 누르기
  3. Command + U: 모든 테스트 클래스가 실행됨

Code Coverage

실제 앱 코드에서 어느 정도의 테스트가 진행되었는지를 알 수 있는 툴

단위테스트 네이밍

타입네이밍: Tests와 결합된 네이밍
테스트메서드네이밍: 테스트에서 확인하려는 내용을 이해할 수 있도록 설명하는 네이밍
네이밍이 길어지면 너무 많은 것을 테스트하고 있는 것
Tests와 결합된 네이밍

XCTAssert 메서드

XCTAssertTrue(bool condition)
XCTAssert(bool condition)

회귀테스트

Array List

Linked List

~=, .contains

범위에 속하는지

0개의 댓글