Week 5 : Testing - Po-Pon/SW-Development-Tool-And-Environments-Group1 GitHub Wiki


Project Structure

Frontend

  • index.html
    เป็นส่วนที่ web browser นำมาใช้ในการ render เพื่อแสดงผลหน้า website ของเรา
  • main.js
    เป็นส่วนที่ทำหน้าที่นำหน้า website ของเราที่พัฒนาโดย vue ไปทำการ mount ลงใน file index.html โดยดูหน้า vue ที่ต้องทำการ mount จากการทำงานร่วมกับ router โดยมีหน้า default ที่ต้องทำการ mount ก่อนเป็นอันดับแรกคือหน้า App.vue
  • App.vue
    เป็นส่วนที่ใช้กำหนดรูปแบบการแสดงผลของหน้าแรก web site (Home page) เมื่อผู้ใช้ทำการเข้าสู่เว็บไซต์มาในตอนต้น
  • Router
    เป็นส่วนที่ทำหน้าที่ในการเปลี่ยนหน้า web site ของเราไปตาม path ที่เราเรียกใช้ผ่านหน้า web browser โดยการเปลี่ยนหน้าก็จะทำงานร่วมกับการ mount ของ view
  • login.vue
    เป็นส่วนที่ใช้ในการกำหนดรูปแบบการแสดงผลของหน้า login ใน website ของเรา
  • register.vue
    เป็นส่วนที่ใช้ในการกำหนดรูปแบบการแสดงผลของหน้า Register ใน website ของเรา
  • home.vue
    เป็นส่วนที่ใช้ในการกำหนดรูปแบบการแสดงผลหน้าแรกของ website โดยเราจะต้องทำการ login ก่อน ตัว website จึงจะแสดงผลหน้านี้ได้
  • profile.vue
    เป็นส่วนที่ใช้ในการกำหนดรูปแบบการแสดงผลของหน้าข้อมูล profile ใน website ของเรา โดยสามารถเข้าถึงได้จากหน้าหน้าแรกของ website หลังจากที่เราทำการ login แล้ว
  • findbeds.vue
    เป็นส่วนที่ใช้ในการกำหนดรูปแบบการแสดงผลหน้าค้นหาเตียงบน website โดยเราจะต้องทำการ login ก่อน ตัว website จึงจะแสดงผลหน้านี้ได้
  • beds.vue
    เป็นส่วนที่ใช้แสดงข้อมูลผลลัพธ์หลังจากการจองเตียงเสร็จสิ้นบน website โดยจะแสดง วันที่เข้าพัก สถานที่ วันจอง และสถานะ โดยเราจะต้องทำการ login ก่อน ตัว website จึงจะแสดงผลหน้านี้ได้
  • addbedsforsell.vue
    เป็นส่วนของหน้าฟอร์มที่ใช้ในการกรอกข้อมูลบน website เพื่อทำการลงเตียงให้ผู้ใช้อื่นมาจอง โดยเราจะต้องทำการ login ก่อน ตัว website จึงจะแสดงผลหน้านี้ได้

Backend

  • index.js(server)
    เป็นส่วนที่ทำหน้าที่เป็นเหมือน server กลางในการเชื่อมต่อระหว่าง frontend และ backend
  • controller
    เป็นส่วนที่กำหนด function การทำงานภายในทั้งหมดของระบบ
  • routes
    เป็นส่วนที่กำหนด path ที่ใช้ในการเข้าถึงที่แตกต่างกันไปตาม function
  • auth.js
    เป็นส่วนที่ทำหน้าที่รวบรวม path ในการใช้งาน function ต่างๆที่เกี่ยวข้องกับการ login และ register ของ user ในส่วนของ backend
  • users.js
    เป็นส่วนที่ทำหน้าที่รวบรวม path ในการใช้งาน function ต่างๆที่เกี่ยวข้องกับข้อมูลของ user ในส่วนของ backend
  • beds.js
    เป็นส่วนที่ทำหน้าที่รวบรวม path ในการใช้งาน function ต่างๆที่เกี่ยวข้องกับข้อมูลเตียงในส่วนของ backend
  • bedsdealing.js
    เป็นส่วนที่ทำหน้าที่รวบรวม path ในการใช้งาน function ต่างๆที่เกี่ยวข้องกับข้อมูลคำสั่งจองเตียงในส่วนของ backend
  • model User
    เป็นส่วนของ schema ที่ใช้ระบุถึงลักษณะ และชนิดของข้อมูลในการจัดเก็บ และเรียกใช้ของส่วน user
  • model Bed
    เป็นส่วนของ schema ที่ใช้ระบุถึงลักษณะ และชนิดของข้อมูลในการจัดเก็บ และเรียกใช้ของส่วน bed
  • model Beddealing
    เป็นส่วนของ schema ที่ใช้ระบุถึงลักษณะ และชนิดของข้อมูลในการจัดเก็บ และเรียกใช้ของส่วน beddealing

Test Strategies

ในการทดสอบระบบการค้นหาและจองเตียง จะมีการแบ่งรูปแบบของการทดสอบออกเป็น 3 ส่วน ดังนี้

Unit test

  • Frontend

    เป็นการทดสอบส่วนย่อยของระบบ โดยจะเน้นไปที่การทดสอบ Input ที่เป็นส่วนสำคัญของระบบค้นหาและจองเตียง โดยจะแบ่งย่อยๆออกเป็น 3 ส่วน และมีการทดสอบด้วย Test case ต่าง ๆ ดังนี้

    1. ทดสอบช่องกรอก Email และรหัสผ่านในหน้า Login

    การทดสอบในส่วนนี้จะเป็นการใส่ค่า Input ในรูปแบบที่แตกต่างกัน โดยจะแบ่ง Test case ในการทดสอบออกเป็นทั้งหมด 3 รูปแบบ ดังนี้

    1. ทำการ login โดยการใส่รหัสผ่านผิด

      เป้าหมายในการทดสอบ : เพื่อทดสอบการ validate ในส่วนของช่องกรอกรหัสผ่าน ว่าสามารถทำงานได้จริงหรือไม่

    2. ทำการ login โดยการใส่ทั้ง Email และรหัสผ่านผิด

      เป้าหมายในการทดสอบ : เพื่อทดสอบการ validate ในส่วนของช่องกรอก Email และรหัสผ่าน ว่าสามารถทำงานได้จริงหรือไม่

    3. ทำการ login โดยการใส่ทั้ง Email และรหัสผ่านให้ถูกต้อง

      เป้าหมายในการทดสอบ : เพื่อทดสอบการ login เมื่อผู้ใช้กรอกทั้ง Email และรหัสผ่านถูกต้อง ว่าระบบสามารถทำงานได้จริงหรือไม่

    2. ทดสอบช่องเลือกจังหวัดที่ต้องการค้นหาสถานที่จองเตียง ในหน้าค้นหาเตียง

    เป้าหมายในการทดสอบ : เพื่อทดสอบว่าช่องเลือกจังหวัดในหน้าค้นหาเตียง สามารถใช้งานและเลือกจังหวัดได้จริงหรือไม่

    3. ทดสอบช่องเลือกวันที่ต้องการจองเตียง ในหน้าการจองเตียง โดยในการทดสอบในส่วนนี้ จะมีการแบ่งรูปแบบของ Test case ออกเป็น 2 รูปแบบ ดังนี้

    1. ทำการเลือกวันที่ที่จอง เป็นวันที่ในอดีต

      เป้าหมายในการทดสอบ : เพื่อทดสอบว่าช่องเลือกวันที่ต้องการจองเตียง สามารถ validate ว่าผู้ใช้ใส่วันที่ไม่ถูกต้องได้หรือไม่ (วันในอดีต)

    2. ทำการเลือกวันที่ที่จอง เป็นวันนี้หรือวันที่ในอนาคต

      เป้าหมายในการทดสอบ : เพื่อทดสอบว่าช่องเลือกวันที่ต้องการจองเตียง สามารถ validate ได้ว่าผู้ใช้เลือกวันที่ที่ถูกต้องหรือไม่ (วันนี้หรือวันในอนาคต)

  • Backend

    เป็นการทดสอบส่วนย่อยของระบบ โดยจะเน้นไปที่การทดสอบ Request ที่เข้ามา โดยที่เป็นส่วนสำคัญของระบบค้นหาและจองเตียง โดยจะแบ่งย่อยๆออกเป็น 4 ส่วน และมีการทดสอบด้วย Test case ต่างๆ ดังนี้

    1. ทดสอบการเรียกข้อมูลของสถานที่ให้บริการเตียง

      การทดสอบในส่วนนี้จะใช้การGet และ Post ในรูปแบบต่าง ๆ ในการทดสอบโดยแบ่งออกเป็น 3 รูปแบบ ดังนี้

      • ทำการเรียกข้อมูลสถานที่ให้บริการเตียงที่มีเตียงพร้อมให้บริการ

        เป้าหมายในการทดสอบ : เพื่อทดสอบการเรียกข้อมูลของสถานที่ให้บริการที่มีเตียงพร้อมให้บริการจริงหรือไม่

      • ทำการเรียกข้อมูลสถานที่ให้บริการเตียงโดยใช้เลขประจำตัวของสถานที่ให้บริการเตียง

        เป้าหมายในการทดสอบ : เพื่อทดสอบการเรียกข้อมูลของสถานที่ให้บริการว่าสามารถใช้เลขประจำตัวของสถานที่ให้บริการเตียงในการเรียกข้อมูลได้จริงหรือไม่

      • ทำการเรียกข้อมูลสถานที่ให้บริการเตียงโดยใช้เลขประจำตัวของผู้ให้บริการเตียง

        เป้าหมายในการทดสอบ : เพื่อทดสอบการเรียกข้อมูลของสถานที่ให้บริการว่าสามารถใช้เลขประจำตัวของผู้ให้บริการเตียงในการเรียกข้อมูลได้จริงหรือไม่

    2. ทดสอบการเข้าสู่ระบบและการสมัครสมาชิก

      การทดสอบในส่วนนี้จะใช้การส่งRequest ในรูปแบบต่าง ๆ ในการทดสอบโดยแบ่งออกเป็น 7 รูปแบบ ดังนี้

      • ทำการส่งRequest login โดยการส่งEmail ที่ไม่มีอยู่ในระบบ

        เป้าหมายในการทดสอบ : เพื่อทดสอบการรับค่า Request มาตรวจสอบว่าEmailที่ได้รับมีอยู่จริงในระบบหรือไม่

      • ทำการส่งRequest login โดยการส่งEmail ที่มีรหัสผ่านผิด

        เป้าหมายในการทดสอบ : เพื่อทดสอบการรับค่า Request มาตรวจสอบว่าEmailที่ได้รับส่งเข้ามามีการตรวจสอบรหัสผ่านได้จริงหรือไม่

      • ทำการส่งRequest login โดยการส่งทั้ง Email และรหัสผ่านให้ถูกต้อง

        เป้าหมายในการทดสอบ : เพื่อทดสอบการรับค่า Request มากตรวจสอบทั้งEmailและรหัสผ่านได้จริงหรือไม่

      • ทำการส่งRequest register โดยการส่งข้อมูลการสมัครสมาชิกให้ไม่ถูกต้อง

        เป้าหมายในการทดสอบ : เพื่อทดสอบการรับค่า Request มาตรวจสอบว่าข้อมูลการสมาชิกถูกต้องจริงหรือไม่

      • ทำการส่ง Request register โดยการส่งข้อมูลการสมัครสมาชิกให้ถูกต้อง

        เป้าหมายในการทดสอบ : เพื่อทดสอบการรับค่า Request มาตรวจสอบว่าข้อมูลการสมาชิกถูกต้องจริงหรือไม่

      • ทำการส่งRequest register โดยการส่งข้อมูลการสมัครสมาชิกให้มีEmailที่มีในระบบอยู่แล้ว

        เป้าหมายในการทดสอบ :เพื่อทดสอบการรับค่า Request มาตรวจสอบว่าข้อมูลการสมาชิกมีEmailที่มีอยู่แล้วในระบบจริงหรือไม่

      • ทำการส่ง Request register โดยการส่งข้อมูลการสมัครสมาชิกให้มีเลขบัตรประจำตัวมีการใช้ซ้ำในระบบ

        เป้าหมายในการทดสอบ : เพื่อทดสอบการรับค่า Request มาว่ามีการตรวจสอบข้อมูลเลขบัตรประจำตัวที่มีอยู่แล้วในระบบจริงหรือไม่

    3. ทดสอบการจองเตียงกับการเรียกประวัติการจองเตียง

      การทดสอบในส่วนนี้จะใช้การเรียกข้อมูลและส่งRequest ในรูปแบบต่าง ๆ ในการทดสอบโดยแบ่งออกเป็น 7 รูปแบบ ดังนี้

      • ทำการเรียกประวัติการจองเตียงทั้งหมด

        เป้าหมายในการทดสอบ : เพื่อทดสอบว่ามาสามารถเรียกประวัติการจองเตียงทั้งหมดได้จริงหรือไม่

      • ทำการเรียกประวัติการจองเตียงโดยใช้เลขประจำตัวของประวัติการจองเตียง

        เป้าหมายในการทดสอบ : เพื่อทดสอบการเรียกข้อมูลของประวัติการจองเตียงว่าสามารถใช้เลขประจำตัวของประวัติการจองเตียงในการเรียกข้อมูลประวัติการจองเตียงได้จริงหรือไม่

      • ทำการเรียกประวัติการจองเตียงทั้งหมดของผู้ใช้ โดยใช้เลขประจำตัวของผู้ให้บริการเตียง

        เป้าหมายในการทดสอบ : เพื่อทดสอบการเรียกข้อมูลของประวัติการจองเตียงว่าสามารถใช้เลขประจำตัวของผู้ให้บริการเตียงในการเรียกข้อมูลประวัติการจองของผู้ใช้คนนั้นได้จริงหรือไม่

      • ทำการเรียกประวัติการจองเตียงทั้งหมดของสถานที่ให้บริการเตียง โดยใช้เลขประจำตัวของสถานที่ให้บริการเตียง

        เป้าหมายในการทดสอบ : เพื่อทดสอบการเรียกข้อมูลของประวัติการจองเตียงว่าสามารถใช้เลขประจำตัวของสถานที่ให้บริการเตียงในการเรียกข้อมูลประวัติการจองของสถานที่ให้บริการเตียงได้จริงหรือไม่

      • ทำการเรียกประวัติการจองเตียงทั้งหมดของสถานที่ให้บริการเตียง โดยใช้เลขประจำตัวของสถานที่ให้บริการเตียงที่ไม่มีประวัติการจองเตียง

        เป้าหมายในการทดสอบ : เพื่อทดสอบการเรียกข้อมูลของประวัติการจองเตียงว่าสามารถตรวจสอบเลขประจำตัวของสถานที่ให้บริการเตียงที่ไม่มีข้อมูลประวัติการจองในระบบได้จริงหรือไม่

      • ทำการจองเตียง โดยการส่งข้อมูลถูกต้อง

        เป้าหมายในการทดสอบ : เพื่อทดสอบว่ามาสามารถจองเตียงแล้วตรวจสอบความเพียงพอของเตียงได้จริงหรือไม่

      • ทำการจองเตียง โดยสถานที่ให้บริการเตียงเต็ม

        เป้าหมายในการทดสอบ : เพื่อทดสอบว่ามาสามารถจองเตียงแล้วตรวจสอบความเพียงพอของเตียงได้จริงหรือไม่

    4. ทดสอบการเรียกและแก้ไขข้อมูลของผู้ใช้

      การทดสอบในส่วนนี้จะใช้การเรียกข้อมูลและส่งRequest ในรูปแบบต่าง ๆ ในการทดสอบโดยแบ่งออกเป็น 6 รูปแบบ ดังนี้

      • ทำการเรียกข้อมูลของผู้ใช้ โดยใช้เลขประจำตัวของผู้ใช้

        เป้าหมายในการทดสอบ : เพื่อทดสอบว่ามาสามารถเรียกของผู้ใช้โดยใช้เลขประจำตัวของผู้ใช้ได้จริงหรือไม่

      • ทำการเรียกข้อมูลของผู้ใช้ โดยใช้เลขประจำตัวของผู้ใช้ที่ไม่มีในระบบ

        เป้าหมายในการทดสอบ : เพื่อทดสอบว่ามาสามารถตรวจสอบการเรียกของผู้ใช้โดยใช้เลขประจำตัวของผู้ใช้ที่ไม่ในระบบได้จริงหรือไม่

      • ทำการแก้ไขข้อมูลของผู้ใช้ โดยผู้ใช้ที่มีในระบบ

        เป้าหมายในการทดสอบ : เพื่อทดสอบว่ามาสามารถแก้ไขข้อมูลของผู้ใช้ได้จริงหรือไม่

      • ทำการแก้ไขข้อมูลของผู้ใช้ โดยผู้ใช้ที่ไม่มีในระบบ

        เป้าหมายในการทดสอบ : เพื่อทดสอบว่าระบบสามารถตรวจสอบการแก้ไขข้อมูลของผู้ใช้ในระบบได้จริงหรือไม่

      • ทำการเปลี่ยนรหัสผ่านของผู้ใช้ โดยมีรหัสผ่านเก่าที่ถูกต้อง

        เป้าหมายในการทดสอบ : เพื่อทดสอบว่าระบบสามารถตรวจสอบรหัสผ่านเก่าของผู้ใช้ว่ามีความถูกต้องจริงหรือไม่

      • ทำการเปลี่ยนรหัสผ่านของผู้ใช้ โดยมีรหัสผ่านเก่าที่ไม่ถูกต้อง

        เป้าหมายในการทดสอบ : เพื่อทดสอบว่าระบบสามารถตรวจสอบรหัสผ่านเก่าของผู้ใช้ว่ามีความถูกต้องจริงหรือไม่

Component test

  • Frontend

    เป็นการทดสอบว่าในแต่ละหน้าที่เกี่ยวข้องกับ feature จองเตียงนั้น มีส่วนประกอบ หรือ component ที่ควรจะอยู่ในหน้านั้น ๆ ครบถ้วนหรือไม่ โดยจะเน้นเฉพาะส่วนของ Frontend ที่เกี่ยวข้อง การทดสอบในส่วน Component test จะสามารถแบ่งออกได้เป็น 4 ส่วนดังนี้

    1. การทำ Component test ในส่วนของหน้า login เป็นการทดสอบเพื่อดูว่าหน้า login มีส่วนประกอบต่างๆครบถ้วนหรือไม่ โดยในหน้า login จะมีส่วนประกอบที่ต้องมีอยู่ทั้งหมด 3 ส่วนประกอบ ได้แก่
      • ช่องกรอก Email ของผู้ใช้
      • ช่องกรอกรหัสผ่านของผู้ใช้
      • ปุ่มสำหรับกดเพื่อทำการ Login
    2. การทำ Component test ในส่วนของหน้า main เป็นการทดสอบเพื่อดูว่าหน้า main มีส่วนประกอบต่างๆครบถ้วนหรือไม่ โดยในหน้า main จะมีส่วนประกอบที่ต้องมีอยู่ทั้งหมด 3 ส่วนประกอบ ได้แก่
      • ปุ่มสำหรับกด เพื่อเข้าถึงหน้าค้นหาเตียง
      • ปุ่มสำหรับกด เพื่อเข้าถึงหน้าจองเตียง
      • ช่องแสดงชื่อ และนามสกุลของผู้ใช้
    3. การทำ Component test ในส่วนของหน้าค้นหาเตียง เป็นการทดสอบ เพื่อดูว่าหน้าค้นหาเตียงมีส่วนประกอบต่างๆครบถ้วนหรือไม่ โดยในหน้าค้นหาเตียงจะมีส่วนประกอบที่ต้องมีอยู่ทั้งหมด 4 ส่วนประกอบ ได้แก่
      • ช่องเลือกจังหวัดที่ต้องการค้นหาสถานที่ให้บริการเตียง
      • จำนวนจังหวัดที่มีให้เลือกในช่องเลือกจังหวัด ต้องมีจำนวนตัวเลือกทั้งหมด 78 ตัวเลือก (77 จังหวัด + ทุกจังหวัด)
      • ช่องแสดงตัวเลขของจำนวนสถานที่ให้บริการเตียงในจังหวัดที่ผู้ใช้เลือก
      • ช่องแสดงรายละเอียดของสถานที่ให้บริการเตียง ตัองมีการแสดงผลข้อมูลต่าง ๆ ดังนี้

      1. จำนวนเตียงที่ว่างอยู่
      2. จังหวัดที่ตั้งของสถานที่ให้บริการเตียง
      3. ซอย/ถนน ที่ตั้งของสถานที่ให้บริการเตียง
      4. ตำบล/แขวง, เขต/อำเภอ ของสถานที่ให้บริการเตียง
      5. ปุ่มสำหรับกด เพื่อทำการจองเตียง หรือดูรายละเอียดของสถานที่ให้บริการเตียงนั้น ๆ เพิ่มเติม
    4. การทำ Component test ในส่วนของหน้าการจองเตียง เป็นการทดสอบ เพื่อดูว่าหน้าจองเตียงมีส่วนประกอบต่างๆครบถ้วนหรือไม่ โดยในหน้าจองเตียงจะมีส่วนประกอบที่ต้องมีอยู่ทั้งหมด 3 ส่วนประกอบ ได้แก่
      • ช่องแสดงรายละเอียดต่างๆของสถานที่ให้บริการเตียง จะตัองมีส่วนประกอบย่อย ๆ อยู่ทั้งหมด ดังนี้

        1. ปุ่มสำหรับกดเพื่อดูดำแหน่งของสถานที่ให้บริการเตียง ผ่านบริการของ Google Maps
        2. ชื่อและนามสกุล ของเจ้าของสถานที่ให้บริการเตียง
        3. เบอร์โทรติดต่อของสถานที่ให้บริการเตียง
        4. LINE ID สำหรับติดต่อสถานที่ให้บริการเตียง
        5. ข้อมูลที่อยู่ของสถานที่ให้บริการเตียง
        6. จำนวนเตียงที่ว่างอยู่ของสถานที่ให้บริการเตียงที่ผู้ใช้เลือก
      • ช่องเลือกวันที่ผู้ใช้ต้องการเข้ามาพักอาศัย
      • ปุ่มสำหรับกด เพื่อทำการยืนยันการจองเตียง

End-to-End test

  • Frontend

    เป็นการทดสอบการใช้งาน ตัวfeature จองเตียงตั้งแต่เริ่มจนจบ ซึ่งจะเริ่มตั้งแต่หน้า login => index => findbeds => buybeds โดยมีจุดประสงค์เพื่อทดลองว่า featureนี้ สามารถใช้งานได้จริง โดยเริ่มจาก

    1. การกรอกข้อมูล email และ รหัสผ่านให้ถูกต้อง เพื่อลงชื่อเข้าใช้งานที่หน้า login
    2. กดปุ่มค้นหาเตียงที่หน้า index
    3. ทำการเลือกจังหวัดที่ต้องการค้นหาสถานที่ ที่หน้า findbeds
    4. กดดูรายละเอียดของสถานที่ ที่ต้องการจองเตียง
    5. ทำการเลือกวันที่ ที่ต้องการจองเตียง
    6. กดปุ่ม จอง จากนั้น กดปุ่ม ยืนยัน เพื่อทำการจอง

Instruction of test

เทคโนโลยีที่เลือกใช้

  • Cypress: ใช้ในการทดสอบส่วน Frontend
  • Mocha: ใช้ในการทดสอบส่วน Backend
  • nyc: ใช้ในการหา Code coverage Backend

วิธีการ run automated test

Frontend

  1. ทำการ clone project จาก github มา และเปิดไฟล์ด้วย Vscode
  2. เปิด terminal ใน Vscode ขึ้นมา และพิมพ์คำสั่ง cd frontend-demo-test
  3. หลังเข้ามาที่ frontend-demo แล้ว พิมพ์คำสั่ง yarn เพื่อติดตั้ง node module
  4. หลังพิมพ์คำสั่ง yarn ให้พิมพ์คำสั่ง yarn add cypress เพื่อทำการติดตั้ง cypress
  5. หลังติดตั้ง cypress ให้พิมพ์คำสั่ง yarn cypress open เพื่อเปิดหน้าต่าง run test cypress ขึ้นมา แล้วเลือกไฟล์ Test ที่ต้องการ run
  6. เมื่อมีหน้าต่าง run test cypress ขึ้นมาแล้ว ให้ทำการ double click เพื่อเลือกรูปแบบของ test ที่ต้องการ run test (unit, component, e2e)

Backend

  1. ทำการ clone project จาก github มา และเปิดไฟล์ด้วย Vscode
  2. เปิด terminal ใน Vscode ขึ้นมา และพิมพ์คำสั่ง cd backend-demo-test
  3. หลังเข้ามาที่ backend-demo-test แล้ว พิมพ์คำสั่ง yarn เพื่อติดตั้ง node module
  4. หลังพิมพ์คำสั่ง yarn ให้พิมพ์คำสั่ง yarn add mocha chai chai-http nyc --dev เพื่อทำการติดตั้ง mocha
  5. หลังจากติดตั้ง ให้พิมพ์คำสั่ง yarn run test เพื่อทำการรันคำสั่ง test
  6. หลังจากจะมีหน้าต่างแสดงผลการ test ออกมา

Test result

ผลการดำเนินการของการทำ Testing แบ่งออกได้เป็น 3 ส่วน ดังนี้

Unit Test

  • Frontend

    ผลการทดสอบ unit test ในส่วนของ Frontend จะแบ่งออกแป็น 3 ส่วน เหมือนที่ได้กล่าวไว้ในส่วนของ test stratergies ดังนี้

    1. ทดสอบช่องกรอก Email และ Password
      • ทำการ login โดยการใส่รหัสผ่านผิด และทำการกดปุ่ม login

        ผลการทดสอบ : ในส่วนของหน้า login มีการ alert ข้อความ “โปรดกรอกข้อมูลให้ถูกต้อง” และแสดงข้อความตัวสีแดง “โปรดใส่รหัสผ่านให้ถูกต้อง” ใต้ช่องกรอก Password (Success)

      • ทำการ login โดยการใส่ทั้ง Email และรหัสผ่านผิด และทำการกดปุ่ม login

        ผลการทดสอบ : ในส่วนของหน้า login มีการ alert ข้อความ “โปรดกรอกข้อมูลให้ถูกต้อง” และแสดงข้อความตัวสีแดง “โปรดใส่รหัสผ่านให้ถูกต้อง” และ “โปรดใส่ Email ให้ถูกต้อง” ใต้ช่องกรอก Password และช่องกรอก Email (Success)

      • ทำการ login โดยการใส่ทั้ง Email และรหัสผ่านให้ถูกต้อง และทำการกดปุ่ม login ผลการทำสอบ : login สำเร็จและแสดงหน้า Main page (Success)

    2. ทดสอบช่องเลือกจังหวัดที่ต้องการค้นหาสถานที่จองเตียง ในหน้าค้นหาเตียง
      • ทำการเลือกจังหวัดกรุงเทพฯ และกดปุ่มค้นหา

        ผลการทดสอบ : แสดงผลข้อมูลของสถานที่จองเตียงเฉพาะในส่วนของจังหวัดกรุงเทพฯเท่านั้น (Success)

    3. ทดสอบช่องเลือกวันที่ต้องการจองเตียง
      • ทำการเลือกวันที่ที่จอง เป็นวันในอดีต และกดปุ่มจองเตียง

        ผลการทดสอบ : ในส่วนของหน้าจองเตียง มีการ alert ข้อความ “โปรดกรอกข้อมูลให้ถูกต้อง” และแสดงข้อความตัวสีแดง “โปรดเลือกวันที่ให้ถูกต้อง” ใต้ช่องเลือกวันที่ (Success)

      • ทำการเลือกวันที่ที่จอง เป็นวันนี้หรือวันในอนาคต และกดปุ่มจองเตียง

        ผลการทดสอบ : สามารถจองเตียงได้สำเร็จและแสดงผลข้อมูลการจองเตียงทั้งหมดของผู้ใช้

  • Backend

    ผลการทดสอบ unit test ในส่วนของ Backend จะแบ่งออกแป็น 4 ส่วน เหมือนที่ได้กล่าวไว้ในส่วนของ test stratergies ดังนี้

    1. ทดสอบการเรียกข้อมูลของสถานที่ให้บริการเตียง
      • ทำการเรียกข้อมูลสถานที่ให้บริการเตียงที่มีเตียงพร้อมให้บริการ

        ผลการทดสอบ : สามารถเรียกข้อมูลสถานที่ให้บริการเตียงที่มีเตียงพร้อมให้บริการได้ และได้รับข้อความ “การค้นหาสำเร็จ!” (Success)

      • ทำการเรียกข้อมูลสถานที่ให้บริการเตียงโดยใช้เลขประจำตัวของสถานที่ให้บริการเตียง

        ผลการทดสอบ :สามารถเรียกข้อมูลสถานที่ให้บริการเตียงโดยใช้เลขประจำตัวของสถานที่ได้ และได้รับข้อความ “การค้นหาสำเร็จ!” (Success)

      • ทำการเรียกข้อมูลสถานที่ให้บริการเตียงโดยใช้เลขประจำตัวของผู้ใช้ที่ให้บริการเตียง

        ผลการทดสอบ : สามารถเรียกข้อมูลสถานที่ให้บริการเตียงโดยใช้เลขประจำตัวของผู้ใช้ที่ให้บริการเตียงได้ และได้รับข้อความ “การค้นหาสำเร็จ!” (Success)

    2. ทดสอบการเข้าสู่ระบบและการสมัครสมาชิก
      • ทำการส่งRequest login โดยการส่งEmail ที่ไม่มีอยู่ในระบบ

        ผลการทดสอบ : ไม่สามารถLogin ได้ และได้รับข้อความ “อีเมลไม่มีอยู่ในระบบ กรุณาลองใหม่อีกครั้ง” (Success)

      • ทำการส่งRequest login โดยการส่งEmail ที่มีรหัสผ่านผิด

        ผลการทดสอบ : ไม่สามารถLogin ได้ และได้รับข้อความ “รหัสผ่านไม่ถูกต้อง กรุณาลองใหม่อีกครั้ง” (Success)

      • ทำการส่งRequest login โดยการส่งทั้ง Email และรหัสผ่านให้ถูกต้อง

        ผลการทดสอบ : สามารถLogin ได้ และได้รับข้อความ “เข้าสู่ระบบสำเร็จ”กับข้อมูลของผู้ใช้ (Success)

      • ทำการส่งRequest register โดยการส่งข้อมูลการสมัครสมาชิกให้ไม่ถูกต้อง

        ผลการทดสอบ : ไม่สามารถRegister ได้ และได้รับข้อความ “เกิดข้อผิดพลาดกรุณาลงทะเบียนอีกครั้งภายหลัง” (Success)

      • ทำการส่งRequest register โดยการส่งข้อมูลการสมัครสมาชิกให้ถูกต้อง

        ผลการทดสอบ : สามารถRegister ได้ และได้รับข้อความ “ลงทะเบียนสำเร็จ” (Success)

      • ทำการส่งRequest register โดยการส่งข้อมูลการสมัครสมาชิกให้มีEmailที่มีในระบบอยู่แล้ว

        ผลการทดสอบ : ไม่สามารถRegister ได้ และได้รับข้อความ “อีเมลนี้มีอยู่ในระบบอยู่แล้ว” (Success)

      • ทำการส่งRequest register โดยการส่งข้อมูลการสมัครสมาชิกให้มีเลขบัตรประจำตัวมีการใช้ซ้ำในระบบ

        ผลการทดสอบ : ไม่สามารถRegister ได้ และได้รับข้อความ “เลขบัตรประจำตัวประชาชนมีการใช้ซ้ำ” (Success)

    3. ทดสอบการจองเตียงกับการเรียกประวัติการจองเตียง
      • ทำการเรียกประวัติการจองเตียงทั้งหมด ผลการทดสอบ : สามารถเรียกประวัติการจองเตียงทั้งหมดได้ และได้รับข้อความ “การค้นหาสำเร็จ!” (Success)
      • ทำการเรียกประวัติการจองเตียงโดยใช้เลขประจำตัวของประวัติการจองเตียง

        ผลการทดสอบ : สามารถเรียกประวัติการจองเตียงโดยใช้เลขประจำตัวของประวัติการจองได้ และได้รับข้อความ “การค้นหาสำเร็จ!” (Success)

      • ทำการเรียกประวัติการจองเตียงทั้งหมดของผู้ใช้ โดยใช้เลขประจำตัวของผู้ให้บริการเตียง

        ผลการทดสอบ : สามารถเรียกประวัติการจองเตียงโดยใช้เลขประจำตัวของผู้ใช้ได้ และได้รับข้อความ “การค้นหาสำเร็จ!” (Success)

      • ทำการเรียกประวัติการจองเตียงทั้งหมดของสถานที่ให้บริการเตียง โดยใช้เลขประจำตัวของสถานที่ให้บริการเตียง

        ผลการทดสอบ : สามารถเรียกประวัติการจองเตียงโดยใช้เลขประจำตัวของสถานที่ให้บริการเตียงได้ และได้รับข้อความ “การค้นหาสำเร็จ!” (Success)

      • ทำการเรียกประวัติการจองเตียงทั้งหมดของสถานที่ให้บริการเตียง โดยใช้เลขประจำตัวของสถานที่ให้บริการเตียงที่ไม่มีประวัติการจองเตียง

        ผลการทดสอบ : ไม่สามารถเรียกประวัติการจองเตียงโดยใช้เลขประจำตัวของสถานที่ให้บริการเตียงได้ และได้รับข้อความ “ไม่มีข้อมูล!” (Success)

      • ทำการจองเตียง โดยการส่งข้อมูลถูกต้อง

        ผลการทดสอบ : สามารถทำการจองเตียงได้ และได้รับข้อความ “จองสำเร็จ” (Success)

      • ทำการจองเตียง โดยสถานที่ให้บริการเตียงเต็ม

        ผลการทดสอบ : ไม่สามารถทำการจองเตียงได้ และได้รับข้อความ “ไม่สามารถจองได้ เนื่องจากเตียงเต็ม” (Success)

    4. ทดสอบการเรียกและแก้ไขข้อมูลของผู้ใช้
      • ทำการเรียกข้อมูลของผู้ใช้ โดยใช้เลขประจำตัวของผู้ใช้

        ผลการทดสอบ : สามารถเรียกข้อมูลของผู้ใช้ได้ และได้รับข้อความ “ไอดีที่เรียกถูกต้อง” (Success)

      • ทำการเรียกข้อมูลของผู้ใช้ โดยใช้เลขประจำตัวของผู้ใช้ที่ไม่มีในระบบ

        ผลการทดสอบ : ไม่สามารถเรียกข้อมูลของผู้ใช้ได้ และได้รับข้อความ “เกิดข้อผิดพลาดกรุณาลงทะเบียนอีกครั้งภายหลัง” (Success)

      • ทำการแก้ไขข้อมูลของผู้ใช้ โดยผู้ใช้ที่มีในระบบ

        ผลการทดสอบ : สามารถแก้ไขข้อมูลของผู้ใช้ได้ และได้รับข้อความ “อัพเดทข้อมูลสำเร็จ” (Success)

      • ทำการแก้ไขข้อมูลของผู้ใช้ โดยผู้ใช้ที่ไม่มีในระบบ

        ผลการทดสอบ : ไม่สามารถแก้ไขข้อมูลของผู้ใช้ได้ และได้รับข้อความ “อัพเดทข้อมูลไม่สำเร็จ” (Success)

      • ทำการเปลี่ยนรหัสผ่านของผู้ใช้ โดยมีรหัสผ่านเก่าที่ถูกต้อง

        ผลการทดสอบ : สามารถเปลี่ยนรหัสผ่านของผู้ใช้ได้ และได้รับข้อความ “เปลี่ยนรหัสผ่านสำเร็จ” (Success)

      • ทำการเปลี่ยนรหัสผ่านของผู้ใช้ โดยมีรหัสผ่านเก่าที่ไม่ถูกต้อง

        ผลการทดสอบ : ไม่สามารถเปลี่ยนรหัสผ่านของผู้ใช้ได้ และได้รับข้อความ “รหัสผ่านไม่ถูกต้อง กรุณาลองใหม่อีกครั้ง” (Success)

Component Test

  • Frontend

    ผลการทดสอบ Component test ในส่วนของ Frontend จะแบ่งออกแป็น 4 ส่วน เหมือนที่ได้กล่าวไว้ในส่วนของ test stratergies ดังนี้

    1. การทำ Component test ในส่วนของหน้า login
      • ช่องกรอก Email ของผู้ใช้

        ผลการทดสอบ : ในหน้า login มีในส่วนของช่องกรอก Email อยู่จริง (Success)

      • ช่องกรอกรหัสผ่านของผู้ใช้

        ผลการทดสอบ : ในหน้า login มีในส่วนของช่องกรอกรหัสผ่านอยู่จริง (Success)

      • ปุ่มสำหรับกดเพื่อทำการ Login

        ผลการทดสอบ : ในหน้า login มีในส่วนของปุ่มสำหรับกดเพื่อทำการ Login อยู่จริง (Success)

    2. การทำ Component test ในส่วนของหน้า main
      • ปุ่มสำหรับกด เพื่อเข้าถึงหน้าค้นหาเตียง

        ผลการทดสอบ : ในหน้า main มีในส่วนของปุ่มสำหรับกด เพื่อเข้าถึงหน้าค้นหาเตียง โดยจะมีอยู่ใน 2 ส่วน ได้แก่ ใน navbar ของหน้า และในแทบฟีเจอร์การค้นหาและจองเตียง (Success)

      • ปุ่มสำหรับกด เพื่อเข้าถึงหน้าจองเตียง

        ผลการทดสอบ : ในหน้า main มีในส่วนของปุ่มสำหรับกด เพื่อเข้าถึงหน้าจองเตียง โดยจะมีอยู่ใน 2 ส่วน ได้แก่ ใน navbar ของหน้า และในแทบฟีเจอร์การค้นหาและจองเตียง (Success)

      • ช่องแสดงชื่อ และนามสกุลของผู้ใช้

        ผลการทดสอบ : ในหน้า main มีในส่วนของช่องแสดงชื่อ และนามสกุลของผู้ใช้อยู่จริง (Success)

    3. การทำ Component test ในส่วนของหน้าค้นหาเตียง
      • ช่องเลือกจังหวัดที่ต้องการค้นหาสถานที่ให้บริการเตียง

        ผลการทดสอบ : ในหน้าค้นหาเตียง มีในส่วนของช่องเลือกจังหวัดที่ต้องการค้นหาสถานที่ให้บริการเตียงอยู่จริง (Success)

      • จำนวนจังหวัดที่มีให้เลือกในช่องเลือกจังหวัด

        ผลการทดสอบ : ในช่องเลือกจังหวัดของหน้าค้นหาเตียง มีจำนวนตัวเลือกอยู่ทั้งหมด 78 ตัวเลือกครบถ้วน ตามที่ได้กำหนดไว้ใน test stratergies (Success)

      • ช่องแสดงตัวเลขของจำนวนสถานที่ให้บริการเตียงในจังหวัดที่ผู้ใช้เลือก

        ผลการทดสอบ : ในหน้าค้นหาเตียง มีในส่วนของช่องแสดงตัวเลขของจำนวนสถานที่ให้บริการเตียงในจังหวัดที่ผู้ใช้เลือกอยู่จริง (Success)

      • ช่องแสดงรายละเอียดของสถานที่ให้บริการเตียง

        ผลการทดสอบ : ในช่องแสดงรายละเอียดของสถานที่ให้บริการเตียงในหน้าค้นหาเตียง มีรายละเอียดของสถานที่ให้บริการเตียงอยู่ครบถ้วน ตามที่ได้กำหนดไว้ (Success)

    4. การทำ Component test ในส่วนของหน้าการจองเตียง
      • ช่องแสดงรายละเอียดต่างๆของสถานที่ให้บริการเตียง

        ผลการทดสอบ : ในช่องแสดงรายละเอียดของสถานที่ให้บริการเตียงในหน้าจองเตียง มีรายละเอียดของสถานที่ให้บริการเตียงอยู่ครบถ้วน ตามที่ได้กำหนดไว้ (Success)

      • ช่องเลือกวันที่ผู้ใช้ต้องการเข้ามาพักอาศัย

        ผลการทดสอบ : ในหน้าจองเตียง มีในส่วนของช่องเลือกวันที่ผู้ใช้ต้องการเข้ามาพักอาศัยอยู่จริง (Success)

      • ปุ่มสำหรับกด เพื่อทำการยืนยันการจองเตียง

        ผลการทดสอบ : ในหน้าจองเตียง มีในส่วนของปุ่มสำหรับกด เพื่อทำการยืนยันการจองเตียงอยู่จริง (Success)

End-to-End Test

  • Frontend

    การทดสอบแบบ End To End จะเป็นการทดสอบที่คลอบคลุมการใช้งานทุกส่วนที่เกี่ยวข้องกับการใช้งาน ตัว feature การจองเตียง โดยการทดสอบนั้นจะเริ่มต้นจาก

    1. กรอกข้อมูลที่ email และpasswordให้ถูกต้อง ในช่องกรอกข้อมูล และ กดปุ่มลงชื่อเข้าใช้ที่หน้า login
    2. กดปุ่ม ค้นหาเตียง ที่หน้า index
    3. ทำการเลือกจังหวัดที่ต้องการค้นหา ที่ช่อง drop down จากนั้นกดปุ่มไอคอน แว่นขยาย เพื่อค้นหา ที่หน้า findbeds
    4. ทำการกดปุ่ม ดูรายละเอียด ในช่องที่เลือก เพื่อเข้าไปดูรายละเอียด ในหน้า buybeds
    5. ทำการเลือกวันที่ต้องการจองให้ถูกต้อง จากนั้นกดปุ่ม จอง และกดปุ่ม ยืนยัน เพื่อทำการจองเตียง

    ผลการทดสอบ: การใช้งานโดยรวมของตัว feature การจองเตียง สามารถใช้งานได้อย่างถูกต้องทุกส่วนตามที่ควรจะเป็น (Success)

Code/test coverage

Backend

Line change and Number commit of Group

wiki


Student No. Name No. of Commit (%) Line Change (%)
62070112 นายปภัส เงาธัมมะสกุล 17% 16.67%
62070113 นายประธาน นาเวียง 5% 16.60%
62070134 นายพลัฏฐ์ วงศ์สิทธิพรรุ่ง 13% 16.60%
62070139 นายพิชญะ สิงห์มีศรี 10% 16.71%
62070168 นายวิชยุตม์ ทวิชัยยุทธ 17% 16.57%
62070215 นายอคิราภ์ สีแสนยง 37% 16.85%


code


Student No. Name No. of Commit (%) Line Change (%)
62070112 นายปภัส เงาธัมมะสกุล 16% 3.66%
62070113 นายประธาน นาเวียง 8% 3.81%
62070134 นายพลัฏฐ์ วงศ์สิทธิพรรุ่ง 10% 24.72%
62070139 นายพิชญะ สิงห์มีศรี 9% 2.67%
62070168 นายวิชยุตม์ ทวิชัยยุทธ 16% 2.67%
62070215 นายอคิราภ์ สีแสนยง 40% 62.46%

หมายเหตุ: นายอคิราภ์ สีแสนยง commit package-lock.json ก่อนประกาศ .gitignore ของทางฝั่ง frontend และ นายพลัฏฐ์ วงศ์สิทธิพรรุ่ง commit package-lock.json ก่อนประกาศ .gitignore ของทางฝั่ง backend

⚠️ **GitHub.com Fallback** ⚠️