1. 블랙박스, 화이트박스
블랙박스 테스트(Black Box Test)
소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 소프트웨어의 동작을 검사하는 방법.
검사 진행에 있어 해당 소프트웨어의 코드나 내부 구조에 대한 정보는 필요하지 않으며, 특징, 요구 사항 검사를 위해 공개된 설계도 등의 대외적으로 공개된 사항들을 통해 검사를 진행하며,****
data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==
이 소프트웨어는 무슨 역할이 수행되어야 하는가?
와 같이 소프트웨어의 특징이나 요구 사항 등에 초점을 맞춰 검사가 이뤄진다.
즉, 정리하자면 개발자입장이 아닌 사용자 입장에서 소프트웨어 혹은 제품에 대한 요구사항과 결과물이 일치하는지 확인하기위한 테스트 기법이다.
기법
- 동등 분할 기법(Equivalence Partitioning)
- 경계값 분석 기법(Boundary Value Analy
- 오류 예측 기법(Error Guessing)
4. 원인 결과 그래프 기법(Cause Effect Graph)
5. 의사결정 테이블 테스팅
6. 상태전이 테스팅
화이트박스 테스트(White Box Test)
소프트웨어 혹은 제품의 내부 구조, 동작을 세밀하게 검사하는 테스트 방식으로, 외부에서 요구사항에 따른 예상 결과값을 테스트 하는 것과는 다르게 내부 소스 코드를 테스트하는 기법으로 사용자가 들여다 볼 수 없는 구간의 코드 단위를 테스트 한다.
즉, 정리하면 개발자가 소프트웨어 또는 컴포넌트 등의 로직에 대한 테스트를 수행하기 위해 설계 단계에서 요구된 사항을 확인하는 개발자 관점의 단위테스팅 기법이다.
기법
- 문장 검증
- 분기 검증
- 경로 검증
- 조건 검증
예외처리
2. 상속
솔리디티에서는 is 키워드를 통해 컨트랙트를 상속받을 수 있습니다.
contract Doge {
function catchphrase() public returns (string) {
return "So Wow CryptoDoge";
}
}
contract BabyDoge is Doge {
function anotherCatchphrase() public returns (string) {
return "Such Moon BabyDoge";
}
}
BabyDoge 컨트랙트는 Doge 컨트랙트를 상속받은 상태이며, 상속한 부모 컨트랙트의 internal 함수를 활용할 수 있습니다.
또한 상속받을 컨트랙트를 ,(콤마) 로 구분해 둘 이상의 컨트랙트를 다중 상속받는것도 가능합니다.
contract Doge {
function catchphrase() public returns (string) {
return "So Wow CryptoDoge";
}
}
contract BabyDoge is Doge, Etherium {
function anotherCatchphrase() public returns (string) {
return "Such Moon BabyDoge";
}
}
3. 구조체
구조체(struct)는 서로 다른 유형의 항목을 포함하는 집합으로, 사용자 정의 형식입니다. 구조체를 통해 여러 특성을 가진 복잡한 자료형을 만들 수 있습니다.
또한 구조체는 참조형 변수(Reference type)라고도 합니다. 참조형 변수는 배열과 같이 데이터를 저장하는 영역에 연속되어 저장되어 있는 값의 첫 번째 메모리 주소를 값으로 가지는 변수 타입입니다. 이를 '참조한다'라고 표현합니다.
구조체 예시
struct Car {
uint year;
uint power;
string name;
}
4. super()
- super 명령어는 상속 관계에서 상속의 대상인 부모 클래스를 호출하는 함수
- 상속된 상태변수의 섀도잉(shadowing)
- 상속에서 섀도잉(shadowing) 개념이 있습니다.
- 변수 섀도잉은, 특정 범위 내에서 선언된 변수가 외부 범위에서 선언된 변수와 같은 이름을 가질 때 발생합니다.
- 일반적으로 상속에서 섀도잉을 사용하면, 자식 클래스에서 사용된 재정의 요소가 원래 요소를 숨기게 되는 효과가 발생합니다.
- 부모 컨트랙트 호출 및 super키워드
- 부모 컨트랙트를 직접적으로 호출하기 위해서는 super 키워드를 사용할 수 있음
- super 키워드를 사용하면, 상위 부모 컨트랙트를 동일하게 사용할 수 있음
- 메서드 오버라이드, 오버라이딩
- 부모 클래스의 method를 재정의(override)
- 하위 클래스(자식 클래스) 의 인스턴스로 호출시, 재정의된 메서드가 호출됨
- 아래코드 출처 및 설명
- 메서드 오버라이딩(Method Overriding)이란, 여러 클래스에 걸쳐서 같은 이름의 메서드를 만드는 것이다. 예를 들어 부모 클래스, 전사 캐릭터 클래스, 마법사 캐릭터 클래스에 공통으로 attack이라는 메서드가 있지만, 각각 하는 일이 다를 때는 다음처럼 같은 이름의 메서드를 클래스별로 구현하면 된다. 이렇게 되면 부모 클래스에서 만든 메서드 정의를 자식 클래스에서는 변경해서 사용한다.