일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 아인슈타인
- 큰수의 법칙
- 산입범위
- 인터스텔라
- 멘탈관리
- 핵 개발
- 핵개발
- 수학적 사고
- R 기초
- 이기적 유전자
- 비율
- 찬물샤워
- 비선형성
- 비행기 추락
- 산입 범위
- 유닛테스트
- t검정
- 자기관리
- 선형성
- 최저시급 개정안
- 성악설
- 최저 시급
- 동전 던지기
- t-test
- 통계오류
- 통계 오류
- R4DS
- 티모시페리스
- R 프로그래밍
- 조던피더슨
- Today
- Total
public bigdata
[R 코드 및 기능] 유닛테스팅 본문
# 유닛 테스팅 : 코드의 일반적인 사용 상황과 특이한 사용 상황을 테스트하기 위함.####
# 모든 코드를 항상 유닛 테스트로 확인 할 수는 없음.
# install.packages("testthat")
library(testthat)
a=1:3
b=1:3
names(a)=c('a','b','c')
> a
a b c
1 2 3
> b
[1] 1 2 3
#expect_equal(object, expected) 오브젝트가 기대되는 값 익스펙티드와 동일한가
#두 객체가 (거의)같은지를 비교, 부동 소수의 경우 매우 작은 값 이하로 차이나는 두 값은 같은 값으로 취급
expect_equal(a,b) # 벡터에 부여한 이름이 다르므로 실패
#expect_equivalent() #equal 과 달리 속성값만
expect_equivalent(a,b) # 벡터에 부여한 이름을 무시하므로 테스트 성공 #두 객체가 동일 하다는 말
#expect_equal을 피보나치 수열을 이용해 예를 들어보자
fib=function(n){
if(n==0){
return(1)
}
if (n>0) {
return(fib(n-1)+fib(n-2))
}
}
#expect_equal이용해 fib(0)=1인지 확인
expect_equal(1,fib(0)) #무반응(무반응은 정상 이라는 말)
expect_equal(1,fib(1)) #오류메세지 반환.
결과>>
#이렇게 에러 메세지가 발생했다면 이에 따라 fib()함수를 올바르게 수정해나가면 된다.
#test_that을 사용한 테스트 그룹화####
#그룹화란 test_that 함수를 통해 expect 문장들을 묶어서 실행할 수 있다.
test_that("base case",{
expect_equal(1,fib(0))
expect_equal(1,fib(1))
})
결과>>
# 다음은 버그가 없도록 수정한 fibo에 대한 테스트 그룹화.
fib=function(n){
if (n==0||n==1){
return(1)
}
if(n>=2){
return(fib(n-1)+fib(n-2))
}
}
test_that("base test",{ #무반응으로 정상.
expect_equal(1,fib(0))
expect_equal(1,fib(1))
})
test_that("recursion test",{ #무반응으로 정상.
expect_equal(2,fib(2))
expect_equal(3,fib(3))
expect_equal(5,fib(4))
})
'R programming' 카테고리의 다른 글
%>% (R4DS 일부, help("%>%) 일부) 정리 (0) | 2019.09.02 |
---|---|
apply 계열 함수 정리하기 (0) | 2019.09.01 |
tidyverse other verbs, tips (0) | 2019.09.01 |
Tidy evaluation, most common actions(개인적 정리)_비표준 평가 관련2 (0) | 2019.08.29 |
Programming with dplyr_비표준 평가 관련1 (0) | 2019.08.16 |