버그 잡이

[advanced android] android에서 Test란? TDD란? #Test와 AAC 본문

모던 안드로이드/Udacity Android with kotlin

[advanced android] android에서 Test란? TDD란? #Test와 AAC

버그잡이 2020. 4. 21. 11:38

AAC 관련 공부를 하면서 나는 '왜 이걸 써야하나?' 라는 질문을 계속 던졌다.

항상 나오는 답변이 "Test가 용이하다" 였다.

안타깝게도 지금까지 test를 공부해본 적이 없어서 이에 대해 공감할 수 없었는데 advanced android with kotlin 과정에 서 이와 관련된 갈증을 다소 해결할 수 있었다.

 

 

 

1. Test란 무엇인가?

 

앱이 버그 없이 잘 돌아가는지 실험해보는 것이다.

 

예를 들어 TodoList 앱을 만든다고 하였을때 목록이 잘 추가되는지 삭제는 잘 되는지 우리는 실험해보고 버그를 찾고 이를 고친다. 

 

이러한 과정을 정확하게는 Manual Test라고 한다. Manual의 사전적 정의를 살펴보면 '손으로 하는' 이라는 뜻이 있다. 즉, 수동으로 하는 테스트이다.

 

하지만 우리는 자동화의 미학 개발을 하는 사람들 아니겠는가? 코드를 통해서 이러한 수동 테스트를 자동화 할 수 있다.

우리는 test 코드를 먼저 작성하고 앱의 코드를 작성하면서 test 결과를 지속확인 할 수 있는 것이다. 이로써 우리는 그 말로만 듣던 TDD를 할 수 있는 것이다.

 

 

 

2. TDD

 

 - 코드를 짜기 전에 코드가 통과해야할 Test를 먼저 짜고 코드를 작성하면서 test를 지속 확인한다.

 - 이를 통해서 버그를 사전에 예상하고 방지할 수 있다.

 

TDD

 

 

 

3. Test의 종류

 

- 아래 사진처럼 좌측으로 갈수록 세분화 된 test, 우측으로 갈수록 여러 기능이 많이 뭉친 test이다.

 

*Unit Test : 하나의 기능 또는 클래스

 

*IntegrationTest : 여러개의 클래스 또는 한가지의 특성

 

*End to End Test : 앱에 대한 전체적인 테스트

 

- 두번째 사진과 같은 비율의 test를 추천한다고 한다.

 

 

Unit vs Integration vs EndtoEnd

 

위와 같은 비율의 테스트를 추천한다고 한다.

 

 

 

 

4. 클래스를 쪼개야 하는 이유 / AAC가 test에 용이한 이유

 

 

한 액티비티 안에 앱의 모든 기능이 들어가 있는 경우

 

- 위 그림 하나로 모든 것이 설명된다.

- 하나의 클래스에 앱의 모든 기능이 들어가 있는 경우 Unit Test와 Integration Test를 진행하기 힘들다.

 

 

- AAC를 활용하여 아래와 같이 쪼갠다면 Unit Test와 Integration Test를 보다 쉽게 진행할 수 있다.

 

 

 

 

 

 

 

 

 

결론

 

- Test, TDD가 뭔지 알게 되었다.

 

- ACC가 test에 왜 유리한지 알게 되었다.

 

- ACC와 TDD를 활용한 앱 개발을 해보자 

 

 

 

 

참고자료

https://www.youtube.com/watch?v=L8rwmdjVlQU&feature=emb_logo

반응형
Comments