테스트 자동화 및 Remote Testkit – Mobile app testing -Remote TestKit

Remote TestKit

Device Cloud for
Mobile App Testing

2023/10/31 |

테스트 자동화 및 Remote Testkit


1. 소개

프로그램 작성을 좋아하시나요?
이 글를 읽는 대부분의 사람들은 직업적으로 프로그램을 작성하고 매일 어떤 방식으로든 소프트웨어 개발에 참여한다는 것은 안전한 가정입니다. 매일 코딩하는 많은 프로그래머들은 작업하면서 새로운 것을 만들고 배우는 스릴을 즐깁니다.
하지만 테스트 프로그램을 좋아하시나요?
이 질문에 많은 분들이 부정적으로 답변하셨다면 놀랄 일이 아닙니다. 사실, 일반적인 반응에는 열광적인 " 싫다", "지루하다", "아프다" 등이 포함될 가능성이 높습니다. 그러나 오늘날 소프트웨어 사회의 복잡성과 중요성으로 인해 테스트가 불필요하다고 주장할 엔지니어를 찾기가 어려울 것입니다. 엔지니어들은 종종 테스트의 중요성을 충분히 이해하고 있으며, 프로그래밍은 단순히 즐길 수 있는 일이 아니라 책임감이 있는 일이기 때문에 테스트를 한다고 말합니다.
이러한 불일치의 원인은 무엇입니까? 또한 이 지루한 테스트 작업을 모두가 즐기는 프로그래밍 작업처럼 만들 수 있는 방법이 있습니까? 게다가 생산성이 높다고는 할 수 없고 오히려 프로그래밍보다 노동 집약적인 경향이 있는 테스트 작업의 효율성을 높일 수 있는 방법은 없을까?
이 글에서는 소프트웨어를 보다 효율적으로, 보다 적극적으로, 그리고 더욱 즐겁게 테스트하는 방법에 대한 힌트를 제공합니다. 또한 이 글에서는 Remote TestKit이 첨단 스마트폰 앱 개발 기술을 높은 수준의 효율성으로 원활한 개발을 가능하게 하는 필수 도구로 통합하는 방법을 보여줍니다.

2. 소프트웨어 개발 프로세스 및 테스트

소프트웨어 개발은 ​​주로 아래와 같은 방법을 기반으로 진행되며, 테스트 결과 코드의 품질을 평가하는 데 사용됩니다:

1) V-model

v-모델은 전통적인 소프트웨어 개발 기술입니다.
이 모델은 개발 프로세스를 설계, 구현(코딩) 및 테스트 단계로 나눕니다.

오랜 실적을 보유한 유명 모델이지만 설계와 테스트 과정이 분리되어 있고 상대적으로 많은 자원이 필요해 프로젝트 규모도 커지는 요인입니다.

개발자가 버그나 기타 문제를 파악하는 과정과 이를 수정하는 과정이 분리되어 있기 때문에 수정이 이루어지기까지 오랜 시간이 걸립니다. 즉, 문제 해결을 위한 '피드백 루프'가 길고, 응답 속도도 느립니다.

V2

Fig. (V-Model)

3. Test-Driven Development (TDD)

이 기법은 agile 개발을 구현하는 수단으로 2010년부터 채택되기 시작했습니다.
TDD의 핵심은 "테스트 우선(test first)"하는 것입니다. 이는 프로덕션 코드가 구현(코딩)되기 전에 테스트용 코드를 생성해야 함을 의미합니다. TDD 개발 기술은 이러한 "테스트 우선(test first)" 철학을 기반으로 합니다. 절차는 아래와 같습니다:

  1. 구현해야 하는 기능과 관련하여 할 일 목록을 만듭니다.
  2. 할 일 목록에서 테스트 코드를 만듭니다.
  3. (빨간색) 먼저 빈 코드를 구현합니다. 물론 이 시점에서 테스트하면 오류가 발생합니다.
  4. (녹색) 앞서 언급한 테스트에서 발생하는 오류를 없애기 위해 필요한 최소한의 코드를 작성하고 구현합니다.
  5. (리팩토링) 최소한으로 구현된 코드의 세부 사항을 검토하고 보다 적합한 방식으로 다시 작성합니다.

TDD를 사용하면 먼저 객체로 구현된 코드의 적절한 동작을 위한 규칙이 설정되고, 그런 다음 이러한 규칙을 만족하는 코드를 생성하고 구현하는 작업이 진행됩니다. 여기서 "객체"에 대한 명시적인 참조는 이 기술이 객체 지향 프로그래밍과 높은 친화성을 갖고 있으며 코드 구현과 테스트를 결합하는 "작은 피드백 루프"로 구성된다는 사실을 반영합니다. 이를 통해 특정 영역의 문제를 해결하는 데 필요한 응답 시간을 크게 줄일 수 있습니다.

반면 TDD에서는 프로그래머가 테스트 코드를 작성해야 하므로 처음에 필요한 작업 시간이 늘어납니다. 더욱이 객체지향 사고방식이 광범위하게 사용되기 때문에 많은 프로그래머들은 이러한 사고방식과 문화에 적응해야 하는 필요성에 대해 혼란스럽고 어려움을 겪고 있습니다. 물론, 프로그래밍을 통해 다루기 어려운 영역은 TDD를 사용해도 여전히 관리하기 어려울 것입니다. 일반적으로 V-model 개발 시 단위(모듈) 테스트 영역에는 TDD가 채택됩니다. "프로그래밍으로 처리하기 어려운 영역"이란 물리적인 물체, 사람 등 컴퓨터가 제어할 수 없는 영역의 범위를 말합니다. 구체적으로는 사람의 개입 없이는 접근할 수 없는 휴대폰, 스마트폰, 개인에 의존하는 업무 프로세스를 의미합니다.

TD1

그림. (Test-Driven Development [TDD]의 단계)

4. 후속 테스트 및 Remote TestKit

이 TDD 루프 구성은 단위 테스트에서 통합 테스트/기능 테스트, 시스템 테스트로 이어지는 루프를 통해 로봇 및 기타 장치 개발에 사용되는 제어 이론 유형으로 범위가 확장될 수 있습니다. 이는 Norbert Wiener가 주창한 cybernetics(보충 설명)를 소프트웨어 개발에 적용한 사례로도 볼 수 있습니다.
최근에는 Jenkins (보충 설명)와 같은 CI(지속적 통합) 도구가 주목을 받고 있습니다.
이 도구는 컴파일의 추가 자동화 또는 Selenium (보충 설명) 또는 모든 유형의 사이트 및 앱 개발을 자동화하는 기타 도구와의 연결을 위한 허브로 사용할 수 있습니다.
반면 Remote TestKit은 네트워크를 통해 실제 스마트폰에 접속할 수 있는 서비스입니다.
이 서비스는 가까이에 있지 않더라도 많은 스마트폰을 포함하는 테스트 환경을 편리하게 구축할 수 있는 방법을 제공합니다. 개발자가 많은 기기를 준비하는 데 따른 비용을 들이지 않고, 공간 제약에 맞춰 모든 기기를 설정할 필요 없이 실제 스마트폰에서 제품을 테스트할 수 있다는 장점이 있습니다. 네트워크를 통해 실제 스마트폰의 사용자 인터페이스에 액세스할 수 있는 기능은 이보다 훨씬 더 큰 가능성을 열어줍니다.
즉, 앞서 언급한 항목을 모두 연결함으로써 개발과 관련된 거의 모든 항목을 네트워크로 연결하는 것이 가능합니다.

또한, 과거에는 포함하기 어려웠던 실제 기기까지 테스트 자동화의 범위를 확장할 수 있습니다.

5. 후속 글에서 소개되는 주제

후속 글에서는 자동 테스트 생태계를 구축하기 위해 이러한 도구를 Remote TestKit과 연결하는 기술과 함께 다양한 특정 오픈 소스 CI 도구를 사용하는 방법을 소개합니다.

용어 사전

Cybernetics
기계공학, 시스템공학, 생리학, 사회학 등 광범위한 분야를 통일적으로 다루기 위해 통신공학과 제어공학을 결합한 Norbert Wiener(1894~1964)가 제창한 학문입니다.
Jenkins
오픈 소스 지속적 통합 도구입니다.
CI: Continuous Integration
빌드, 테스트, 문서 작성 등을 지속적으로 실행하고 다양한 개발 작업 및 제조의 품질을 향상시킵니다.
Selenium
웹 애플리케이션을 테스트하기 위한 도구입니다. 이 도구는 브라우저의 작업을 기억하고 실행할 수 있습니다.
Nomad
Nomad는 IT를 활용하여 정리된 사무실이 아닌 다양한 장소에서 업무를 수행할 수 있는 업무 스타일입니다.
Deploy
개발된 소프트웨어를 대상 환경에 설정하여 실행할 준비를 합니다. 넓은 의미에서는 관련 모듈, 구성 파일, 접근 제한 등이 포함된 전체 대상 시스템에 대한 다양한 설정을 준비한다는 의미가 추가된 소프트웨어를 설치하는 것과 유사합니다.

참고 문헌


시작하기!

350개 이상의 인기 모델 중에서 선택할 수 있습니다.
Remote TestKit을 사용하면 전 세계의 다양한
Android 및 iOS 스마트폰을 원격으로 대여할 수 있습니다.