테스트오라클

Test oracle

컴퓨팅, 소프트웨어 엔지니어링소프트웨어 테스트에서 테스트 오라클(또는 단지 오라클)은 테스트의 통과 여부를 판단하는 메커니즘이다.[1]오라클의 사용은 주어진 테스트 사례 입력에 대해 테스트 중인 시스템의 출력을 오라클이 제품이 가져야 한다고 결정한 출력과 비교하는 것을 포함한다."테스트 오라클"이라는 용어는 윌리엄 E에 의해 논문에서 처음 소개되었다.하우든.[2]다른 종류의 웅덩이에 대한 추가 작업은 일레인 위우커에 의해 탐구되었다.[3]

오르클은 종종 시험 대상 시스템과 별도로 작동한다.[4]그러나, 방법 위치 조건은 계약 모델에 의한 설계에서 자동화된 설명처럼 시험 대상 시스템의 일부분이다.[5]주어진 입력(및 프로그램 또는 시스템 상태 집합)에 대한 올바른 출력을 결정하는 것은 Oracle 문제 또는 테스트 Oracle 문제로 알려져 있는데,[6]: 507 Oracle 문제는 보기보다 훨씬 어려운 문제이며, 제어 가능성과 관찰 가능성과 관련된 문제를 다루는 것이 포함된다.[7]

분류

1978년에서 2012년까지의[6] 연구 문헌 조사는 몇 가지 잠재적인 시험 범주를 발견했다.

명시된

이러한 경구는 일반적으로 소프트웨어 모델링 및 소프트웨어 코드 구축에 대한 정형화된 접근방식과 관련된다.이 설계서는 공식 규격,[8] 시험 발광에 사용될 수 있는 모델 기반 설계,[9] 모델 기반 시험과[10] 프로토콜 적합성 시험에 도움이 되도록 오클을 도출할 수 있는 상태 전이 규격 [11]및 동등한 시험 신탁이 주장하는 계약에 의한 설계와 연결된다.

특정 테스트 오라클에는 여러 가지 난제가 있다.형식 규격은 추상화에 의존하며, 모든 모델이 모든 동작을 포착할 수 없기 때문에 자연스럽게 부정확한 요소를 가질 수 있다.[6]: 514

파생된

파생된 테스트 오라클은 시스템의 아티팩트에서 파생된 정보를 사용하여 정확하고 부정확한 동작을 구별한다.여기에는 문서화, 시스템 실행 결과 및 테스트 대상 시스템 버전의 특성이 포함될 수 있다.[6]: 514 회귀 테스트 제품군(또는 보고서)은 파생 테스트 오라클의 예로서, 이전 시스템 버전에서 얻은 결과를 향후 시스템 버전에 대한 보조(오라클)로 사용할 수 있다는 가정 하에 구축된다.예를 들어, 관찰된 잠재적 성능 저하에 대한 질문을 유발하기 위해 이전에 측정된 성능 특성을 향후 시스템 버전에 대한 Oracle로 사용할 수 있다.이전 시스템 버전의 텍스트 문서는 향후 시스템 버전에 대한 기대치를 안내하는 기준으로 사용될 수 있다.

사이비오라클은[6]: 515 파생된 시험오라클의 범주에 속한다.와이우커에서 정의한 사이비오러클은 별도로 작성된 프로그램으로,[12] 시험 중인 프로그램이나 시스템과 동일한 입력을 취하여, 그들의 출력이 조사해야 할 문제가 있는지 여부를 이해하는 데 비교될 수 있다.

부분 오라클은[6]: 515 지정된 테스트 오라클과 파생 테스트 오라클 사이의 하이브리드다.시험 대상 시스템의 중요(완전하지는 않지만) 특성을 명시한다.예를 들어, 변성 시험은 시스템의 여러 실행에서 변성 관계라고 불리는 그러한 속성을 이용한다.

암묵적

암묵적 시험 신탁은 묵시적 정보와 가정에 의존한다.[6]: 518 예를 들어, 프로그램 충돌, 즉 원하지 않는 행동으로부터 어떤 암묵적인 결론이 나올 수 있다. 즉, 문제가 있을 수 있다는 것을 결정하는 신탁이다.일부에서 음성 테스트라고 부르는지, 퍼징과 같은 특수 하위 세트가 있는 곳에서 원하지 않는 행동을 검색하고 테스트하는 방법은 여러 가지가 있다.

암묵적 시험에는 한계가 있다 - 암묵적 결론과 가정에 의존하기 때문이다.예를 들어, 시스템이 내결함성 시스템이고 따라서 자체 치유/자체 관리의 형태로 운영되는 경우에는 프로그램이나 프로세스 충돌이 우선순위가 아닐 수 있다.암묵적 테스트 경구는 환경 의존성으로 인해 잘못된 긍정에 취약할 수 있다.

인간

지정, 파생 또는 암묵적 시험 경구는 사용할 수 없는 경우 시험 경구를 결정하기 위한 사람의 입력이 필요하다.[7]이것들은 양적, 질적 접근법이라고 생각할 수 있다.[6]: 519–520 양적 접근법은 이해관계자가 목적 적합성 또는 소프트웨어 출시와 관련하여 의사결정을 할 수 있도록 시험 중인 시스템에 수집할 수 있는 적절한 양의 정보(예: 시험 결과)를 찾는 것을 목적으로 한다.정성적 접근방식은 입력 시험 데이터의 대표성과 적합성 및 시험 대상 시스템 출력의 맥락을 찾는 것을 목적으로 한다.예를 들어, 현실적이고 대표적인 시험 데이터를 사용하고 결과를 이해한다(현실적인 경우).이는 직감, 엄지손가락 규칙, 체크리스트 보조 도구 및 경험과 같은 경험적 접근방법에 의해 안내되어 시험 대상 프로그램/시스템에 대해 선택된 특정 조합을 맞춤화할 수 있다.

시험 경구는 가장 일반적으로 규격설명서에 기초한다.[13][14]모델 기반 설계 및 모델 기반 시험에 대한 입력으로 사용되는 공식 규격은 지정된 테스트 오라클의 예일 것이다.모델 기반 오라클은 동일한 모델을 사용하여 시스템 동작을 생성하고 검증한다.[15]사용이나 설치 안내서 또는 소프트웨어의 성능 특성 또는 최소 기계 요구 사항 기록과 같이 제품의 전체 사양이 아닌 문서는 일반적으로 파생된 테스트 오라클이 될 수 있다.

일관성 오라클은 유사성을 위해 한 테스트 실행의 결과를 다른 테스트 실행 결과와 비교한다.[16]이것은 파생된 테스트 오라클의 또 다른 예다.

소프트웨어 프로그램에 대한 신탁은 다른 알고리즘을 사용하여 테스트 대상 제품과 동일한 수학 식을 평가하는 두 번째 프로그램일 수 있다.이것은 사이비오라클의 예로서, 파생된 시험오라클이다.[12]: 466

구글 검색 중 반환된 결과 수가 정확한지 확인할 수 있는 완전한 신탁이 없다.우리는 후속적으로 좁혀진 검색이 더 적은 결과를 산출할 수 있도록 변형 관계를[17] 정의할 수 있다.이는 부분 오라클의 예로서, 지정된 테스트 오라클과 파생 테스트 오라클 사이의 하이브리드인 것이다.

통계적 오라클은 확률론적 특성을 사용한다.[18] 예를 들어, 테스트 오라클이 일치 또는 기타를 발음하기 위해 확실성과 불확실성의 범위가 정의되는 이미지 분석에서 말이다.이것은 인간 실험 신탁의 양적 접근법의 예가 될 것이다.

경험적 접근 신탁은 시험 입력물 종류에 걸쳐 대표적이거나 대략적인 결과를 제공한다.[19]이것은 인간 실험 신탁의 질적 접근법의 한 예가 될 것이다.

참조

  1. ^ Kaner, Cem; 블랙 박스 소프트웨어 테스트 과정, 2004
  2. ^ Howden, W.E. (July 1978). "Theoretical and Empirical Studies of Program Testing". IEEE Transactions on Software Engineering. 4 (4): 293–298. doi:10.1109/TSE.1978.231514.
  3. ^ 1980년 1월, 페이지 44-49, 페이지 44-49, 호놀룰루, 시스템 과학에 관한 제13차 국제 회의(ICSS)의 진행 중 "프로그램 시험의 Oracle 가정"
  4. ^ Pankaj, Jalote; 소프트웨어 엔지니어링에 대한 통합 접근법, Springer/Birkhauser, 2005, ISBN 0-387-20881-X
  5. ^ Meyer, Bertrand; Fiva, Arno; Ciupa, Ilinca; Leitner, Andreas; Wei, Yi; Stapf, Emmanuel (September 2009). "Programs That Test Themselves". Computer. 42 (9): 46–55. doi:10.1109/MC.2009.296.
  6. ^ a b c d e f g h Barr, Earl T.; Harman, Mark; McMinn, Phil; Shahbaz, Muzammil; Yoo, Shin (November 2014). "The Oracle Problem in Software Testing: A Survey" (PDF). IEEE Transactions on Software Engineering. 41 (5): 507–525. doi:10.1109/TSE.2014.2372785.
  7. ^ a b Ammann, Paul; and Offutt; Jeff; "소프트웨어 테스트 소개", Cambridge University Press, 2008, ISBN 978-0-521-88038-1
  8. ^ Börger, E (1999). Hutter, D; Stephan, W; Traverso, P; Ullman, M (eds.). High Level System Design and Analysis Using Abstract State Machines. Applied Formal Methods — FM-Trends 98. Lecture Notes in Computer Science. Vol. 1641. pp. 1–43. CiteSeerX 10.1.1.470.3653. doi:10.1007/3-540-48257-1_1. ISBN 978-3-540-66462-8.
  9. ^ Peters, D.K. (March 1998). "Using test oracles generated from program documentation". IEEE Transactions on Software Engineering. 24 (3): 161–173. CiteSeerX 10.1.1.39.2890. doi:10.1109/32.667877.
  10. ^ Utting, Mark; Pretschner, Alexander; Legeard, Bruno (2012). "A taxonomy of model-based testing approaches" (PDF). Software Testing, Verification and Reliability. 22 (5): 297–312. doi:10.1002/stvr.456. ISSN 1099-1689.
  11. ^ Gaudel, Marie-Claude (2001). Craeynest, D.; Strohmeier, A (eds.). Testing from Formal Specifications, a Generic Approach. Reliable SoftwareTechnologies — Ada-Europe 2001. Lecture Notes in Computer Science. Vol. 2043. pp. 35–48. doi:10.1007/3-540-45136-6_3. ISBN 978-3-540-42123-8.
  12. ^ a b Weyuker, E.J. (November 1982). "On Testing Non-Testable Programs". The Computer Journal. 25 (4): 465–470. doi:10.1093/comjnl/25.4.465.
  13. ^ Peters, Dennis K. (1995). Generating a Test Oracle from Program Documentation (M. Eng. thesis). McMaster University. CiteSeerX 10.1.1.69.4331.
  14. ^ Peters, Dennis K.; Parnas, David L. "Generating a Test Oracle from Program Documentation" (PDF). Proceedings of the 1994 International Symposium on Software Testing and Analysis. ISSTA. ACM Press. pp. 58–65.
  15. ^ Robinson, Harry; STAR West 1999, 신발끈에 대한 유한 상태 모델 기반 테스트
  16. ^ 호프만, 더글라스; 시험오라클분류체계 분석, 1998
  17. ^ Zhou, Z.Q.; Zhang, S.; Hagenbuchner, M.; Tse, T.H.; Kuo, F.-C.; Chen, T.Y. (2012). "Automated functional testing of online search services". Software Testing, Verification and Reliability. 22 (4): 221–243. doi:10.1002/stvr.437. hdl:10722/123864.
  18. ^ Mayer, Johannes; Guderlei, Ralph (2004). "Test Oracles Using Statistical Methods" (PDF). Proceedings of the First International Workshop on Software Quality, Lecture Notes in Informatics. First International Workshop on Software Quality. Springer. pp. 179–189.
  19. ^ Hoffman, Douglas; 휴리스틱 테스트 오라스, 소프트웨어 테스트 & 품질 엔지니어링 잡지, 1999

참고 문헌 목록

  • 바인더, 로버트 V. (1999년).테스트 객체 지향 시스템의 "18장 - 오라클": 모델, 패턴 및 도구, 애디슨-웨슬리 프로페셔널, 1999년 11월 7일 ISBN 978-0-201-80938-1