Threat Stack은 이제 F5 Distributed Cloud App Infrastructure Protection(AIP)으로 제공됩니다. 지금 바로 팀과 함께 Distributed Cloud AIP를 사용해 보세요today.
규모에 관계없이 모든 소프트웨어 개발 프로젝트는 체계적으로 계획하고 수행하는 테스트를 통해 이점을 얻을 수 있습니다. 테스트는 개발 중인 소프트웨어가 예상대로 작동하고 고객에게 가치를 제공하는지 확인하는 방법입니다. 더욱 중요한 것은 오늘날의 사이버 환경을 고려할 때, 철저한 테스트를 통해 소프트웨어의 무결성을 훼손할 수 있는 오류나 취약점이 포함된 채 출시되는 것을 방지할 수 있다는 점입니다. 한마디로, 우수한 테스트는 고객에게 성능상의 가치를 전달하는 동시에 기본적인 보안까지 제공할 수 있게 해 줍니다.
Threat Stack은 복잡한 풀스택 개발 환경을 갖추고 있어, 플랫폼의 모든 기능 영역을 효과적이고 효율적으로 테스트하려면 테스트 엔지니어링 팀에서 상당한 수준의 계획 수립과 의사 결정이 필요합니다. 여기에는 어떤 테스트 도구를 사용할지에 대한 결정도 포함됩니다. 적절한 도구를 사용하면 자동화를 도입할 수 있을 뿐만 아니라 테스트 속도와 반복성, 일관성, 결과의 정확성도 높일 수 있기 때문입니다.
이 글에서는 저희가 사용하는 자동화 테스트 도구 10가지를 소개하고, 여러분의 테스트 활동에 도움이 되기를 바라는 몇 가지 인사이트를 공유하고자 합니다.
하지만 도구를 살펴보기에 앞서, 테스트 엔지니어가 플랫폼과 인프라를 테스트할 때 고려하는 주요 영역을 살펴보며 배경을 짚어보겠습니다.
- Threat Stack 에이전트는 고객의 Amazon Web Services 가상 머신 환경에 내장되어 해당 머신을 추적하고 모니터링합니다. 이는 Ubuntu, Amazon Linux, Red Hat Enterprise Linux, CentOS, CoreOS 등의 Linux 배포판뿐만 아니라 Windows Server 2012 R2, 2016 또는 2019와 같은 Windows 운영 체제에도 적용됩니다.
- 고객이 컨테이너 또는 Kubernetes를 사용하고 있을 수 있으므로 보안 사고의 징후가 있는지 모니터링해야 합니다.
- 각 에이전트는 데이터를 Threat Stack Cloud Security Platform®으로 안전하게 전송하며, 전송된 데이터는 당사의 여러 마이크로서비스 중 하나를 통해 분석 및 처리됩니다.
- 이벤트 데이터는 호스트, 파일, CloudTrail, 위협 인텔리전스, 그리고 사용자 지정 규칙에 따라 처리되어 심각도별로 분류된 알림을 생성함으로써 고객의 DevOps 및 보안 팀이 시스템 내에서 발생하는 상황을 분석할 수 있도록 지원합니다.
- 모든 이벤트, 규칙 및 알림 데이터는 브라우저 기반 애플리케이션뿐만 아니라 Threat Stack API를 통해서도 액세스할 수 있어야 합니다.
- 고객은 이 데이터를 가져와 자체 외부 스토리지로 내보낸 후 직접 분석할 수 있습니다.
- Threat Stack Cloud Security Platform의 구성 요소인 Threat Stack Application Security Monitoring은 마이크로에이전트로 실행되며, 애플리케이션 페이로드를 모니터링하고 Threat Stack 플랫폼으로 정보를 전송하며 안전한 코딩 원칙에 어긋나는 실수가 발견되면 개발자에게 경고합니다. 또한 크로스 사이트 스크립팅 공격과 같은 악의적인 동작이 있는지 애플리케이션 페이로드를 모니터링합니다.
보시다시피, 당사의 소프트웨어는 매우 광범위한 영역을 다루며, 이를 빠르고 안전하고 정확하게 대규모로 처리해야 합니다. 이를 염두에 두고 당사에서 사용하는 몇 가지 테스트 도구를 살펴보겠습니다.
Threat Stack에서 사용하는 테스트 도구
각 기능 팀에 소속된 테스트 소프트웨어 엔지니어는 지속적으로 개발되는 새로운 기능을 테스트할 뿐만 아니라, 제품의 나머지 부분도 계속 예상대로 작동하도록 자동화 기능을 추가할 책임이 있습니다.
우리 조직이 이들을 얼마나 중요하게 여기는지를 보여 주듯, 각 테스트 엔지니어에게는 적절하다고 판단되는 자동화 방법, 도구 및 언어를 제안할 책임도 주어집니다. 아래에는 자동화 테스트 작업에 활용하는 도구 중 일부를 소개합니다. 실제로는 이보다 훨씬 다양한 도구를 사용하고 있습니다. 여기서는 몇 가지 도구를 살펴보고, 현재 진행 중인 특정 프로젝트에 가장 적합한 도구를 선택해야 한다는 점을 강조하고자 합니다.
면책 조항: 이 게시물에 언급된 리소스는 인지된 가치에 따라 순위를 매긴 것이 아닙니다. 또한 당사의 의견은 어떠한 형태의 보증이나 추천도 의미하지 않습니다. 당사의 목적은 여러분이 테스트 도구에 관한 지식을 넓히는 데 도움이 될 만한 정보를 제공하는 것뿐입니다.
1. Capybara
웹사이트: https://teamcapybara.github.io/capybara/
유형: 무료, 오픈 소스
최신 버전: 3.29.0(2019년 9월 2일)
Capybara는 엔드투엔드 사용자 인터페이스 테스트를 수행할 때 브라우저 기반 UI 자동화 테스트와 상호 작용하기 위해 Selenium과 함께 사용하는 Ruby gem입니다. Capybara에는 사용자가 페이지를 방문하고 텍스트 상자를 채우고 버튼을 클릭하거나, 드롭다운에서 선택하는 동작을 모방하는 기본 제공 메서드가 포함되어 있습니다.
소프트웨어 테스터를 가장 괴롭히는 문제는 페이지의 웹 요소를 불러오는 데 터무니없이 오랜 시간이 걸려 원인을 알 수 없는 테스트 실패가 발생하는 것입니다. Capybara에서 제공하는 각 메서드에는 대기 기능이 자동으로 내장되어 있습니다.
Capybara는 고객이 사용하는 방식과 거의 동일하게 제품을 조작하여 사용자 경험 문제를 테스트합니다. 애플리케이션에 로그인하고, 사이트를 탐색하고, 테스트 시스템에서 발생한 이벤트를 확인하고, 어떤 이벤트가 알림을 발생시킬지 결정하는 새 규칙을 만들고, 대시보드에 표시된 알림 정보를 자세히 살펴보고, 다양한 설정을 업데이트합니다.
2. ThoughtWorks의 Gauge
웹사이트: 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와 매우 유사하지만, 몇 가지 사소한 차이점이 있습니다:
- 테스트 계획은 Cucumber의 기능 파일 대신 Markdown으로 작성된 명세 파일에 포함되므로 테스트를 더 쉽게 작성하고 유지 관리할 수 있습니다.
- Cucumber의 Given / Then / When 형식 대신 테스트 단계가 글머리 기호 목록으로 나열됩니다.
동작 주도 개발(BDD) 도구인 Cucumber는 테스트가 복잡해질수록 설명이 다소 장황해질 수 있습니다. Gauge에서는 각 단계가 명확하고 간결하며 읽기 쉬운 글머리 기호 항목으로 표시됩니다. 또한 Gauge는 여러 형식(XML, JSON, HTML)의 보고서 생성 기능을 기본으로 제공합니다. 명령줄뿐만 아니라 Visual Studio Code와 같은 IDE에서도 사용할 수 있습니다. 마지막으로 설치, 명세 작성, 예제 튜토리얼 등 다양한 주제를 다루는 풍부한 문서가 제공됩니다.
3. Gatling 부하 테스트
웹사이트: https://gatling.io/
유형: 엔터프라이즈 및 오픈 소스 버전 모두 제공
최신 버전: 3.2.1(2019년 8월 27일)
Threat Stack에서는 Gatling을 사용해 지속적인 부하 테스트를 수행합니다. Scala로 작성된 Gatling은 독립 실행형 도구로 사용할 수도 있고, Maven을 통해 제품의 종속성으로 추가할 수도 있습니다.
속도와 성능을 입증하기 위해 테스트 환경에서 10분 만에 300만 건의 요청을 생성했으며, 모든 요청이 800밀리초 이내에 결과를 반환한다는 사실을 확인할 수 있었습니다.
BlazeMeter가 자사 블로그에서 언급했듯이, 부하 테스트에 Gatling을 사용해야 하는 8가지 이유에서는 다음과 같이 설명합니다. “Gatling은 별도의 플러그인을 추가하지 않아도 테스트 실행 후 확인할 수 있는 상세한 지표 대시보드를 생성합니다. 보고서는 HTML 파일로 저장되므로 향후 분석 및 지표 비교를 위해 손쉽게 보관할 수 있습니다. 또한 보고서는 대화형으로 제공되어 전체적인 현황뿐만 아니라 특정 요청에 초점을 맞춰 더욱 상세하게 분석할 수 있습니다.”
4. Chef.io의 Test Kitchen
웹사이트: https://kitchen.ci/
유형: 오픈 소스
지원: Chef.io 커뮤니티
최신 버전: 2.2.0(2019년 4월 26일)
Test Kitchen은 테스트 과정에서 사용하는 다양한 Amazon Web Services 환경의 생성과 제거를 자동화하기 위해 사용하는 Chef.io 제품입니다. Test Kitchen은 구성된 코드를 하나 이상의 플랫폼에서 격리된 상태로 실행할 수 있는 테스트 하네스 도구입니다. Kitchen은 기본적으로 Chef InSpec을 비롯한 다양한 테스트 프레임워크를 지원합니다. Kitchen은 모든 Chef 관리형 커뮤니티 쿡북에서 사용되며, 쿡북 통합 테스트에 가장 널리 사용되는 도구입니다.
Learn.Chef.io에는 체계적으로 구성된 일련의 교육 모듈과 데모가 있으며, 그중에는 Test Kitchen 시작하기라는 훌륭한 모듈도 있습니다.
5. ScalaTest
웹사이트: http://www.scalatest.org
유형: 무료, 오픈 소스
최신 버전: 3.0.8(2019년 6월 10일)
Threat Stack의 테스트 엔지니어들은 ScalaTest를 사용해 Scala 코드의 서비스 테스트를 작성하기 위해 소프트웨어 개발자들과 협업하기 시작했습니다.
통합 테스트에서는 ScalaTest 스타일 트레이트인 FeatureSpec을 사용하여 테스트 주도 개발(TDD) 방식의 단위 테스트를 Given / When / Then 형식으로 기술합니다. ScalaTest 문서에 따르면 FeatureSpec은 “각 테스트가 기능의 한 가지 시나리오를 나타내는 테스트 모음입니다. FeatureSpec은 단위 테스트보다 ‘상위 수준’의 테스트(예: 통합 테스트, 기능 테스트, 인수 테스트)를 작성하기 위한 것입니다.”
ScalaTest는 해당 사이트에서 상세한 빠른 시작 안내, 설치 절차, 사용자 가이드 등 다양한 유용한 문서를 제공합니다.
6. Chef InSpec
웹사이트: 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을 사용해 환경을 살펴보는 과정을 안내하는 유용한 섹션을 제공합니다.
7. Mocha
웹사이트: 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 사이트에서는 자세한 기능 개요, 설치 및 시작 방법부터 특정 기능과 작업에 관한 정보까지 다양한 주제를 다루는 문서를 제공합니다.
8. Cypress.io
웹사이트: https://www.cypress.io/
유형:
- 무료 오픈 소스 테스트 러너
- 상용 대시보드 서비스, 최대 3명의 사용자까지 무료
지원: Gitter 채팅; 유료 사용자 대상 이메일 지원
최신 버전: 3.4.1(2019년 7월 29일)
Cypress.io는 Chrome에서 작업 결과만 테스트하면 되는 JavaScript 프런트엔드 개발자를 위해 만들어졌습니다. Cypress는 애플리케이션과 동일한 실행 루프에서 실행되므로 Threat Stack 애플리케이션이 액세스할 수 있는 모든 함수, 창, 웹 요소, 타이머 및 서비스에 테스트 코드도 액세스할 수 있습니다. 또한 네트워크 트래픽을 실시간으로 확인하고 변경할 수 있어, 백엔드 서버에 액세스할 수 없을 때 어떤 일이 발생하는지 테스트하는 등 흥미로운 네거티브 테스트 사례를 추가할 수 있습니다.
Cypress.io는 테스트 작성 및 구성에 관한 정보를 비롯해 전반적인 개요, 시작 안내, 핵심 개념을 체계적으로 정리한 문서를 제공합니다. Cypress로 무엇을 할 수 있는지 궁금하신가요? TestAutomationU에서 새로운 강좌인 Cypress 입문을 출시했습니다.
9. Jest
웹사이트: https://jestjs.io
유형: 무료, 오픈 소스
지원: React Discord 채팅, JestJs Google 그룹
최신 버전: 24.9(2019년 8월)
당사의 풀스택 소프트웨어 개발자들은 Threat Stack Cloud Security Platform의 ReactJS 기반 프런트엔드 테스트 도구를 Mocha / Chai에서 Jest로 전환했습니다. Jest는 당사가 사용하는 ReactJS 컴포넌트 테스트를 위한 기본 지원 기능이 더 뛰어납니다. 이 JavaScript 테스트 프레임워크를 통해 더 나은 단위 테스트와 통합 테스트를 작성할 수 있습니다. ReactJS와 Jest는 모두 Facebook에서 제공하는 도구입니다.
이 글에서 소개한 다른 대부분의 도구와 마찬가지로, Jest 웹사이트에서는 시작 방법과 구성, 폭넓은 사용 사례를 다양한 예제와 함께 설명하는 문서를 제공합니다.
10. Apache JMeter
웹사이트: https://jmeter.apache.org/
유형: 무료, 오픈 소스
지원: JMeter Google 그룹
최신 버전: 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)으로 새롭게 제공됩니다. 지금 바로 팀과 함께 Distributed Cloud AIP를 사용해 보세요.
작성자 소개
관련 블로그 게시물
성평등을 향한 여정: 사이버 보안 분야에서 성공적인 커리어를 개척하는 방법에 관한 Jenn Gile과의 Q&A
F5의 ‘성평등을 향한 여정’ 시리즈 네 번째 Q&A에서는 Rachael Shah와 NGINX 제품 마케팅 책임자 Jenn Gile이 사이버 보안 직종에 대한 오해를 바로잡고, 사이버 보안 분야의 성별 격차를 해소하기 위한 조언과 그 이점에 대해 이야기합니다.
TLS 검사에서 피터 파커 원칙 다루기
“큰 힘에는 큰 책임이 따른다.” 볼테르와 처칠도 이와 비슷한 말을 남겼지만, 이 문구는 스파이더맨 코믹스에서 벤 삼촌의 말로 가장 널리 알려져 있습니다. 물론 이 문구가 문화적으로 널리 통용되는 이유 중 하나는 TLS 검사를 비롯해 수많은 상황과 주제에 적용할 수 있기 때문입니다.
Venafi와 F5를 통한 머신 아이덴티티 보호
‘머신 아이덴티티’란 간단히 말해 자동화된 프로세스가 자신의 신원을 식별할 수 있도록 하고, 다른 자동화 시스템과 프로세스가 관련 리소스에 적절한 수준의 접근 권한을 부여하도록 하는 방법을 의미합니다. 이 개념 자체는 새로운 것이 아닙니다. 비교적 새로운 점은 이를 구현해야 하는 규모입니다.
마이너와 미니언: 데이터 유출만이 비용을 초래하는 것은 아닙니다
물론 데이터 유출은 더 큰 비용을 초래할 수 있고(적어도 지금은), 실패 사실을 세상에 드러낼 수밖에 없게 합니다(통지 의무가 있으니까요). 하지만 보안을 단순히 데이터 노출 문제로만 봐서는 안 됩니다. 요즘은 데이터가...
내 클라우드에서 나가!
F5의 Jay Kelley가 전하는 최신 소식에는 Microsoft Office 365용 신규 ID 및 액세스 솔루션을 배포할 때 고려해야 할 사항이 정리되어 있습니다.
Shift(웹 앱) 보안 레터
웹 앱 보안을 개발 초기 단계로 앞당기세요. F5 블로그에서 DevOps 파이프라인 초기에 보안을 통합하여 취약점을 예방하고 시간을 절약하는 방법을 알아보세요.