본문 바로가기

전체 글

(35)
조합적 상호작용 테스팅 조합적 상호작용 테스팅, Comvinatorial 테스팅이라고 하며 보통 CIT라고 한다. CIT가 적용되는 예제 비행기 티켓 예약 시스템을 예로 든다 항공사 - 제주 도착지 - 오사카 혹은 도쿄 출발 - 5/20 도착 - 5/27 또는 5/28 전체 조합의 개수 2*2*2로 8가지 이 경우는 조합적인 상태작용을 테스트할 정도로 복잡한 시스템이 아니라고 할 수 있다 하지만 인천공항에 드나드는 모든 항공사를 대상으로 항공사들이 출항하는 모든 도시에 대해 아무런 제약 조건 없이 모든 가능한 입력의 조합을 계산해보고 싶다고 하면 적어도 18억 개에 가까운 조합의 개수가 필요하다. 그러므로 종합적인 폭발이 일어난다 테스팅할 떄 발생하는 문제는 가능한 모든 조합을 모두 테스트하는 것이 너무 비싸다는 점 → 해결책..
경계값 분석 경계값 분석이 효과적인 테스팅 기법인 까닭? off by one error off by one error 프로그램의 분기 등을 결정하는 논리적 조건문에서 조건이 값 1만큼의 차이로 서로 다른 행동을 하게 되는 결함 예로는 "작다"와 "작거나 같다"의 차이를 구별하지 못해 오는 실수로 인한 오류 검출을 경계값 분석이 돕는다 Loof 올바른 루프로, for(i=0; i
JMeter를 이용한 간단한 test plan 톰캣 localhost에 접근하려니 접근할 수 없다고 떠서 한참을 서치했다 알고보니 tomcat의 bin 파일에 있는 startup.bat으로 톰캣을 켜줘야 사용가능한 것 같다 JMeter를 사용하기 위해서는 apache-jmeter 폴더에서 bin 폴더에 있는 jmeter.bat를 실행시키면 된다 저는 앞으로 실습은 아래의 책의 저자가 제공하는 예제를 활용합니다 Apache JMeter 이 책은 Apache JMeter를 이용해서 웹 서비스의 성능을 테스트하려는 시스템 운영자와 웹 개발자를 위한 책으로, 자바와 웹 서비스 인프라, 웹 프로토콜에 대한 기초적인 지식을 가지고 있다면 쉽게 book.naver.com 간단한 Test Plan 작성하기 JMeter에서 테스트 스크립트를 Test Plan이라고 ..
등가 파티션 분기문 if, else, else if, switch case 프로그램 작성시 다양한 기능을 각각의 부분에서 구현 특정 조건을 만족하는 입력은 항상 같은 방향으로 프로그램 내에 분기 → 프로그램 같은 동작을 하도록 하게 함 Equivalence Partitioning 해당 입력이 프로그램에 적용되었을 때 같은 행동을 하게 하는 기준(조건)을 바탕으로 구별 각 구획에 있는 입력은 프로그램에 실행되었을 때 같은 동작을 하게 됨 프로그램의 기능 Equivalence Partition이 1:1의 대응 관계를 가짐 프로그램 처리 불가능한 입력 방어적 프로그래밍. 즉 프로그램이 받아서는 압되는 입력이 들어왔을 때 이상 행동 대신 적절한 안내와 정상적인 종료를 하는 메커니즘 Expected or Leagal Inpu..
블랙박스 테스팅 Black Box Testing? 실행 가능한 프로그램을 대상으로 소스코드 등의 내부 정보 이용 없이, 테스트 입력 설계 실행하여 관찰된 결과물로 테스트를 수행한다. 내부 구조는 전혀 알 수 없고 사용할 수 없다. (= Functional Testing, Behavioural Testing) 기능적인 프로그램 스펙을 따르는 Black box Testing 예로는 유틸리티 파인드(Find)가 있다. 기능 어떠한 텍스트 패턴 지정 ↓ 주어진 텍스트 파일 안에서 해당 패턴 감지 유무를 찾음 ↓ 1회 또는 그 이상의 패터이 발생하는지 텍스트 파일 내에서 감지 ↓ 텍스트가 해당 패턴을 포함흘 경우 그 줄을 화면에 출력 조건 기능이 설명되어 있는 스펙만을 보고 적절하게 테스트 입력 디자인 ↓ 실행 ↓ 기능이 구현 ..
테스트 불가능한 프로그램 "Exhaustive 테스팅은 불가능 하다. 테스팅을 하는 이유는, 안하는 것보다 낫기 때문이다. Oracle을 이용하여 샘플한 입력에 대해 프로그램이 맞게 작동하는지 확인한다." -Elaine Weyuker Oracle Assumption (Oracle 가정) 테스트하고 있는 프로그램의 행동의 옳고 그름을 결정해줄 수 있는 메커니즘 아래와 같은 경우엔 오라클을 만들 수 있다는 자체가 무너짐 Assumption 1. Oracle을 애초에 쓸 수 없다 (예: 원주율의 정답을 정확히 모름) Assumption 2. Oracle이 존재하더라도, 많은 비용이 듦 테스팅이 불가능한 프로그램의 종류 Type 1. 프로그램 자체가 답을 모르는 문제를 풀기 위해 작성된 경우 (예: 원주율 계산 프로그램) → 명백한 이..
테스팅 자동화 기술 Exhaustive Testin 모든 입력에 대한 테스팅 수행은 불가능 소프트웨어 공학적인 측면의 비용에 맞는 테스팅 → 그 제품의 맥락에 맞는 적절한 수준의 테스팅 예를 들어, Mass Market 타깃의 소프트웨어는 오류가 하나도 없는지의 문제보다는 적절한 시간, 트렌드, 적당한 비용, 시장에 빨리 출시하는 것이 중요하다. 반면 의료기기에 탑재된 소프트웨어는 개발기간이 늘고 비용이 높아지더라도 소프트웨어에 오류가 없도록 하는 것이 중요하다. 소프트웨어 품질을 좋게 유지하기 위한 요소 정적 분석 코드 자체에 검증할 수 있는 부분을 최대한 검증 자동화된 테스팅 테크닉 복잡해지는 소프트웨어 시스템의 어려운 품질 검수 효율 높여 해당 도메인에 대한 지식 자동화된 기술은 모든 종류의 품질을 다 보장해줄 수 없..
에러, 결함, 실패 Fault 소스코드 자체에 있는 비정상적인 요소 Error 소스코드에 존재하는 fault가 실행되어 내부 상태가 오염됨 Failure Error가 프로그램 외부에서 관찰되는 상태 Fault → Error → Failure 프로그램 소스코드에 fault가 있거나, fault를 실행해서 error 상태가 돼도 프로그램이 정상적인 동작으로 복귀한 뒤에 성공적으로 실행을 마칠 수 있다. 예를 들어, void rotateLeft(int* rgInt, int size){ int i; for(i=0; i