테스팅 관련
-
자동화: 테스트 프레임워크(Junit)테스팅 관련/자동화 2020. 5. 25. 21:54
이어지는 시리즈 자동화: 테스트 프레임워크(Junit) 자동화: JUnit 테스트 작성 자동화 유닛 테스팅 프레임워크 예제를 보자. 이클립스(Eclipse) 무료로 사용이 가능한 오프소스 IDE(Integrated Development Environment)이다. 자바 플랫폼에서 매우 흔하게 사용되며, Junit 테스팅 프레임워크를 포함하고 있다. 우선, 유닛 테스팅 프레임워크를 적용해볼 프로그램 코드이다. import java.util.Scanner; public class Demo { public static void main(String[] args) { // Reading from System.in Scanner reader = new Scanner(System.in); System.out.pri..
-
테스트는 무엇일까?테스팅 관련/Q&A 2020. 5. 24. 17:04
Q. 자동화된 오라클은: 더보기 A. 실제 프로그램의 출력값과 테스트 케이스에서 예상된 출력값을 자동적으로 맞추는 프로그램이다. 오라클은 사람 또는 프로그램일 수 있다. 오라클의 기능은 테스트를 실행할 프로그램의 출력값과 테스트 케이스에서 도출한 예상된 출력값을 매치한다. Q. 테스트 케이스에서 셋업 단계는 테스트를 실행할 수 있도록 프로그램을 어떤 상태로 설정하는데 있어서 중요하다. 더보기 A. True Q. 해체 단계에 속하는 과제들은: 더보기 A. 테스팅이 끝난 후, 데이터를 지운다. 테스팅이 끝난 후, 연결을 닫는다. 테스팅 중에 사용했던 데이터들을 청소해야하므로 정답! 테스팅에서 열었던 연결들은 테스팅이 끝나면, 닫거나 정리해야한다. Q. 평가(Assessment)에는 어떤 과정이 속할까? 더보..
-
테스트가 뭐지?테스팅 관련/개념 2020. 5. 23. 04:21
테스트 케이스는 테스트 자료(입력값)와 예상되는 출력값으로 구성되어 있다. 테스트를 해부해보면, 셋업(Setup) 테스트가 행해질 수 있도록 소프트웨어를 어떠한 상태나 조건으로 만든다. 딱, 테스트가 실행될 수 있는 환경으로 만들어 놓는 것! 예를 들어, 인벤토리에 있는 제품을 삭제하는 테스트를 실행하려면 우선! 제품이 인벤토리에 존재해야 함. 실시(Invocation) 실시는 하나의 테스트 케이스 실행을 의미한다. 입력값들을 제공하고, 테스트에 적용되는 소프트웨어를 실행한다. 평가(Assessment) 테스트가 적용된 소프트웨어의 행동을 관찰한다. 가능하면, 실행된 행동들을 기록하고 결과를 예상된 결과와 비교한다. 해체(Teardown) 테스트가 끝난 후에 정리하는 과정. 데이터베이스 연결 닫기, 추가..
-
테스트 주도 개발테스팅 관련/Q&A 2020. 5. 23. 03:57
테스트 주도 개발 방법론(TDD)은 좋은 아이디어일까? 이 접근법은 어떠한 이익을 가져다줄까? 단점은 무엇일까? 더보기 Test-Driven Development "테스팅 → 개발", 짧은 사이클을 반복하며 진행 (실패 - 성공 - 리팩토링) - 실패: 실패 예상 테스트 케이스 작성 - 성공: 작성된 테스트에 통과하기 위한 최소한의 코드 작성 - 리팩토링: 통과한 코드 수정 및 개선 장점 1. 객체지향적 개발: 좀 더 명확한 구조 및 기능 설계 가능. 재사용성 기반으로 테스트를 철저히 구조화시켜 작성되므로 기본적으로 객체지향성을 띄게 됨. 2. 품질 보장: 먼저 테스팅을 함으로서, 버그 방지 및 시간 축소. 기본적으로 단위 테스트를 작성하기에 문제의 지점을 쉽게 찾아낼 수 있음. 3. 방향성 유지: 요구..
-
커버리지 테스팅테스팅 관련/Q&A 2020. 5. 23. 02:35
커버리지 테스팅은 개발자들이 흔히 시행하는 테스팅보다 더 엄격하다 왜 커버리지 테스팅은 평범한 시나리오에 대한 테스트를 작성하는 것보다 더 엄격한 테스트 suite를 작성하게 할까? 더보기 테스트 커버리지는 테스트의 충분성을 측정하는 지표로 사용된다. 프로그램의 어느 부분이 테스트 되었는지 알 수 있으므로 그에 맞는 커버리지를 높이기 위해 더 많은 노력을 기여해야 한다. 하지만, 커버리지가 높다고 해서 좋은 테스트는 아니다. 좋은 테스트는 무엇일까? 효율성이 높은 테스트다. 커버리지 테스팅은 최소의 테스트 케이스 수로 테스트의 충분성을 보장하면서, 테스트 케이스 품질은 높아야하는 것이 목적이다. 그러므로, 더 엄격한 테스트 suite를 작성하여야 한다. → 테스트의 충분성은 커버리지로 보장할 수 있으며,..
-
sw 테스팅의 어려움테스팅 관련/Q&A 2020. 5. 23. 01:46
Q. 소프트웨어 테스팅은 소프트웨어가 불연속적이기 때문에 많은 규율로 테스트하는 것과는 다르다. 수학에서는, 연속성은 함수의 값을 알고 있다면, 그 주변 값들에 대해 주장할 수 있다. 테스팅에서 왜 이것이 중요할까? 더보기 A. 연속적 시스템들은 종종 하나의 테스트 결과에서 주변 테스트들의 결과까지 추론할 수 있으므로 더 심플하다. Q. the Zune은 경계 조건(boundary conditions)들에 대한 테스트들이 필요하다. 이 것들은 산술식(arithmetic) 또는 관계식(relational expressions)의 경계(boundaries)들이 테스트 되는지 확인하는 값들이다. 다음 function에서 경계 조건 테스트들의 예제는 무엇인가? int FlipSome(int A, int N, i..
-
왜 소프트웨어 테스팅은 어려울까?테스팅 관련/개념 2020. 5. 23. 00:33
sw 테스팅의 문제점 - 가능한 행동들의 세트"만" 샘플한다 - sw 시스템들은 불연속(discontinuous)적이다 - 테스트를 한 케이스에서 하지 않은 케이스를 추론할 만한 우수한 근거가 없다 - 그러므로, 시스템의 모든 가능한 경우의 수를 고려해야한다 - 작은 시스템들마저도 무수한 가능한 경우들이 있다 The Zune Killer '1980년도부터 몇 일' 에서 '1980년도부터 몇 년 + 몇 일'로 코드를 바꾸어보자 year = ORIGINYEAR; // = 1980 while (days > 365) { if (IsLeapYear(year)) { // 윤년 if (days > 366) { days -= 366; year += 1; } } else { days -= 365; year += 1; }..
-
소프트웨어 테스팅 개념테스팅 관련/Q&A 2020. 5. 22. 19:36
Q. 고객들과 함께하는 디자인, 프로토타입 워크스루는 ___________의 예제이다. 더보기 A. Validation 고객들에게 피드백을 요청하여, 시스템을 위해 도출해낸 아이디어들이 요구사항들과 매치해본다 → 소프트웨어 = 고객 니즈 이므로, 제품 설계 검증 A. Validation 고객들에게 피드백을 요청하여, 시스템을 위해 도출해낸 아이디어들이 요구사항들과 매치해본다 → 소프트웨어 = 고객 니즈 이므로, 제품 설계 검증 Q. 행동들을 분류하기 위해, 요구 사항들(또는, 애자일 개발론의 유저 스토리들)을 도표화(mapping)하는 유닛테스트들은 _____________의 예제이다. 더보기 A. Verification 시스템이 시스템의 요구사항(Spec)을 충족하고 있는지 결정하는 것이다 → 설계 구..