DevOps World에서 테스트

DevOps는 소프트웨어 개발 및 제공을위한 개발 및 운영 관행의 통합입니다.

DevOps 제공 모델에 관련된 테스터는 다음과 같은 질문을 시작합니다.

  • DevOps 모델에서 테스트는 어디에 적합합니까?
  • DevOps의 테스트 및 QA는 Agile 및 Waterfall 모델의 테스트와 어떻게 다릅니 까?
  • QA로서 내가 알아야 할 추가 기술은 무엇입니까?

이 게시물에서는 DevOps에서 자동화 및 지속적인 테스트를 수용하여 DevOps 세계에서 효과적으로 테스트하기 위해 구현해야하는 도구, 전략 및 관행에 대해 설명합니다.




DevOps의 QA 및 테스트

테스트는 폭포수에서 애자일, DevOps로 어떻게 진화 했나요?

폭포 모델

테스트 및 품질 보증 관행은 폭포, Agile 및 현재 DevOps 시대에서 상당한 변화를 보였습니다. 폭포수 모델에서 테스트는 소프트웨어 개발 라이프 사이클의 한 단계로 간주되었습니다. 테스터와 테스트 노력은 테스터가 테스트 팀의 일원이었고 종종 개발 팀과 분리 된 곳에서 매우 격리되어있었습니다.


테스터 소유 테스트 전략 품질의 문지기로 여겨졌습니다. 테스트는 대부분 수동으로 이루어졌으며 소프트웨어가 완전히 개발 된 후 프로덕션으로 출시되기 직전에 수행되었습니다.

마찬가지로 소프트웨어를 제공하는 데 오랜 시간이 걸립니다. 별도의 운영 팀은 기껏해야 몇 달에 한 번씩 소프트웨어를 프로덕션에 출시하는 일을 담당했습니다. 운영팀과 개발팀 사이에 커뮤니케이션 / 협업 수준이 없거나 낮았습니다.

애자일 모델

애자일 모델은 출시 빈도뿐 아니라 개발 및 테스트 공간에도 변화를 가져 왔습니다. 소프트웨어는 반복적이고 점진적으로 개발되었습니다. Agile 전달 모델의 방법론 인 Scrum은 빠르게 인기를 얻었습니다.

개발 노력은 일반적으로 2-4 주 동안 지속되는 일련의 짧은 반복으로 세분화되었습니다. 각 반복은 새로운 기능을 추가하거나 기존 기능을 향상시켜 잠재적으로 배송 가능한 소프트웨어를 생성합니다.


테스터는 개발 팀의 일원이되었고 테스트는 SDLC의 마지막 단계가 아니라 소프트웨어 개발에 대한 병렬 활동이되었습니다. 테스트 활동은 공동 책임이되었고 품질은 개발 팀이 소유했습니다.

애자일 모델은 개발 및 테스트 관행을 융합하고 소프트웨어를 더 빠르게 제공 할 수있는 길을 열었지만 실제 배포는 여전히 별도의 TechOps 팀에서 수행했습니다.

TechOps 팀은 서버, 네트워크 및 배포에 대해 알고 있었지만 일반적으로 각 릴리스의 세부 사항을 알지 못했습니다. 개발 팀에 대한 피드백이 느 렸습니다. 릴리스에 버그가있는 경우 개발 팀이 문제를 인식하는 데 일반적으로 몇 시간이 걸립니다.

DevOps 모델

DevOps는 출시 및 배포 활동을 개발 및 테스트 활동에 더 가깝게 가져옴으로써 Agile 모델을 한 단계 더 발전시킵니다. 즉, 애자일 팀이 자체적으로 만든 소프트웨어의 개발, 테스트 및 출시를 책임집니다.




DevOps 테스트 전략

DevOps의 테스트는 전체 소프트웨어 개발 및 제공 수명주기에 걸쳐 있습니다. 테스터는 더 이상 기능 테스트 및 기능 검증에만 집중하지 않습니다.

테스터로서 우리는 또한 운영 테스트, 성능 테스트, 기본 보안 테스트뿐만 아니라 프로덕션 데이터 및 로그를 모니터링하고 분석 할 수 있어야합니다.

Dan Ashby는 우수한 게시물 그가 설명하는 DevOps에서의 테스트에 대해

사람들이 테스트가 전혀 언급되지 않은 모델에서 어디에 적합한 지 이해하는 데 어려움을 겪는 이유를 알 수 있습니다. 나에게 테스트는이 모델의 모든 단일 지점에 적합합니다.


실제로 테스트는 DevOps 모델의 각 단계에서 발생할 수 있으며 이루어져야합니다. 에서 애자일 테스트 전략 게시물 에서 테스트가 Agile 모델에 어떻게 적용되는지 설명했습니다.

DevOps 테스트 전략은 다음 섹션을 추가하여이를 확장 할 수 있습니다.

DevOps의 테스트 자동화 및 지속적인 테스트

도구와 기술의 선택은 DevOps 모델에서 그 어느 때보 다 중요해졌습니다. 도구를 선택하면 조직이 애플리케이션과 서비스를 고속으로 제공 할 수 있습니다.


DevOps의 자동화 된 테스트는 시스템에서 코드를 빠르고 확실하게 푸시 할 수있는 문화를 만들고자하기 때문에 더욱 강조됩니다.

자동화 된 기능 테스트뿐만 아니라 전송 파이프 라인에 보안 / 복원성 테스트와 성능 테스트 세트도 있어야합니다.

말할 필요도없이 위의 자동화 된 테스트를 구현하기 전에 무엇보다도 Jenkins와 같은 지속적 통합 도구에서 자동화 된 빌드 및 전달 파이프 라인을 구축해야합니다.

프로덕션 테스트

프로덕션 테스트는 사용자가 애플리케이션을 사용하는 라이브 시스템에 대해 기능 / 성능 테스트 스크립트를 실행하는 것을 의미하지는 않습니다.

A / B 또는 다변량 테스트의 추세를 분석하여 시작할 수 있습니다. 또한 메모리 누수, 높은 CPU 사용량 등과 같은 이상한 행동에 대해 서버를 모니터링 할 수 있습니다.



DevOps가 테스트에 미치는 영향

이 모든 것이 DevOps에서 테스터 및 테스트의 역할을 어떻게 변경 했습니까?

테스터는 이제 테스트 활동을 효과적으로 수행 할 수 있도록 최소한 다음과 같은 지식과 기술을 갖추어야합니다.

  • 기본 네트워킹 지식
  • 기본 Unix / Shell 스크립팅 (예 : bash, 파이썬
  • 지속적인 통합 / 지속적인 제공 예 : 젠킨스,
  • JMeter 또는 Gatling과 같은 성능 테스트 도구
  • 운영 및 복원력 테스트 준비
  • 컨테이너, Docker, Kubernetes에 대한 지식
  • Splunk와 같은 모니터링 도구 쿼리
  • 클라우드 서비스, 예 : AWS, Azure