:\ 파일 이름으로 표시;로 경로요소 구분//로 서브 디렉토리, 파일로 이동:로 경로요소 구분. : 현재 위치.. : 상위 폴더
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) : 최종 목적의 달성을 위해 사용자 요구사항이 충족되었는지, 단위 테스트에서부터 사용자 인수 테스트까지의 단계를 통해 수행되어지는 활동
ArangeActAssert→ 깔끔한 코드를 작성하기 위함!
실패하는 작은 단위 테스트부터 작성해 빠르게 테스트
화이트박스 테스트블랙박스 테스트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 testE2E testJest
Mocha
MavenComposernpm(node package manager)pipyarn : 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