VioletaBabel

테스팅 본문

기본개념/알고리즘공부
테스팅
Beabletoet 2017. 9. 15. 12:04

테스팅 관련 질문

1. 실생활에서 접하는 객체를 테스트하라

2. 소프트웨어 하나를 테스트하라

3. 주어진 함수에 대한 테스트 코드를 작성하라

4. 발생한 이슈에 대한 해결책을 찾아라


--

평가할 요소


1. 큰 그림을 이해하고 있는가 : 어느게 더 중요하고 어느게 덜 중요한지 우선순위를 매길 수 있는가.


2. 퍼즐 조각을 제대로 맞출 줄 아는가 : 소프트웨어가 어떻게 동작하는지와 그 소프트웨어가 더 큰 생태계의 일부로 어떻게 귀속되는지 이해하는가


3. 조직화 : 문제에 구조적으로 접근하고 있는가, 아니면 생각나는 대로 지르는가.


4. 실용성 : 실제로 적용 가능한 합리적인 테스트 계획을 세울 수 있는가



--

실제 세계에서 객체 테스트하기


1단계 : 사용자는 누구인가? 제품의 사용 목적은 무엇인가?

문제를 풀기 전에 해당 제품을 어떤 사용자가 어떤 목적으로 사용하는 지를 의논해봐야 한다.


2단계 : 어떤 use case가 있는가?

use case의 목록을 만들어 두면 유용하다.


3단계 : 한계 조건은?

그 제품이 한 번에 감당할 수 있는 용량이라거나 그런 것을 확인해둔다.


4단계 : 스트레스 조건과 장애 조건은?

문제가 없는 제품은 없다. 장애가 발생하는 조건을 분석하라.


5단계 : 테스트는 어떻게 수행할 것인가?

테스트와 관련된 세부사항을 이야기하라. 수작업 테스트 외에도 기계가 수행하는 자동화된 테스트 도입도 고려해보아야 한다.



--

소프트웨어 테스팅


- 수작업 vs 자동화

모든 것을 자동화하면 좋겠지만, 이는 불가능한 일이다. 인간과 컴퓨터는 둘 다 테스트 프로세스의 핵심 부분이다.


- 블랙박스 vs 화이트박스

블랙박스 테스트는 소프트웨어를 주어진 그대로 테스트하고, 화이트박스 테스트는 내부의 개별 함수들을 프로그램적으로 접근하여 테스트하는 것이다.

블랙박스 테스트를 자동화하는 것이 더 어렵다.



1단계 : 블랙박스, 화이트박스 테스트 중 어떤 것을 하고 있는가.

면접관에게 블랙박스, 화이트박스 테스트 중 어떤 것을 해야 하는지, 아니면 둘 다 해야 하는지를 확인하라.


2단계 : 누가 사용할 것인가? 왜 사용하는가?

소프트웨어는 여럿이 사용하므로 그 기능 또한 이 점을 염두에 두도록 하라.


3단계 : 어떤 use case들이 있는가?

면접관과 상의하며 use case들을 도출하라.


4단계 : 한계 조건은?

use case가 모호하게 정의되어 있다면 그게 무엇을 의미하는지 정확히 알아 낼 필요가 있다.


5단계 : 스트레스 조건과 장애 조건은?

소프트웨어에 장애가 발생하면 그 장애는 어떤 모습이어야 하는가? 그 장애를 해결할 방안에 대해서도 생각해보아라.


6단계 : 테스트 케이스는? 테스트 실행은 어떻게 하는가?

자동화는 좀 더 강력한 테스트를 가능하게 해주지만 큰 문제를 일으킬 수도 있다.

따라서 수작업 테스트 또한 테스트 절차에 포함되어야 한다.



--

함수 테스트

가장 쉬운 종류의 테스트이다.

입력과 출력을 확인하는 테스트가 주이다.

허나 대화는 중요하고 필요하다.


1단계 : 테스트 케이스 정의

- 정상적인 케이스 : 전형적인 입력에 대해 정확한 출력을 내는지 확인하라

- 극단적인 케이스 : 빈 배열을 인자로 넘기거나 아주 작거나 큰 배열을 넣는 등의 극단적인 케이스를 확인하라

- null 입력, illegal 입력 : 입력이 잘못 주어졌을 때 코드가 어떻게 동작하는가.

- 특수한 입력 : 출력과 일치하는 입력이 들어간다거나, 출력의 역으로 된 입력이 들어가는 등의 케이스를 확인하라.

요구사항이 불명확하면 면접관을 통해 필요한 부분을 알아내라.


2단계 : 예상되는 결과를 정의하라

예상되는 결과는 대체로 명확히 정의할 수 있다. 이외에 확인하고 싶은 사항이 있다면 그도 검사해보라.


3단계 : 테스트 코드를 작성하라.

테스트 케이스를 만들고 결과를 정의했다면, 그를 코드 형태로 구현해보라.



--

문제 해결에 관한 문제


1단계 : 시나리오를 이해하라

상황을 가능한 한 정확히 이해할 수 있도록 많은 질문을 던져라


2단계 : 문제를 쪼개라

문제를 테스트 가능한 단위로 분할하라.


3단계 : 구체적이고 관리 가능한 테스트들을 생성하라

방금 살펴본 구성요소들 각각에 대한 현실적인 지시사항을 만들어라.

'기본개념 > 알고리즘공부' 카테고리의 다른 글

정렬과 탐색  (0) 2017.09.14
시스템 설계 및 규모 확장성  (0) 2017.09.14
객체 지향 설계  (0) 2017.09.13
비트 조작  (0) 2017.09.11
그래프  (0) 2017.09.09
Comments