단원 테스트 유형

20137 단어

소개하다.
인터넷에서 당신의 은행 계좌를 보는 것을 상상해 보세요.너는 500달러가 있다.사이트는 하룻밤 사이에 업데이트될 것이니, 너는 아침에 다시 볼 것이다.당신의 잔액은 367.43달러입니다.너 돈 어디 갔어?이게 정말 너의 균형이야?
고객 서비스부에 보고해.수천 명의 다른 사용자가 비슷한 문제를 보고했다.고객이 계좌를 폐쇄하다.
은행으로 돌아왔을 때 소프트웨어 오류가 발견된 것이 원인이었다.그 은행의 개발자는 사용자에게 이 소프트웨어를 배치하기 전에 테스트를 하지 않았다.돈은 사라지지 않았지만 그 금액은 사이트에 잘못 찍혔다.
소프트웨어의 오류는 피할 수 없는 것이다.만약 검사를 하지 않는다면, 이러한 오류는 사용자와 개발자에게 고통과 대가가 높은 영향을 미칠 수 있다.2002년에 미국 상무부 국가표준기술연구소(National Institute of Standards and Technology)가 의뢰한 연구에서 소프트웨어 오류는 매년 미국 경제에 약 590억 달러의 손실을 초래한다는 결론을 내렸다.
이러한 비용을 피하기 위해 소프트웨어 전문가들은 자동화 테스트를 사용한다.생산 과정과 생산이 끝난 후에 그들은 자동화 테스트 세트를 운행하여 자신들이 제품에 오류가 없다고 믿고 예상대로 일을 할 수 있게 할 수 있다.
우리는 이러한 개념에 대한 지식과 실천을 되돌아보고 토론할 것이다.이 과정을 마치면 다음과 같은 이점을 얻을 수 있습니다.
  • 정의 자동 테스트 세트
  • 소프트웨어 개발에서 테스트 세트를 어떻게 사용하는지 설명
  • 자동 테스트의 이점 설명

  • 수동 테스트
    소프트웨어 테스트는 컴퓨터 소프트웨어의 완전성과 품질을 평가하는 과정이다.일반적으로 이것은 시스템의 일부분(예를 들어 웹 응용 프로그램)을 실행하고 실제 행위를 예상 행위와 비교함으로써 이루어진다.
    소프트웨어 테스트를 실행하는 방법의 하나는 수동 테스트다.수동 테스트는 시스템과 상호작용하는 사람이 하는 테스트이다.웹 응용 프로그램에 대해, 이것은 웹 페이지에서 누르고, 드래그하고, 입력할 수 있습니다.행동과 예상 행동의 목록을 보여 줍니다.관찰된 행동이 예상한 행동과 일치하지 않으면 프로그램에 오류가 있습니다.
    예를 들어 제공하는 웹 프로그램에서 발견한 오류를 버그라고 합니다.버그는 소프트웨어의 오류, 고장, 결함으로 시스템이 의외로 실행될 수 있습니다.이전 연습에서 읽은 바와 같이 이러한 예기치 못한 동작은 사용자에게 피해를 줄 수 있습니다.이상적인 경우, 테스트는 오류가 사용자에게 발송되기 전에 그것들을 포착할 것이다.

    자동 테스트
    이전 연습에서 수동으로 응용 프로그램을 테스트하는 데 얼마나 걸립니까?만약 당신이 이 과정을 100번 반복한다면, 당신은 당신이 실수를 범할 빈도가 얼마나 된다고 생각합니까?
    한 회사에서, 반드시 누군가가 이 일을 해야 하기 때문에, 매 시간의 수동 테스트는 모두 원가가 있다.자동화 테스트는 테스트 원가를 낮추고 품질을 높일 수 있다.
    자동화 테스트는 소프트웨어를 사용하여 테스트의 집행을 제어하고 실제 행위를 예상 행위와 비교하는 것이다.네가 방금 한 모든 테스트 (그리고 더 많은 테스트) 는 컴퓨터 프로그램에서 실행할 수 있다.
    수동 테스트보다 자동화 테스트가 더 중요하다
  • 빠름: 보다 짧은 시간 내에 더 많은 제품을 테스트할 수 있습니다.
  • 더 믿음직스럽다. 인간처럼 실수하기 쉽지 않다.
  • 유지보수: 테스트 집합을 보기, 편집, 확장할 수 있습니다.
  • 전문 개발자는 개발이 끝날 때 테스트 팀을 고용하지 않고 매번 변경된 후에 자동화 테스트를 실행할 수 있다.워크플로우는 다음과 같습니다.
    코드 작성 및 테스트
  • 테스트를 실행하기 위해 터미널에 명령을 입력
  • 응용 프로그램이 예상대로 실행되면 모든 테스트가 통과해야 한다.개발이 완료되었습니다.
  • 예상에 부합되지 않으면 최소한 한 가지 테스트가 실패해야 한다.코드를 수정하고 2단계로 돌아갑니다.

  • 테스트 키트
    테스트는 웹 응용 프로그램의 다른 부분처럼 코드로 작성되었다.응용 프로그램을 정의하는 코드를 실현 코드라고 하고, 테스트를 정의하는 코드를 테스트 코드라고 할 수 있습니다.
    웹 응용 프로그램의 테스트 집합을 테스트 세트라고 부른다.이전 연습에서 npm 테스트를 사용하여 테스트 세트를 실행했습니다.이 경우 테스트 세트는 응용 프로그램의 모든 테스트를 포함합니다.
    테스트 코드는 실현 코드에 포함되며 그 구조는 실현 코드와 유사하다.일반적인 상황에서 테스트 코드의 변경은 실현 코드의 변경과 관련이 있고 반대로도 마찬가지다.양자를 같은 곳에 보관하면 유지보수가 더욱 쉽다.
    예를 들어, 만약 실현 코드가 색인에서 작성된다면.그러면 상응하는 테스트 코드는 색인 테스트에서 작성할 수 있다.js.
    const {assert} = require('chai');
    
    describe('User visits index', () => {
      describe('to post an order', () => {
        /*
         * Run `npm start` in the terminal and reload the page. Expect the webpage to be visible and the order form to be empty.
         */
        // Edit the line below
        it('starts with a blank order (Behavior 1)', () => {
          browser.url('/');
    
          assert.equal(browser.getText('#deliver-to span'), '');
          assert.equal(browser.getText('#cake-type span'), '');
          assert.equal(browser.getText('#fillings span'), '');
          assert.equal(browser.getText('#size span'), '');
        });
    
        /*
         * Type a name and click "Place Order". Expect "Deliver to:" to display the submitted name. (You may need to scroll down.)
         */
        it('displays the submitted name (Behavior 2)', () => {
          const name = 'Hungry Person';
    
          browser.url('/');
          browser.setValue('#name', name);
          browser.click('#submit-order');
          browser.url('/');
    
          assert.include(browser.getText('#deliver-to'), name);
        });
    
        it('does not overwrite name if blank name submitted (Behavior 3)', () => {
          const name = 'Hungry Person';
    
          browser.url('/');
          browser.setValue('#name', name);
          browser.click('#submit-order');
          browser.url('/');
          browser.click('#submit-order');
          browser.url('/');
    
          assert.include(browser.getText('#deliver-to'), name);
        });
    
        /*
         * Select a cake type and place the order. Expect "Cake" to display the selected type.
         */
        it('displays the selected cake type (Behavior 4)', () => {
          const cakeType = 'Whole Wheat';
    
          browser.url('/');
          browser.click('#whole-wheat');
          browser.click('#submit-order');
          browser.url('/');
    
          assert.include(browser.getText('#cake-type'), cakeType);
        });
    
        /*
         * Check some fillings. Expect "Fillings" to display your selection.
         */
        it('displays multiple fillings (Behavior 5)', () => {
          const firstChoice = 'Strawberries';
          const secondChoice = 'Banana';
    
          browser.url('/');
          browser.click('#strawberries');
          browser.click('#banana');
          browser.click('#submit-order');
          browser.url('/');
    
          assert.include(browser.getText('#fillings'), firstChoice);
          assert.include(browser.getText('#fillings'), secondChoice);
        });
    
        /*
         * Choose a stack size. Expect "Pancake Count:" to display the number equivalent to the stack size, e.g. "Double" is "2".
         */
        it('displays the number equivalent to the stack size (Behavior 6)', () => {
          const optionText = 'Septuple Stack';
          const optionNum = '7';
    
          browser.url('/');
          browser.selectByVisibleText('#select-stack', optionText)
          browser.click('#submit-order');
          browser.url('/');
    
          assert.include(browser.getText('#size'), optionNum);
        });
        });
    });
    

    문서로 테스트
    이 케이크를 다른 사람에게 설명해 보세요.그것의 행위는 어떻습니까?그것은 다른 소프트웨어에 의존합니까?어떻게 컴퓨터에서 그것을 실행합니까?너는 모든 문서의 한 줄 한 줄을 읽어서 답을 찾을 수 있다.아니면 문서를 읽을 수도 있다.
    문서는 실현 코드에 독립된 내용으로 그 작업 원리나 사용 방법을 설명하는 데 사용된다.그것은 실현 코드보다 더 간결한 요약과 해석을 제공할 수 있다.
    문서는 순수한 텍스트, 도표와 테스트를 포함하여 여러 가지 형식이 있을 수 있습니다!문서로서의 테스트는 프로그램의 읽을 수 있는 텍스트를 설명하고 프로그램이 설명한 대로 작동하는 기계적 실행 코드를 확인하는 다양한 기능을 제공합니다.
    Cake Bar 응용 프로그램에서 이 코드 블록을 설명하고 "name"기능을 테스트합니다.
    it('accepts the customer name', () => {
      const name = 'Hungry Person';
    
      browser.url('/');
      browser.setValue('#name', name);
      browser.click('#submit-order');
      browser.url('/');
    
      assert.include(browser.getText('#deliver-to'), name);
    });
    

    좋은 웹페이지 즐겨찾기