스타일과 구조 테스트 소프트웨어로

지난달 글 DevOps Ep. 4: Build Servers에 간단한 구축 서버를 설치한 후 the DevOps Lifecycle에서 다음 단계는 테스트입니다.
구조화 단원, 통합과 시스템 테스트를 살펴보자. 영감은 자동차 개발에 사용되는 V형 모델에서 나온다.
우리는 소프트웨어 검증, 즉 소프트웨어 작업에만 관심을 갖는다는 것을 주의하십시오.소프트웨어가 주어진 사용자나 장면에 적용되는지 검증하는 소프트웨어 검증도 있다.

어떤 종류의 테스트가 있습니까?


어떤 유형의 테스트가 있는지 고려할 때 나는 V-Model을 가리킨다.단순화 후 우리는 세 가지 가장 중요한 개발 단계를 확정하고 테스트를 통해 이를 검증할 수 있다.
각 설계 단계가 V형 모델에서 검증됨(단순화 설명)
한 마디로 하면 소프트웨어 개발은 세 단계로 나뉜다.
  • 우선, 우리는 수요를 수집한다.
  • 다음에 우리는 구조를 계획할 것이다.
  • 이 마지막으로 이 시스템을 실현했다.
  • 현재 V모델은 개발의 각 단계에 대한 검증 절차를 정의하였으며, 우리는 다음 장에서 상세하게 설명할 것이다.

    단원 테스트


    각 단원은 작은 코드 단원을 테스트합니다.
    대상 코드에서 이것들은 클래스의 방법이다.
    대부분의 문헌은 각 단원 테스트에 테스트 방법이 있다고 언급했다.
    좋은 단원 테스트의 가장 중요한 부분은 그것들을 명명하고 구성하는 것이다. 그러면 동료들은 실패한 단원 테스트가 무엇을 의미하는지 쉽게 이해할 수 있다.
    이를 위해, 나는 다른 개발자들이 Behaviour-Driven-Development의 계발을 받은 명칭 모델을 사용하도록 장려한다.
  • 조건시 조작
    e、 g.authenticateUser_WhenCredentialsAreCorrect
  • 조건행동
    e、 g.CredentialsAreCorrect_ThenAuthenticateUser
  • 위의 명명 모드는 보기에는 괜찮지만, 중요한 정보가 부족합니다. 어떤 단원을 테스트하고 있습니까?이 해결 방안은 내가 가장 좋아하는 문장에서 찾을 수 있다. Structuring Unit Tests on You’ve Been Haacked.
    한 마디로 하면 본고는 평소와 같이 코드 중의 모든 클래스에 테스트 클래스를 만들자고 건의하지만 클래스 중의 모든 테스트 방법에 추가 내부 클래스를 도입했다.C#에서 여러 가지 방법을 포함하는 클래스가 있으면 섹션 클래스가 도움이 됩니다.

    [TestFixture]public class AuthenticationServiceTest { [TestFixture]public class LoginMethod { [Test]public void CredentialsAreCorrect\_ThenAuthenticateUser() { // Test Code } [Test]public void UsernameIsMissing\_ThenReject() { // Test Code } [Test]public void PasswordIsMissing\_ThenReject() { // Test Code } } public class RegisterMethod { [Test]public void CredentialsAreCorrect\_ThenAuthenticateUser() { // Test Code } [Test]public void UsernameIsMissing\_ThenReject() { // Test Code } [Test]public void PasswordIsMissing\_ThenReject() { // Test Code } } }
    
    개발 단원 테스트를 할 때, 때때로 코드에서 다른 소프트웨어 단원에 의존하는 상황을 만날 수 있다.
    이것은 상당히 고급스러운 문제이며, 해결 방안은 조롱이다.그것은 우리로 하여금 테스트 중의 클래스를 위해'거짓'의존항을 만들 수 있게 하지만, 이후의 글에서 발표할 가치가 있다.

    통합 테스트


    단원 테스트와 달리 통합 테스트 테스트는 여러 개의 코드 단원과 함께 작동한다.그것들은 일반적으로 프레임워크를 사용하여 이루어진다. 예를 들어 Selenium을 통해 소프트웨어의 작은 부분을 자동으로 사용한다.
    집적 테스트의 중요한 부분은 크기다.
    집적 테스트를 작성하는 것은 일반적으로 단원 테스트보다 작업량이 많지만, 그것들은 정확하지 않다.통합 테스트에 실패하면 어떤 소프트웨어 단원에 장애가 발생했는지 즉시 알 수 없습니다.
    집적 테스트를 설정하는 것은 당신이 선택한 기술에 매우 의존하기 때문에, 나는 여기에 일반적인 예시를 제공할 수 없습니다.

    시스템 테스트


    마지막으로 시스템 테스트는 품질 보증의 최종 최첨단이다.그들은 발송 가능한 상태에서 전체 시스템을 테스트한다.
    시스템 테스트의 자동화는 이론적으로 가능하지만 대량의 작업이 필요하다.이렇게 많아서 나는 야외에서 자동 시스템 테스트를 본 적이 없다.
    따라서 수동 시스템 테스트를 하는 것은 완전히 정상이다.
    수동 시스템 테스트에 있어서 유일하게 중요한 부분은 구조가 있다는 것이다.각 시스템 테스트의 경우 다음을 수행합니다.
  • 은 통신에 편리하도록 ID 정의 시스템 테스트를 사용합니다.
  • 은 누구나 시스템 테스트를 수행할 수 있도록 번호 절차가 있는 단계별 안내서를 기록했다.
  • 기록 시스템 테스트의 매번 실행
  • 소프트웨어 버전 또는 내부 버전 번호
  • 시간 및 날짜
  • 테스트 수행자
  • 테스트 결과(통과/실패)
  • 평론, 필요하다면
  • 비록 시스템 테스트에 사용되는 전용 해결 방안, 예를 들어 Azure Test Plans이 존재하지만, 그 중 대부분은 매우 비싸다.그러나, 당신은 전자 표 소프트웨어를 사용하여 탈출할 수 있습니다.Google Drive 스프레드시트를 즐겨 사용합니다. 이 스프레드시트는 테스트 실행 및 설명을 위한 문서와 프로토콜을 편집할 수 있기 때문입니다.
    엄밀히 말하면, 시스템 테스트는 당신이 개발한 시스템만 포함하지만, 나는'생산과 유사한'설정에서 이러한 테스트를 실행하는 것을 강력히 건의합니다.E, g. 실제 장치에서 Android 응용 프로그램 시스템 테스트를 수행합니다.
    이는 사실상 시스템 테스트와 이른바 “End to End” Tests 사이의 경계를 모호하게 만들었지만 좋은 일이다.크로스플랫폼 응용 프로그램을 개발하고 있다면 각 대상 플랫폼에 대해 시스템 테스트를 반복합니다.

    결론


    우리는 단지 이 주제에 관한 빙산의 일각만 토론했지만, 우리는 이후의 문장에서 예와 CI 집적을 이용하여 따라갈 수 있다.
    현재, 이것은 당신과 당신의 팀에게 좋은 개술을 제공할 수 있을 뿐만 아니라, 간단한 자동화 단위 테스트와 전자 표에 기록된 수동 시스템 테스트부터 시작할 수 있어야 합니다.
    너는 BrutalHack Discord Server을 통해 나에게 연락할 수 있다.
    게시물 Testing your Software with Style and Structurejustice.sh에 먼저 올라왔습니다.

    좋은 웹페이지 즐겨찾기