Threat Stack은 이제 F5 Distributed Cloud App Infrastructure Protection (AIP)입니다. 오늘부터 팀과 함께 분산 클라우드 AIP를 사용해 보세요.
규모에 관계없이 모든 소프트웨어 개발 프로젝트는 잘 계획되고 잘 실행되는 테스트로부터 이익을 얻을 수 있습니다. 이는 귀하가 개발하는 소프트웨어가 예상대로 작동하고 고객에게 가치를 제공하는지 확인하는 방법입니다. 더 중요한 점은 현재 사이버 환경의 특성을 감안할 때 잘 실행된 테스트는 소프트웨어가 무결성을 손상시킬 수 있는 오류나 취약점과 함께 제공되지 않도록 보장하는 방법입니다. 한마디로, 효과적인 테스트를 통해 고객에게 성능 가치를 전달하는 동시에 기본적인 보안도 제공할 수 있습니다.
Threat Stack에서는 테스트 엔지니어링 팀 내에서 많은 계획과 의사 결정이 필요한 복잡한 풀스택 개발 환경을 갖추고 있습니다. 이를 통해 플랫폼의 모든 기능 영역이 효과적이고 효율적으로 테스트되고 있는지 확인할 수 있습니다. 여기에는 어떤 테스트 도구를 사용할 것인지에 대한 결정도 포함됩니다. 적합한 도구를 사용하면 자동화는 물론, 속도, 반복성, 일관성, 결과의 정확성을 높일 수 있기 때문입니다.
이 게시물에서는 우리가 사용하는 10가지 자동화 테스트 도구에 대해 논의할 것입니다. 여러분의 테스트 활동에 도움이 되기를 바라는 몇 가지 통찰력을 공유하는 것이 목표입니다.
그러나 도구를 살펴보기 전에 테스트 엔지니어가 플랫폼과 인프라를 테스트할 때 고려하는 주요 영역을 살펴보고 맥락을 파악해 보겠습니다.
보시다시피, 저희 소프트웨어는 광범위한 영역을 포괄하며 이를 빠르고, 안전하고, 정확하고, 대규모로 처리해야 합니다. 이를 염두에 두고 우리가 사용하는 몇 가지 테스트 도구를 살펴보겠습니다.
자체 기능 팀에 배치된 테스트 소프트웨어 엔지니어는 지속적으로 개발되는 새로운 기능을 테스트할 뿐만 아니라 나머지 제품도 예상대로 작동하는지 확인하기 위해 자동화를 추가하는 업무를 담당합니다.
우리 조직이 이들 사람들에게 두는 가치에 대한 증거로, 각 테스트 엔지니어에게는 적절하다고 생각되는 자동화 방법, 도구, 언어를 추천할 책임도 주어집니다. 아래는 자동화 테스트 작업에 도움이 되는 몇 가지 도구 목록입니다. 전반적으로 더 광범위한 툴셋을 사용한다는 점에 유의하시기 바랍니다. 여기서의 목표는 다양한 도구에 대해 논의하고 여러분이 작업하고 있는 특정 프로젝트에 가장 적합한 도구를 선택하도록 상기시키는 것입니다.
부인 성명: 이 게시물에 언급된 리소스는 인식된 가치에 따라 순위가 매겨지지 않았습니다. 또한 우리의 의견은 어떤 종류의 지지를 뜻하는 것은 아닙니다. 우리의 의도는 단순히 여러분이 테스트 도구에 대한 지식을 넓혀가는 데 도움이 될 수 있는 정보를 제공하는 것입니다.
웹사이트: https://teamcapybara.github.io/capybara/
유형: 무료, 오픈소스
지원하다: 루비-카피바라 구글 그룹
최신 버전: 3.29.0 (2019년 9월 2일)
Capybara는 종단 간 사용자 인터페이스 테스트를 수행할 때 브라우저 기반 UI 자동화 테스트와 상호작용하기 위해 Selenium과 함께 사용하는 Ruby 젬입니다. Capybara에는 사용자가 페이지를 방문하고 , 텍스트 상자를 채우고 , 버튼을 클릭하고 , 드롭다운을 선택하는 방법을 에뮬레이트하는 기본 제공 메서드가 포함되어 있습니다.
소프트웨어 테스터의 가장 큰 고민은 웹 요소가 페이지에 로드되는 데 너무 오랜 시간이 걸려서 설명할 수 없는 테스트 실패가 발생하는 것입니다. Capybara가 제공하는 각 방법에는 자동으로 대기 기능이 내장되어 있습니다.
Capybara는 고객과 매우 비슷하게 제품을 작동시키고, 애플리케이션에 로그인하고, 사이트를 탐색하고, 테스트 시스템에서 트리거된 이벤트를 보고, 어떤 이벤트가 알림을 트리거해야 하는지 결정하는 새로운 규칙을 만들고, 대시보드에서 찾은 알림 정보를 자세히 살펴보고, 다양한 설정을 업데이트하는 방식으로 사용자 경험 문제를 테스트합니다.
웹사이트: http://gauge.org
유형: 무료, 오픈소스
지원하다: GetGauge Google 그룹 , Gitter 채팅
최신 버전: 1.0.7 (2019년 8월 29일)
Gauge는 ThoughtWorks Studio India에서 만든 테스트 자동화 프레임워크로, UI 및 API 승인 테스트를 설정하는 데 사용합니다. Gauge는 Ruby와 함께 사용되지만 Java, C#, JavaScript, Python과도 호환됩니다. Gauge는 BDD 프레임워크인 Cucumber와 매우 유사하지만 약간의 차이점이 있습니다.
행동 주도 개발(BDD) 도구인 Cucumber는 테스트가 복잡할수록 약간 지루해질 수 있습니다. 게이지를 사용하면 각 단계가 명확하고 간결하며 읽기 쉬운 요점으로 표시됩니다. 또한 Gauge에는 여러 가지 형식(XML, JSON, HTML)에서 사용 가능한 기본 보고 기능이 있습니다. 명령줄과 Visual Studio Code 와 같은 IDE에서 모두 사용할 수 있습니다. 마지막으로 설치, 사양 작성, 예제 튜토리얼 등 다양한 주제를 포괄하는 풍부한 문서가 제공됩니다.
웹사이트: https://gatling.io/
유형: Enterprise 버전과 Open 소스 버전 모두
지원하다: 개틀링 구글 그룹
최신 버전: 3.2.1 (2019년 8월 27일)
Gatling은 Threat Stack에서 지속적인 부하 테스트를 제공합니다. Scala로 작성되었으며, 독립 실행형 도구로 사용할 수도 있고, Maven을 사용하여 제품에 대한 종속성으로 사용할 수도 있습니다.
속도와 성능을 보여주는 실험으로, 우리는 테스트 환경에서 10분 만에 300만 개의 요청을 생성할 수 있었고, 모든 요청이 800밀리초 이내에 결과를 반환했다는 것을 확인할 수 있었습니다.
BlazeMeter가 블로그 "부하 테스트에 Gatling을 사용해야 하는 8가지 이유" 에서 언급한 대로 "Gatling은 추가 플러그인을 추가하지 않고도 테스트 실행 후에 볼 수 있는 자세한 메트릭 대시보드를 만들었습니다. 보고서는 HTML 파일로 저장되므로, 추후 분석이나 지표 비교를 위해 쉽게 저장할 수 있습니다. 또한 보고서는 대화형입니다. 이를 통해 더 자세한 분석을 수행하고 전반적인 그림 외에도 특정 요청에 집중할 수 있습니다."
웹사이트: https://kitchen.ci/
유형: 오픈소스
지원하다: Chef.io 커뮤니티
최신 버전: 2.2.0 (2019년 4월 26일)
Test Kitchen은 Chef.io 제품으로, 테스트 작업 중에 사용하는 다양한 Amazon Web Services 환경을 자동으로 시작하고 종료하는 데 사용합니다. Test Kitchen은 구성된 코드를 하나 이상의 플랫폼에서 격리하여 실행하는 데 사용할 수 있는 테스트 하네스 도구입니다. Kitchen에서는 Chef InSpec을 비롯하여 다양한 테스트 프레임워크가 기본적으로 지원됩니다. Kitchen은 모든 Chef가 관리하는 커뮤니티 요리책 에서 사용되며 요리책을 위한 통합 테스트 도구로 선택되었습니다.
Learn.Chef.io는 잘 고안된 일련의 교육 모듈과 데모를 제공하는데, 그 중에는 Test Kitchen 시작하기 라는 훌륭한 모듈도 있습니다.
웹사이트: http://www.scalatest.org
유형: 무료, 오픈소스
지원하다: ScalaTest 구글 그룹
최신 버전: 3.0.8 (2019년 6월 10일)
Threat Stack의 테스트 엔지니어는 ScalaTest를 사용하여 Scala 코드에 대한 서비스 테스트를 작성하기 위해 소프트웨어 개발자와 협력하기 시작했습니다.
통합 테스트에서는 ScalaTest 스타일 특성인 FeatureSpec을 사용하여 Given / When / Then 형식으로 테스트 주도 개발(TDD) 스타일의 단위 테스트를 설명합니다. ScalaTest Doc 에 언급된 대로, FeatureSpec은 "각 테스트가 기능의 한 시나리오를 나타내는 테스트 모음"입니다. FeatureSpec은 단위 테스트보다 '더 높은 수준'의 테스트를 작성하기 위한 것입니다. 예를 들어, 통합 테스트, 기능 테스트, 수용 테스트 등이 있습니다."
ScalaTest는 사이트에서 자세한 빠른 시작, 설치 절차, 사용자 가이드를 포함하여 많은 유용한 문서를 제공합니다.
웹사이트: https://kitchen.ci/docs/verifiers/inspec/
유형: 무료, 오픈소스
지원하다: Chef.io 커뮤니티
최신 버전: (2019년 8월 11일)
Threat Stack에서는 Chef InSpec을 사용하여 Ruby 기반 테스트를 생성하고, 테스트 환경이 즉석에서 생성되면 모든 것이 예상대로 작동하는지 확인합니다. InSpec 테스트는 사람이 읽을 수 있도록 만들어졌습니다. RSpec 과 같은 테스트 프레임워크에 익숙하다면 InSpec 코드도 익숙할 것입니다. InSpec은 불일치 사항을 감지하고 보고서 형식으로 차이점을 문서화합니다. 그런 다음 원하는 상태로 시스템을 만들기 위해 필요한 Chef 변경을 수행하면 됩니다.
시작을 돕기 위해 Learn Chef Rally에는 Docker 및 Docker Compose 환경 설정, 샘플 환경 다운로드, InSpec을 사용하여 환경 탐색 방법을 안내하는 유용한 세그먼트가 있습니다.
웹사이트: https://mochajs.org/
유형: 무료, 오픈소스
지원하다: Mocha Gitter 그룹 , Mocha Google 그룹
최신 버전: 3.2.1 (2019년 8월 27일)
Mocha는 Node.js와 브라우저에서 실행되는 JavaScript 테스트 프레임워크로, 비동기 테스트를 수행할 수 있게 해줍니다. Mocha 테스트는 연속적으로 실행되므로 보다 유연하고 정확한 보고가 가능하며, 처리되지 않은 예외를 올바른 테스트 사례에 매핑할 수 있습니다.
Node.js 환경에서 Mocha를 사용하면 내장된 assert 모듈을 어설션 라이브러리로 사용할 수 있습니다. Threat Stack에서는 Mocha와 Chai를 페어링하여 Threat Stack 애플리케이션 보안 모니터링 기능에 대한 테스트 프레임워크를 만듭니다.
Mocha 사이트는 자세한 기능 개요, 설치 및 시작부터 특정 기능 및 작업에 대한 정보까지 모든 것을 다루는 다양한 문서를 제공합니다.
웹사이트: https://www.cypress.io/
유형:
지원하다: Gitter 채팅 ; 유료 사용자를 위한 이메일 지원
최신 버전: 3.4.1 (2019년 7월 29일)
Cypress.io는 Chrome에서만 작업을 테스트하면 되는 JavaScript 프런트엔드 개발자를 위해 만들어졌습니다. Cypress는 우리 애플리케이션과 동일한 실행 루프에서 실행됩니다. 즉, Threat Stack 애플리케이션에서 액세스할 수 있는 모든 함수, 창, 웹 요소, 타이머 및 서비스에 우리 테스트 코드도 액세스할 수 있습니다. 또한, 실시간으로 네트워크 트래픽을 읽고 변경할 수 있으므로 백엔드 서버에 접근할 수 없는 경우 어떤 일이 발생하는지 테스트하는 등 흥미로운 부정 테스트 사례를 추가할 수 있습니다.
Cypress.io는 견고한 개요, 시작 정보, 테스트 작성 및 구성에 대한 정보를 포함한 핵심 개념을 제공하는 잘 정리된 문서를 제공합니다. Cypress가 무엇을 할 수 있는지 보고 싶으신가요? TestAutomationU에서 Cypress 소개라는 새로운 과정이 출시되었습니다.
웹사이트: https://jestjs.io
유형: 무료, 오픈소스
지원하다: React Discord Chat , JestJs Google 그룹
최신 버전: 24.9 (2019년 8월)
풀스택 소프트웨어 개발자들은 Threat Stack Cloud Security Platform ReactJS 기반 프런트엔드 테스트를 Mocha/Chai에서 Jest로 전환했습니다. Jest는 당사에서 사용하는 ReactJS 구성 요소를 테스트하는 데 더 나은 기본 제공 지원 기능을 갖추고 있습니다. 이 JavaScript 테스트 프레임워크를 사용하면 더 나은 단위 및 통합 테스트를 만들 수 있습니다. ReactJs와 Jest 두 툴셋은 모두 Facebook에서 제공합니다.
이 게시물에서 다루는 대부분의 다른 도구와 마찬가지로 Jest 웹사이트에서는 시작 방법, 구성 및 포괄적인 범위의 사용 사례 시나리오를 다루는 예제가 풍부한 설명서를 제공합니다.
웹사이트: https://jmeter.apache.org/
유형: 무료, 오픈소스
지원하다: JMeter 구글 그룹
최신 버전: 5.1.1 (2019년 3월 13일)
Apache JMeter는 기능적 동작에 대한 부하 테스트를 실시하고 성능을 측정하도록 설계된 오픈 소스 소프트웨어입니다. 해당 사이트에 따르면, JMeter는 "정적 및 동적 리소스, 웹 동적 애플리케이션 모두에서 성능을 테스트하는 데 사용될 수 있습니다. 서버, 서버 그룹, 네트워크 또는 객체에 대한 무거운 부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있습니다."
우리는 JMeter를 사용하여 애플리케이션과 서비스의 성능을 분석하고 측정합니다. 이를 통해 여러 사용자 트래픽이 동시에 발생하는 무거운 부하 상황에서 애플리케이션을 테스트하여 확장 능력을 어떻게 개선할 수 있는지 확인할 수 있습니다.
JMeter는 시작하기, 사용자 설명서, 모범 사례 등의 유용한 문서와 여러 가지 단계별 튜토리얼을 제공합니다.
Threat Stack의 테스트 엔지니어가 아무리 뛰어나더라도 강력한 도구로 뒷받침되는 체계적인 프로세스 없이는 큰 성과를 낼 수 없습니다. 플랫폼이 진화함에 따라 저희 팀은 전문성을 계속 연마하고, 기술과 지식을 지속적으로 업그레이드하고, 새로운 도구를 채택하고 통합하며, 새로운 방법을 개발하여 Threat Stack SDLC에 지속적으로 가치를 더하도록 합니다. 이 게시물이 저희 테스트 팀이 다양한 자동화된 테스트 도구를 사용하여 클라우드 보안 플랫폼 내의 여러 기능을 처리하는 방법에 대한 통찰력을 제공했기를 바랍니다.
Threat Stack은 이제 F5 Distributed Cloud App Infrastructure Protection (AIP)입니다. 오늘부터 팀과 함께 분산 클라우드 AIP를 사용해 보세요.