NodeJSとJavaScriptの例を用いたテスト駆動開発と振る舞い駆動開発


TDD ATAUテスト駆動開発ATAUテスト最初の開発adalah PengembanganソフトウェアYang Bergantung Pada PersyaratanソフトウェアYang Dikonversikan ke Bentukテストケース(単位テストMaununの統合テスト)Terlebih Dahulu Sebelum Softwarenya Dikembangkan Secara Penuhテストを最初に開発した.INI ADALAH Lauran Dari Test最後の開発は、最初に、後でテストを開発しました.

単体テスト


ユニットテストadalah salah satu tipe dariのソフトウェアテストdimana setiapのBagian atau komponen padaソフトウェアakan di testAlasannya Supraya Hasil Dari Stiap Bagian Atau Komonen Akan Sesuai Yang Diharapkan ATau Sesuai Behaviournya(BDD)
ユニットテストadalahベンチュダリホワイトボックスのテスト、Dimana Yang di Test Adalah Structur内部のAplikasi sebuahソフトウェア、Contohnyaユーティリティataupun Bagian Kecil pendukung jalannya fungsi fungsi pada内部Aplikasi.

インテグレーションテスト


インテグレーションテストadalah salah satu tipe dariソフトウェアテストdimana setiap fiturヤンエイダpada内部のaplikasi itu sendiri akan di test,misalnya dalam bentuk rest apiBerbeda Dari Unit Test Yang Melakukan Test Pada Bagian Kecil pada REST API、Dimana kode Kodeユーティリティpada REST API、seperti untuk mengecek tipe data ataupun konversiフォーマットデータ.
インテグレーションテストadalahベンチュダリブラックボックステスト、Dimana Yang diテストadalah内部Aplikasi sebuahソフトウェア、Contohnya fungsionalitas Yang Mendukung Jalanya Aplikasi.

BDD


BDD AATU行動駆動開発adalah bentuk pendekatan pada tdd,dimana setiap test menciptakanの挙動
Malalnya Dengan Menspesifikasikanは、そのとき、与えられたとき、与えられたDimana AnothinyaがADALAH Kapan Fiturnya Dijalankan、ダン、それからAdalah apa Yang Terjadi Setelah Fiturnya Dijalankanを与えられたとき、与えられます.私達のユニットのAnaan diterapkan di単位テストYang Tidak Memiliki Fitur Terkait、Dengan Tujuan Menulisテスト行動refactor . テストが最初に失敗した場合、必要に応じて開発し、リファクタリングし、テストを最後に渡します.
pada saat mengembangkan fitur setelah membuatテストケース,maka北bisa menyebutnya sebagai tdd,namun hanya saja ita melakukan pendekatan bdd,dimana ita menulisの挙動dari sistemnya menjadi test case terlebih dahuluイササマ・セパーティ・キタ・メニハプカンSesenbih Terlebih Dhulu sebelum Membuat Sevuah Film Yang Sudah siap diceritakan kepada orang lain

Bermain Denganモカダンチャイpada nodejs


セベラムメンライ


セベラムメランジュタンinstall NodeJS TerlebihダールVersiActive LTS サンガンDisarankan.
ジカデda sudah menginstall nodejs、マリbelajar menggunakannpm init Terlebih Dahulu sebelum Meninstall Mocha Didalamスコーププロジェクトnpm init Tersebut dijalankan
# cek apakah npm sudah terinstall
npm -v

# mari berasumsi bahwa kita belum meng-init project dengan npm
npm init -y # atau npm init untuk menulis value pada package.json secara manual menggunakan CLI

# install sebagai devDependencies untuk menjalankan bin dari npm 
# package secara langsung pada `scripts` tanpa global installation
npm install -D mocha

# kita akan menggunakan chai sebagai assertion library,
# dimana assertion library ini yang akan menentukan
# apakah hasil dari sebuah fitur atau bagian pada software
# sesuai ekspektasi kita atau tidak.
npm install chai

記憶


Desini Kita Ahan Membuat Sebuah Contoh UnitテストDimana Ka Menciptakan Sesenum Temleum Membuat Fitur,Disini Segagai Contoh Sederhana Ka Akan Menerapkan FIFOアルゴリズムpada JavaScript Namun Menggunakan Skinenario社Yang MengeluarkanダンMemasukkan Barang
dibawah ini hanyalah contohテストケースsederhana saja,a da bisa belajar membuat dan refactor test case secara mandiri dengan contoh dibawah jika an ingin mendalami lebihsupplier.test.jsPertama、adalah membuat skenario untukサプライヤー
const chai = require("chai");

const expect = chai.expect;

describe("supplier", function () {
  const goods = [];

  it("supplier supplying goods", function () {
    // goods should increased
    expect(goods).to.have.lengthOf.at.least(1);
  });

  it("supplier demanding goods", function () {
    // goods should decreased
    expect(goods).to.have.lengthOf.at.least(0);
  });
});
セッラファイルpackage.json アンダKurang Levh Harus Ditambahkanスクリプトバル・セパーティ・ディバワ・イニ.
"scripts": {
  "test": "mocha supplier.test.js"
},
queue.jsLalu、マリ北Membuat Bagian pendukung pada Skenario供給元.
class Queue {
  constructor(...elements) {
    // set array as value of construct args
    this.elements = [...elements];
  }

  push(...args) {
    // push arguments to this.elements
    return this.elements.push(...args);
  }

  shift() {
    // you can also use splice
    //return this.elements.splice(0,1)[0];
    return this.elements.shift();
  }

  // access method as property (modern JS Engine)
  get length(){
    return this.elements.length;
  }

  // set method in property (modern JS Engine)
  set length(length){
    return this.elements.length = length;
  }
}
Terakhir、マリ北Modifikasi skenarioヤンsebelumnya ada padaテストケース.
const chai = require("chai");

const Queue = require("./queue.js");

const expect = chai.expect;

describe("supplier", function () {
  const goods = new Queue();

  it("supplier supplying goods", function () {
    goods.push(1);
    expect(goods).to.have.lengthOf.at.least(1);
  });

  it("supplier demanding goods", function () {
    while(goods.length)
        console.log(goods.shift());
    expect(goods).to.have.lengthOf.at.least(0);
  });
});
Untuk menjalankan試験
npm run test
Selain Menggunakanモカダンチャイ、anda dapat menggunakan jest ataupunノードタップ、pada dasarnya semuaライブラリのテストpada JavaScriptのテラが、Saya Sama dibuat untukソフトウェアテストハニヤSaja Secara利益Memiliki Perbandingan Yang Dapat Dipertimbangkan Levh Lanjut.
セパーティITulahガンバランテストケースダラムBentuk Skenario(BDD)ヤンAkan dibuat sebelum menciptakan suatu fitur.
Semoga bermanfaat untuk teman teman pengembangソフトウェアsemuanya😄