:
\
파일 이름으로 표시;
로 경로요소 구분/
/
로 서브 디렉토리, 파일로 이동:
로 경로요소 구분.
: 현재 위치..
: 상위 폴더Uniform Resource Location
으로 웹페이지, 이미지, 동영상과 같은 정보가 위치하는 위치 정보http://
: 통신에 사용되는 방식naver.com
: 웹 서버의 이름/krkorklo
: 루트 디렉토리부터 자원이 위치한 장소까지 경로?q=search
: 웹 서버에 추가적으로 넘겨주는 파라미터Uniform Resource Name
은 urn:scheme 을 사용하는 URI를 위한 이름^x
: 문자열의 시작을 의미, x로 시작하는 문자x$
: 문자열의 끝을 의미, x로 끝나는 문자.
: 임의의 한 문자의 자리수x+
: x가 한 번 이상 반복됨을 의미x?
: 존재 여부를 표현하며 x가 존재할수도, 존재하지 않을수도 있음을 의미x*
: x가 0번 이상 반복됨을 의미x|y
: x나 y 문자가 존재함을 의미(x)(y)
: 그룹을 의미하며 앞에서부터 순서대로 번호를 부여, x와 y는 각 그룹의 데이터로 관리(x)(?:y)
: 그룹들의 집합에 대한 예외를 표현, 그룹 집합으로 관리되지 않음을 의미x{n,m}
: x가 최소 n번, 최대 m번으로 반복됨을 의미[xy]
: x와 y 중에 하나를 의미[^xy]
: x와 y를 제외한 문자를 의미[x-z]
: range를 의미\\
: escape를 의미해 \를 문자로 사용함을 의미\b
: word boundary를 표현하며 문자와 공백사이의 문자를 의미\B
: non word boundary를 표현하며 문자와 공백사이가 아닌 문자를 의미\d
: digit으로 숫자를 의미\D
: non digit으로 숫자가 아닌 것을 의미\s
: space로 공백 문자를 의미\S
: non space로 공백 문자가 아닌 것을 의미\t
: tab을 의미\v
: vertical tab으로 수직 탭 문자를 의미\w
: word로 알파벳+숫자+_ 중 한 문자를 의미\W
: non word로 알파벳+숫자+_를 제외한 문자를 의미g
: Global로 대상 문자열 내에 모든 패턴을 검색i
: Ignore case로 대상 문자열에 대해 대소문자를 구분하지 않고 검색m
: MultiLine으로 대상 문자열이 다중 라인인 경우에도 검색이전 절차가 완료되어야 다음 단계로 넘어갈 수 있음
→ 회복할 수 없는 문제가 발생할 수 있음
→ 요구사항 - 설계 - 구현 - 테스트 과정을 빠르게 여러번 돌릴 필요성 존재
Verification
) : 소프트웨어의 올바른 구현을 보장하기 위해 정적분석(리뷰, 익스펜션 등)을 비롯한 단위, 통합, 시스템 테스트에서 수행되는 활동Validation
) : 최종 목적의 달성을 위해 사용자 요구사항이 충족되었는지, 단위 테스트에서부터 사용자 인수 테스트까지의 단계를 통해 수행되어지는 활동Arange
Act
Assert
→ 깔끔한 코드를 작성하기 위함!
실패하는 작은 단위 테스트부터 작성해 빠르게 테스트
화이트박스 테스트
블랙박스 테스트
Fast
: 빠른 실행Independent
: 테스트하고자하는 단위 기능에 집중, 다른 테스트에 의존하지 않고 영향을 주지 않아야 한다 (하나 이상의 기능 테스트 x)Repeatable
: 반복적으로 수행하더라도 항상 같은 결과를 반환 (Mock 객체를 활용)Self-Validating
: 기대하는 결과가 무엇인지 단언해야 한다 (assert)Timely
: 미루지 않고 즉시 작성💡 Mock객체는 행위 검증에 사용하고 Stub은 상태 검증에 사용
class OrderStateTester...
public void testOrderSendsMailIfUnfilled() {
Order order = new Order(TALISKER, 51);
MailServiceStub mailer = new MailServiceStub();
order.setMailer(mailer);
order.fill(warehouse);
assertEquals(1, mailer.numberSent());
}
void
인 경우 값을 비교하지 못하기 때문)class OrderInteractionTester...
public void testOrderSendsMailIfUnfilled() {
Order order = new Order(TALISKER, 51);
Mock warehouse = mock(Warehouse.class);
Mock mailer = mock(MailService.class);
order.setMailer((MailService) mailer.proxy());
mailer.expects(once()).method("send");
warehouse.expects(once()).method("hasInventory")
.withAnyArguments()
.will(returnValue(false));
order.fill((Warehouse) warehouse.proxy());
}
}
```
UI test
E2E test
Jest
Mocha
Maven
Composer
npm(node package manager)
pip
yarn
: npm의 단점을 보완하기 위한 패키지 매니저npm init
: package.json을 생성npm install
: package.json에 명시된 의존성 패키지를 설치npm install [패키지명]
: 해당 패키지를 설치하고 package.json의 dependencies에 추가npm install [패키지명] -g
: 해당 패키지를 전역으로 설치npm install [패키지명] --save-dev
: 해당 패키지를 설치 후 package.json의 devDependencies에 의존성을 추가npm update
: package.json의 dependencies와 devDependencies 패키지를 모두 업데이트 후 package.json에 버전 정보를 갱신npm update [패키지명]
: 해당 패키지를 업데이트 후 package.json에 버전 정보를 갱신npm update [패키지명] --no-save
: 해당 패키지를 업데이트만 하고 package.json에 버전 정보를 갱신하지 않음npm prune
: package.json에 명시되지않은 패키지 모두 제거-g
옵션을 사용해 설치/usr/local/lib/node_modules
혹은 /usr/local/bin
에 설치node_modules
폴더에 저장name
, version
, description
기입script
: node_modules를 상대경로로 사용하는 간단한 스크립트 등록 (빌드나 테스트)main
: 패키지의 시작점이 되는 파일, 해당 파일을 시작으로 의존성 패키지를 확인해나감dependencies
: 패키지를 실행하기 위한 의존성을 정의devDependencies
: 개발할때 필요한 의존성을 정의 (배포나 번들에 포함되지 않음)npm install
시 package-lock.json이 자동으로 생성돼 현재 설치된 패키지의 버전과 의존성 관계를 모두 저장npm
으로 설치된 파일은 모두 node_modules
디렉토리에 저장참고자료
https://hamait.tistory.com/342
https://velog.io/@jch9537/URI-URL
https://www.workfront.com/project-management/methodologies/waterfall
https://blog.devbong.com/75
https://www.crocus.co.kr/1555
https://happy-coding-day.tistory.com/entry/Mock-객체란-무엇일까-왜-써야될까
https://luran.me/343
https://fomaios.tistory.com/entry/CS-FIRST-원칙이란-featUnitTest
https://ui.toast.com/fe-guide/ko_DEPENDENCY-MANAGE