✏️ 0523/0525 강의 필기

정나영·2023년 5월 23일
1


-> 1:1 매칭을 꼭 해보세요

  • transition 되려면 이벤트가 발생해야함
  • 이벤트 이름으로 메소드를 만든다.

7.4 Refactoring

  • 리팩토링에 의해서 간결화, 코드 구조 개선이 되지만, 테스트 케이스의 결과가 before, after가 같도록 리팩토링

Collapse hierarchy

  • 상속 관계의 두 클래스를 합하는 것

Consolidate conditionals

Decompose conditionals

Extract method

Extract class

Inline class

  • association 관계의 두 클래스를 합하는 것

Cost of Refactoring

1) Manual work
2) Test development and maintenance
3) Documentation maintenance

Code Smell and Refactoring

code smell : 코드 구조가 바람직하지 못한 상황을 일컫는 말
참고링크


7.5 Code Quality Improvement

Code Inspection

: 코드를 가지고 분석

Static analysis

static : 대부분의 경우 프로그램 실행 전을 뜻한다.
: 코드를 가지고 분석
장점 : 모든 가능성을 점검할 수 있다.
단점 : 불필요한 부분까지 분석해야하는 번거로움이 있다.

Dynamic analysis

: 실제 프로그램을 돌려보면서 분석
장점 : 필요한 부분만 분석할 수 있다.
단점 : 실제 실행 경로만 분석한다.
ex) if-else문이 있다면 else문만 실행되는 경우도 있을 수 있는데, 이 경우 if문은 분석되지 않는다.

구문 기반 기반 점검

1) 토큰 분석
2) 구분 분석

의미 분석 기반 점검

퀴즈
1. 1
2. 3
정적 분석은 코드로 분석하는 것!
3. 2
기능 변경 x -> 기능은 같아야함
4. 3
5. 2

++)
Syntatic : focus on "form" and syntax
Semantic : focus on "meaning"

8. Testing

블랙박스 : 코드의 내용을 모르는 상태로 명세를 가지고 테스팅
화이트박스 : 코드의 내용을 알고 있는 상태로 모든 플로우를 따르면서 테스팅

⭐️ Inspections (reviews or walkthroughs)

Edsger Wybe. Dijkstra (엣저 위베 다익스트라)
: Testings how the presence, not the absence of bugs
테스팅으로 버그를 발견할 수는 있지만, 모든 버그를 찾아낼 수는 없다.

용어
IUT
Test Case
Test Site
Test Data

Test harness
Driver : 함수를 호출하는 메인 함수의 역할
Stub : (메인함수에서 호출하는 함수가 완성되어 있지 않을 때) 컴파일을 위한 껍데기 코드

🤔 Test Case는 어떻게 만드나요?
Disigning thest cases
1) to uncover defects (Objective)
2) in a complete manner (Criteria)
3) with a minimum of test case (Effort and time)

2),3)은 서로 상충되는 관계!

⭐️ 유효하지 않은 테스트 케이스도 만드는 것이 필요하다!

Testing Approaches

  • Alpha testing : 회사 내에서 테스팅
  • Beta testing : 외부에서 테스팅
  • Black box : 내부 구조를 모르는 상태에서 명세를 가지고 테스팅
    - 소스코드 안 지적재산권이 있는 경우를 들 수 있겠죠
  • white box testing : 소스 코드 내부 구조 테스팅

black box / white box testing은 서로 보완적인 면이 있는 것으로 우위를 가릴 수는 없겠죠

  1. 2048
  2. implementation under test
  3. presence
  4. absence

0개의 댓글