TDD, 비기술적 소개

사진 작성자Christopher GowerUnsplash
내가 곧 ICT 학위를 마칠 때, 나는 어쩔 수 없이 ICT 회사에서 실습을 해야 한다.저는 소프트웨어 개발에 관심이 많아서 현지의 소프트웨어 솔루션 회사에 지원하기로 결정했습니다. Ictual N.V. 몇 가지 회담을 통해 이 회사와 제품을 이해하고 실습 임무를 결정할 때가 되었습니다.나는 저항력이 가장 적은 경로를 선택하고 웹 응용 프로그램, 그들의 제품의 포털을 개발하기로 결정했다.인터넷 개발은 내가 1년 동안 해 온 일이기 때문에 나는 임무의 선택에 매우 만족한다.그리고 우리는 그들의 임무 요구를 토론하기 시작했다. 그들은 나에게 "이 문호는 팀의 업무 절차에 따라 개발해야 하고 테스트 구동에 따라 개발해야 한다."라고 말했다.

턱이 떨어졌어요...WTF가 그렇습니다. 저는 예전에 테스트를 들은 적이 있지만 테스트 구동 개발?여태껏이것은 실습에 있어서 하나의 도전이다.나는 새로운 것을 배웠다. 나는 이 고차원적인 해석이 너를 위해 TDD를 밝게 비추길 바란다. 만약 네가 나처럼 이 용어를 들어 본 적이 없다면.

테스트 구동 개발, 도대체 뭐야?


TDD는 실제 코드에 앞서 코드를 설명하는 테스트 용례를 작성할 수 있는 소프트웨어 개발 방법입니다.예를 들어, 만약 당신이 계산기를 만들고 싶다면, 계산기의 모든 기능 (구화, 감법, 곱셈, 나눗셈 등) 을 위한 테스트를 작성해야 한다.이 테스트를 작성한 후에 최소한의 코드를 작성해서 이 테스트를 통과할 것입니다.화합을 구하는 상황에서, 당신은 코드를 작성하여, 두 개의 숫자를 화합을 구할 것입니다.
테스트 드라이브 개발은 다음 다섯 가지 기본 단계로 나눌 수 있습니다.
  • 테스트를 작성합니다.
  • 테스트를 실행하고 실패 여부를 확인합니다.
  • 테스트 기대를 충족시키기 위해 가장 간단한 코드를 작성한다.
  • 테스트를 다시 실행하여 작성된 코드가 테스트를 통과했는지 확인합니다.
    통과하면 코드를 재구성하고 통과하지 않으면 코드를 변경합니다.
  • 반복

  • TDD에 대해 이야기할 때 우리는 두 가지 서로 다른 등급의 테스트에 대해 토론할 수 있다.
  • 검수 TDD(ATDD) - 프로젝트의 행위 규범을 충족시키기 위해 검수 테스트를 작성합니다.행위 규범은 응용 프로그램 중의 서로 다른 종류와 모듈이 어떻게 상호작용하는지 설명한다.이것도 행위 구동 개발이라고도 부른다.ATDD의 목적은 프로젝트의 요구를 지정하는 것입니다.대부분의 경우, 이것은 사용User Stories and Use Cases을 통해 실현된 것이다.
  • 개발자 TDD(DTD) - 프로젝트의 모든 작은 기능에 중점을 두는 테스트를 작성합니다.DTDD는 TDD라고 약칭한다.
  • 이제 우리는 TDD가 무엇인지 알고 있다. 다음 논리적 문제는 WTF가 테스트인가?

    테스트


    매번'테스트'라는 단어를 언급할 때마다 우리 한번 봅시다...수돗물🥤, 다음 부분은 우리가 정신을 똑바로 차려야 한다.
    테스트는 소프트웨어 기능에 대한 단언이다. "그것은 두 숫자의 총체일 것이다."테스트에서, 당신은 기능과 실행할 때 그에 대한 기대를 설명했습니다.예를 들면 다음과 같습니다.
    설명: "계산기는 두 개의 숫자를 더해야 한다."기대치: "2+2=4."방금 단원 테스트였어요.단원 테스트는 코드의 특정한 논리에 대한 설명과 기대를 설정할 수 있습니다.
    일반적인 경험 법칙은 모든 단원 테스트에 대해 함수를 작성해야 한다는 것이다.이것은 코드를 간소화하고 디버깅과 나중에 다시 사용하기 쉽도록 합니다.
    소프트웨어 개발에서 대량의 서로 다른 형식의 소프트웨어 테스트가 있지만 개발자로서 당신이 작성할 가장 중요한 테스트는 단원 테스트와 검수 테스트입니다.전방 개발자에게 있어서 끝에서 끝까지(e2e) 테스트는 매우 중요하다.e2e에서 응용 프로그램의 사용자 체험을 테스트할 것입니다.모든 구성 요소가 어떻게 서로 흐르고 작동하는지.

    테스트 생성 시 중요한 모범 사례

  • 테스트 함수에 대해 설명적인 이름을 사용합니다. 함수 이름에 따라 무엇을 테스트하고 있는지 알아야 합니다.
  • 테스트 코드와 실현 코드를 분리하지만 테스트 클래스는 실현 코드와 같은 디렉터리에 보존한다.
  • 테스트에서 단언한 수량을 제한하고 필요할 때 더 많은 테스트 함수를 작성합니다.여러 개의 단언을 테스트할 필요가 있다면, 모든 단언에 테스트를 만드는 것을 권장합니다.이것은 디버깅을 더욱 쉽게 하고, 테스트 코드를 더욱 쉽게 읽을 수 있게 한다.
  • 테스트를 통과한 가장 간단한 코드를 작성합니다.너의 논리를 다른 부분으로 나누어 간단한 코드를 작성하고 테스트를 한 번에 통과해라.테스트 세트의 끝부분에서 코드는 복잡한 논리를 실행할 것입니다. 왜냐하면 각각의 단독 부분은 마땅한 방식으로 작동하기 때문입니다.
  • 이제 구와 예시를 위한 테스트를 작성합시다.나는 도구 Jasmine의 격식으로 이 글을 쓸 것이다.Jasmine은 JavaScript 언어를 위한 다양한 테스트 도구 중 하나입니다.Jasmine은 당신의 Angular 프로젝트에 미리 설치되어 있습니다. 이것은 제가 실습할 때 사용한 것입니다.프로그래밍 언어와 도구에 따라 문법이 다를 수 있지만 컴파일 테스트의 일반적인 요점은 같다.
    // import dependencies for testing
    import { ComponentFixture, TestBed } from "@angular/core/testing";
    import { ComponentName } from "./component-name.component";
    describe("CalculatorComponent", () => {
      // create component instance
      let component: ComponentName;
      let fixture: ComponentFixture<ComponentName>;
      beforeEach(async () => {
        // import and declare dependencies for the component
        await TestBed.configureTestingModule({
          declarations: [ComponentName],
        }).compileComponents();
      });
      beforeEach(() => {
        // initialize component instance
        fixture = TestBed.createComponent(ComponentName);
        component = fixture.componentInstance;
        fixture.detectChanges();
      });
      // test that should be run on the component code
      it("should calculate a sum", () => {
          const expectation = 4;
    
        expect(component.sumNumber(2,2)).toEqual(expectation);
      });
    });
    
    마찬가지로 위의 코드는 Angular 용으로 작성되었습니다.이정수는 다를 수 있지만, 현재 테스트 예시가 있습니다.sumNumber라는 함수가 2+2의 합을 되돌려준다고 단언할 수 있습니다.
    테스트 코드와 테스트할 코드 세그먼트에 필요한 도구를 먼저 가져옵니다.그리고 테스트 세트를 작성하기 시작한다.테스트 키트는 응용 프로그램(소프트웨어)의 특정 부분을 위한 모든 테스트입니다.🤷🏿‍♀️). 테스트 세트는 설명 함수에 있습니다.첫 번째 파라미터는 테스트 중인 응용 프로그램 부분을 설명하고, 두 번째 파라미터는 테스트를 포함하는 함수를 설명합니다.
    그리고 한 명씩 적어.beforeach 함수에서 모든 테스트 용례를 작성하기 전에 발생해야 할 일들입니다.여기에 새로운 코드 실례를 만들고 테스트에 모든 의존 항목을 도입합니다.
    다음은 재미있는 부분, 테스트.이런 테스트에는 거의 인류 언어 유형의 문법이 있다.모든 테스트는 it 기능의 형식으로 진행될 것이다.첫 번째 파라미터는 테스트의 설명입니다. 당신은 도대체 무엇을 테스트하고 있습니까?그것은 무엇을 해야 합니까?두 번째 매개 변수는 실행 코드를 포함하고 예상대로 실행되는 함수를 포함합니다.이 함수에서 논리의 정상적인 운행에 필요한 모든 내용을 설정해야 합니다.화합을 구하는 상황에서 우리가 화합을 구하는 두 개의 숫자로 함수를 호출한다.

    Remember, the first time you are running your tests, they should fail. The test should be written before the code.


    테스트가 끝난 후에 가장 좋은 응용 프로그램을 계속 개발하고 시작합니다.테스트 드라이브 개발을 사용하면 코드를 비판적으로 생각하도록 격려하고 더 깨끗한 코드를 작성할 수 있습니다.더 깨끗한 코드의 장점은 무궁무진하다.당신의 코드는 이해하기 쉽고, 다시 사용하기 쉬우며, 프로젝트에 새로운 개발자를 추가하기 쉽고, 디버깅하기 쉽습니다.
    나는 네가 이 글에서 새로운 것을 배우고 다음 백만 달러의 응용 프로그램 아이디어에서 이런 개발 방법을 고려할 수 있기를 바란다.🤙🏿
    테스트나 심지어 TDD를 자주 사용하는 사람들한테는당신이 선택한 프로그래밍 언어 중 테스트는 어떤 모양입니까?

    좋은 웹페이지 즐겨찾기