반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 받은 트랙백

글 보관함


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 는 수정되거나 다시 작성되어야 한다.

• 테스트 데이터를 관리하는 것이 어렵다. 


위의 단점들이 테스트 자동화로부터 얻을 수 있는 잇점에 손상을 가할 수 있다. 테스트 자동화에는 이렇게 장점과 단점이 있음에도 세계적으로 널리 적용되고 있다.




반응형

Comment

  1. 잘 보고 갑니다. 오늘도 좋은 하루 되세요. ^^