Automated Testing Advantages, Disadvantages and Guidelines
이 글은 Automated Testing에 대한 간략한 소개로 시작합니다. Automated Testing의 다른 방법들과 잇점 그리고 Automated teste들이 automation의 잇점을 충분히 활용하기 위해 반드시 따라야 하는 가이드 라인 등도 함께 소개 됩니다.
Advantages of Automated Testing
Introduction:
"Automated Testing"은 현재 사용하고 있는 manual testing 과정을 자동화 하는 겁니다. 이를 위해서는 먼저 현재 회사나 조직에서 사용하고 있는 manual testing process를 formalized 해야 겠죠.
Automation은 manual 혹은 human involvement를 줄이고 기술이 필요로 하지 않은 반복적이거나 redundant 한 일들을 줄이기 위한 strategy, tool, artifact들이다.
최소한 아래의 프로세스들이 포함된다. :
- 예상되는 결과를 포함한 자세한 테스트 케이스. 이 테스트 케이스는 Business Functional Specification과 Design documentation을 바탕으로 개발 된다.
- standalone Test Environment. 테스트 케이스가 매번 반복될 때마다 어플리케이션에 수정되면서 적용될 수 있도록 하는 미리 정해진 constant 같은 것들이 restorable 될 수 있도록 하는 Test Database 같은 것들이 포함 되어야 한다.
아래와 같은 테스트 타입이 자도화 될 수 있습니다.
* Functional – 항상 예상대로 진행 되어야 하는 것들에 대한 테스트
* Regression – 어떤 시스템의 동작이 변경되지 말아야 되는 경우에 대한 테스트
* Exception or Negative – 시스템에 일부러 에러를 일으켜서 테스트 해야 되는 경우
* Stress – 어플리케이션이나 operational infrastructure 의 capacity 를 측정해야 될 경우*
* Performance – 시스템의 퍼포먼스가 business projection, 요구조건과 관계된 온라인 트랜잭션 과 batch run들 모두에 대해 알맞게 이루어 지고 있음을 보여주어야 할 필요가 있을 때.
* Load – 시스템의 capacity와 performance가 하드웨어나 소프트웨어의 업그레이드가 필요할 정도로 노화되는 시점을 파악할 필요가 있을 때
Benefits of Automated Testing
* Reliable: 매번 실행될 때마다 정확하게 동일한 동작을 시행함으로서 human error를 줄일 수 있다.
* Repeatable: 같은 동작에 대해 반복 시행될 경우 소프트웨어가 어떻게 작동하는지 테스트 할 수 있음.
* Programmable: 어플리케이션의 알려지지 않은 부분을 알아내기 위한 정교한 테스트를 프로그램할 수 있음.
* Comprehensive: 어플리케이션의 여러 기능들을 한번에 테스트하는 test suite를 만들어 사용할 수 있음
* Reusable: 하나의 테스트 케이스를 여러 버전의 어플리케이션에 적용할 수 있다. (유저 인터페이스가 바뀐 경우에도 사용할 수 있다.)
* Better Quality Software: 적은 resource로 짧은 시간에 더 많은 테스트를 진행할 수 있다.
* Fast: Automated Tool은 사람이 하는 것보다 훨씬 빨리 일을 처리 할 수 있다.
* Cost Reduction: Regression을 위한 테스트 인원을 감원할 수 있다.
해당 작업에 알맞는 tool을 고르는 것과 deploy를 위해 해당 조직의 제대로 된 적용 범위를 정함으로서 이러한 잇점을 최대화 할 수 있다. Automation 이 반드시 사용되어야 할 알맞는 적용 범위를 정하는 것이 중요하다.
아래의 분야들은 반드시 자동화 되어야 한다.
1. 중복적으로 진행되는 일이나 시나리오.
2. 단순하고 오래 걸리며 human error를 일으 킬 수 있는 반복적인 일
3. 잘 개발 되고 잘 구성되어진 use case나 시나리오 우선으로 자동화
4. 상대적으로 안정된 부분
Automated tester들은 자동화의 장점을 최대화 하기 위해 아래 가이드 라인을 따라야 한다.
• Concise: 최대한 간단하게
• Self-Checking: Test Report에 모든 결과가 있도록. 사람이 별도의 분석작업을 할 필요가 없도록
• Repeatable: 사람의 개입 없이 여러번 테스트가 진행될 수 있도록
• Robust: 테스트의 결과가 항상 같아야 함. 테스트가 외부적인 변화에 영향을 받지 않도록 해야 함
• Sufficient: Tests verify all the requirements of the software being tested. 해당 소프트웨어에 대한 요구조건을 모두 검증할 수 있어야 함
• Necessary: 각 테스트 마다 특정 테스트 사항들이 포함돼 있어야 한다.
• Clear: 모든 statement가 이해하기 쉬워야 한다.
• Efficient: 테스트 실행 시간이 적당해야 한다. (너무 길면 안된다.)
• Specific: 각 기능마다 failure point가 있어야 한다. unit test failures provide "defect triangulation".
• Independent: 각 테스트는 임의의 suite 내에 있더라도 독립적으로도 실행 될 수 있어야 한다.
• Maintainable: 테스트는 쉽게 이해하고 수정하고 확장 될 수 있도록 만들어야 한다.
• Traceable: 요구사항의 시작과 끝과 같이 테스트의 시작과 끝을 추적할 수 있어야 한다.
Disadvantages of Automation Testing
자동화 테스트가 많은 장점을 가지고 있지만 단점도 있다. 아래에 그 단점들이 있다.
• 자동화 테스트 script를 작성할 수 있는 인원이 필요하다.
• 디버깅하는 것이 가장 이슈인 부분이다. 테스트 스크립트에 에러가 있는 경우 deadly consequences에 이르게 할 수 있다.
• playback method들인 경우 테스트를 유지관리 하는데 비용이 든다. GUI에 약간의 변화가 있어도 test script 는 수정되거나 다시 작성되어야 한다.
• 테스트 데이터를 관리하는 것이 어렵다.
위의 단점들이 테스트 자동화로부터 얻을 수 있는 잇점에 손상을 가할 수 있다. 테스트 자동화에는 이렇게 장점과 단점이 있음에도 세계적으로 널리 적용되고 있다.
Software Testing Best Practices
Bug Reporting – Art and Advocacy
Software Testing Myths
Challenges in Testing Web Based Applications
Auditing Software Testing Process
Testing for Agile Software Development
What is User Acceptance Testing?
System Testing: Why? What? & How?
What is Regression Testing?
Integration Testing: Why? What? & How?
Unit Testing: Why? What? & How?
Effective Software Testing
Metrics Used In Testing
Syllabus for Certified Software Tester
Software Quality Management
Software Project Planning
Software Cost Estimation
Risk Analysis
Technical Terms Used in Testing World
Bug Life Cycle & Guidelines
So you want to be a Software Tester?
Automated Testing Best Practices
Database Checkpoints in WinRunner
Data Driven Tests using WinRunner
Why Choose LoadRunner for Performance testing
Testing : Introduction to CMM
Automated Testing Advantages, Disadvantages and Guidelines
Testing Types
WinRunner – TSL Functions
Life Cycle of Testing Process
Best Practices in Automated Testing
A Unit Ttesting Framework for the Oracle PL/SQL Language
Usability Engineering – Usability Testing
Functional Testing Tools
SDLC : Software Development Life Cycle
QuickTest Professional 8.0 CBT Tutorial and Evaluation Copy
SQL Unit Testing Tools
Microsoft .NET Unit testing Tools
XML Unit Testing tools Series 1
'TDD Project' 카테고리의 다른 글
QA 엔지니어가 하는 일 (0) | 2015.12.12 |
---|---|
좋은 Test Strategy 문서를 만들기 위한 7가지 요소 -2- (0) | 2014.12.10 |
좋은 Test Strategy 문서를 만들기 위한 7가지 요소 -1- (0) | 2014.12.10 |
TDD Project Production Deployment 경험.... (0) | 2014.03.17 |
[JAVA] getInstance() 와 관련해서.... (2) | 2014.03.11 |
JAVA DATE 함수 사용. 날짜 계산하기 (0) | 2014.01.27 |
미국 IT 프로젝트 참여 과정과 개발환경 세팅하기 (0) | 2013.11.15 |
Jenkins 에 대한 개요 (0) | 2013.11.08 |
새로운 프로젝트, 새로운 기술, 배울것들이 많아서 좋다. (1) | 2013.11.07 |
JUnit 4 와 TestNG 비교하기 (0) | 2013.11.03 |