줌 : https://zuminternet.github.io/zum-comment-component/
이외 : https://techblogposts.com/?search
vue 테스팅 핸드북 : https://lmiller1990.github.io/vue-testing-handbook/ko/vuex-actions.html#%EC%95%A1%EC%85%98-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0
출처 : 프로그래머 이규원의 '현실 세상의 TDD: 안정감을 주는 코드 작성 방법' 강의
TDD
테스트 기법의 종류
Unit Test
Integration Test
Functional Test
소프트웨어 테스팅이란
1) 정의
2) 테스트 타입
3) 테스트 방법
4) 테스트 접근 방법
5) 테스트 레벨
소프트웨어란?
2)application software
3)이외
테스팅 타입
1. manual testing
2. automation testing : 수동 테스트가 지닌 한계를 보완하기 위해 등장한 도구. 사람이 직접 테스트하지 않고
인수 테스트
비용이 매우 높다 : 작성비용/관리비용/실행비용
프로그래머 입장에서 받을 수 있는 피드백의 질이 낮음
: 현상은 드러나지만 원인은 단번에 알려주지 못하기 때문에
단위 테스트
장점
testing methods
testing approaches
black-box testing
definition of software tesing in software engineering
: process of analyzing a software product or system to examining a software product or system to determine whether it satisfies or fails to satisfy established conditions (i.e., defects). The testing process evaluates the software products characteristics for requirements such as missing requirements, bugs, or errors in order to evaluate its reliability, security, and performance.
소프트웨어 제품이나 시스템을 분석해서 성립된 조건들을 충족하는지 확인하는 과정
부족한 요건들, 버그들, 에러 등을 확인한다.
테스팅이 필요한 이유
cost-effectiveness
복잡한 시스템에서 결함이 없을 것을 기대하기는 어렵다
너무 복잡하니까
결함을 발견하고 수정하기 어렵다
한 버그를 수정하면서 다른 버그를 만들 수도 있다
customer satisfaction
security
product quality
manual Testing
:뭐가 제대로 작동하고 작동하지 않는지 확ㅇ니하기 위해 직접 테스트를 하는 방법
:요구사항 문서대로 확인하는 것 / 테스터가 유저의 관점으로 소프트웨어를 점검하는 거
ex. Testpad
automation testing
: using automation testing tools to control the execution of tests and compare the results against expected outcomes and to find the defects
: testers execute the test scripts and generate the test results automatically by using automation tools
ex. selenium, testRigor, katalon studio
ex. 싸이 강남스타일 12/1일 21억뷰 -> -21억뷰로 음수로 변경하는 버그 발생
32비트로 개발이 되었는데 integer의 최대값이 넘어가서 음수로 바뀌는 문제가 생김
자동차도 기계나 전자만큼이나 소프트웨어가 중요해짐
매년 연초마다 진행되는 국제 가전쇼를 위해 자동차 도메인에 있는 사람들을
개발자는 기능 구현뿐만 아니라 테스트를 잘 작성해야 한다
What is testing? (sw test)
제품 : 함수, 특정 기능, UI, 성능, API 스펙 등
종류 : unit, integration, function 등
프로레스는 특정한 기능을 수행하는 비즈니스 로직을 가지고 있는 소스코드가 있다면 이에 해당하는 테스트코드를 작성해서 우리의 예상에 맞는지 확인할 수 있어야 한다
특정 상황에서 함수, 특정한 기능, ui, 성능, api 스펙 등을 원하는대로/예상하는 대로 작동하는지 확인
테스트 코드를 통해 모든 테스트를 패스하면 퇴근/ 실패하면 코드에서 어떤 부분이 잘못 되었는지 확인하기
테스트의 포인트는 우리의 예상을
TDD
실패하는 코드를 먼저 작성하는 이유?
1. 요구사항 분석 및 이해가 필요 : 테스트를 통해 요구사항에 대한 명확한 이해 바탕으로 설계 가능, 모든 요구 사항(목표)에 대해 점검 가능
2. 사용자 입장에서 코드를 작성할 수 있다 : 구현보다 인터페이스를 기준으로 코드의 퀄리티를 향상할 수 있다
=> 시스템 전반적인 설계 향상
3. 테스트 - 기능 (개발 집중력 향상 가능)
rewrite the test,
run test,
실패하면 조금
우테코
1. TDD란?
창시자 켄트백 : "프로그램을 작성하기 전에 테스트를 먼저 하라!"
테스트코드를 먼저 만들고 실제 프로덕션 코드를 나중에 만드는 개발 방법론
2.레드 그린 리팩터라고 불리는 TDD개발 사이클
1. red : 테스트 실패하는 테스트 코드를 작성
2. green : 테스트를 성공하는 프로덕션 코드를 작성
3. refactor : 프로덕션 코드와 테스트 코드를 리팩토링한다
TDD는 설계 방법론? X
설계 방법론은 좋은 설계를 얻을 수 있어야 한다
TDD 실패하는 사람이 하는 테스트
이규원님의 okkycon 강연 중 일부
프로그램 전체 테스트
기본적인 단위테스트부터 점점 범위를 넓히면서 테스트한다
인수 : 고객 또는 대리인이 정의되어진 모든 목적에 부합되는지 확인해보고자 하는 검사
부하 : 주어진 단위 시간 동안 어플리케이션이 얼마나 많ㅇ느 요청을 처리할 수 있는지 검사
기능 : 공개된 API의 가장 바깥쪽에 해당하는 코드 검사( controller 호출, security, http)
통합 : 여러 작업 단위가 연계된 워트플로우를 테스트하기 위한 수단 (객체 간, 서비스 간, 시스템 간)
단위
- 가장 작은 범위인 코드 단위의 테스트
TDD 이규원
생각하기 않고 코드를 쓰는 것을 프로세스에서 막아주는 방법론
실제 업무에서는 필요 없거나 어렵다고 생각하는 이유 : 시간이 너무 많이 걸린다 / 사용했는데 효과가 별로 없더라 (버그가 완전히 사라지지 않는다)
모든 일들을 해결해주지는 않음
기획단계, 개발단꼐에서 인지하지 못한 버그는 나올 수 있다
버그를 완전히 없애는 것이 아니라 미ㅣㄹ 인지한 버스를 최대한 빨리 발견해서 고객이 사용하기 전에 버그를 먼저 발견해서 선제 대응할 수 있는 장치를 마련하는 것이 목적
TDD vs XP(익스트림 프로그래밍)
왈 "불안함을 지루함으로 만들어주는 마법의 돌"
하지만 내가 인지하지 못한 버그를 테스트가 발견했을 때,
담당하고 있는 코드에만 집중하게 되는데 작
okkycon - 이규원 등 강의 찾아서 살 붙이기
1.TDD란?
2.TDD방법론에 대한 찬반(반대 개념) + 장단점
3.타입
4.규칙
5.실제 코드
짧은 주기로 피드백을 받아가며 프로그래머가 코드를 늘려가는 개발 방법론
red : 기대되는 행동에 대한 테스트를 작성
green : 테스트 패스 위해 코드 작성
refactor : 리팩토링
이전 테스트 통과도 확인하니까 빠르게 디버깅 가능
클린코드 가능
import, export, 상태 관리, configuration에서 에러가 많이 남
vitest
modern js
typescript, import, export support, configuration 필요 없음
v-bundler 사용하면 바로 사용 가능
어떤 프로젝트에서든 사용할 수 있다
메타에서 만든 테스팅 라이브러리
마찬가지로 메타에서 만든 react에서 많이 사용
Jasmine에 기반을 두고
커뮤니티와 support 빵빵
장점
퍼포먼스 : 사이즈가 큰 프로젝트를 CI/CD할 때 편함
다른 애플리케이션과 통합하기 좋다,
auto mocking
extended API
timer mocks
active development & comm
좋은 테스트를 작성하는 방법
테스트를 작성해야 하는 이유
잘못 작성했을 때를 대비해서 에러 확인하기 좋으니까
유닛테스트 : 코드의 가장 작은 단위를 테스트하는 것 ex. 함수
여러개를 확인하기 어렵고 에러를 특정 짓기 어렵기 때문에!
불안감을 지루함으로 교환해준다
- 개발자는 초기적 결함을 점검하는 자동화된 테스트케이스 A를 작성한다
- 테스트케이스 A를 통과하기 위한 최소한의 코드를 작성한다
- 2번의 새 코드를 표준에 맞도록 리팩토링한다