Automation testing หรือ การทดสอบซอฟต์แวร์อัตโนมัติ คืออะไร ทำไมถึงสำคัญต่อการทดสอบซอฟต์แวร์


     การทดสอบซอฟต์แวร์นั้นถือเป็นกระบวนการอย่างหนึ่งในการพัฒนาซอฟต์แวร์ เพื่อหาข้อผิดพลาดและป้องกันข้อผิดพลาดที่จะเกิดขึ้น ช่วยให้ซอฟต์แวร์ที่พัฒนานั้นมีประสิทธิภาพ ซึ่งในช่วงการทดสอบซอฟต์แวร์นั้น กระบวนการสำคัญที่ Tester จะใช้ในการทดสอบคือ Manual Testing เป็นการหาข้อผิดพลาดโดยใช้คนเข้าไปตรวจสอบดูว่าซอฟต์แวร์มีข้อผิดพลาดตรงไหนหรือไม่ ยกตัวอย่างเช่น หากซอฟต์แวร์มีการเปลี่ยนแปลง มี New feature ใหม่ขึ้นมา tester จะมีการทดสอบแบบ Regression testing คือการ Run test case เก่าๆ เพื่อดูว่าซอฟต์แวร์มีข้อผิดพลาดหรือไม่ หากพิจารณาดูแล้ว ค่อนข้างจะเป็นงานที่ทำซ้ำและเสียทั้งเวลา ปัจจุบันจึงมีแนวคิดที่จะนำงานที่ทำซ้ำๆนั้นไปทำเป็น Automation หรือทำให้เป็นระบบอัตโนมัติขึ้นมา เช่น ต้องการทดสอบหน้าของการสมัครสมาชิก ซึ่งข้อมูลที่ต้อง Input เข้าไป ผลที่คาดหวัง ค่อนข้างจะมีค่าที่แน่นอนอยู่แล้ว ซึ่งเราสามารถทำการทดสอบลักษณะแบบนี้ให้เป็น Automation testing ได้ หรืออาจจะมองว่าเรากำลังสร้างหุ่นยนต์ขึ้นมาเพื่อทดสอบซอฟต์แวร์นั่นเอง

เข้าใจรูปแบบของการทดสอบกันก่อนจะรู้จัก automate test 

     แน่นอนว่าในการทดสอบซอฟต์แวร์นั้นเป็นการหาข้อผิดพลาดและเป็นการป้องกันข้อผิดพลาดของซอฟต์แวร์ซึ่งในการทดสอบซอฟต์แวร์นั้นก็สามารถแบ่งออกเป็น functional testing กับ Non-functional testing ซึ่งเราจะนำ automation testing มาใช้ในการทดสอบกับ functional testing
     การทดสอบ Functional testing นั้น จะเป็นการทดสอบเชิงฟังก์ชัน ว่าฟังก์ชันที่ถูกสร้างขึ้นมานั้นเป็นไปตาม Requirement หรือไม่ ค่า Input ที่ใส่เข้าไปในโปรแกรม กับ Output ที่ได้สอดคล้องกับ Requirement หรือไม่ ซึ่งในส่วนของ Functional testing นี้เองก็จะมีประเภทแยกออกไปอีกคือ

  • Smoke testing คือ การทดสอบว่าซอฟต์แวร์ที่สร้างขึ้นมาสามารถทำงานบน System หรือ Application ได้ Smoke test นั้นจะแสดงให้เห็นว่าระบบสามารถทำงานได้ ถูกต้องตาม requirement โดยการทำการทดสอบโดยใช้ Smoke test จะทำให้เรามั่นใจได้ว่า Function หลักของระบบจะสามารถทำงานได้อย่างปกติ
  • Sanity testing คือการทดสอบ New feature หรือ bug ที่ Fixed จะเน้นการทดสอบใน function การทำงานที่แก้ไข เพื่อมั่นใจว่าสิ่งที่ได้แก้ไขนั้นจะไม่สิ่งผลกระทบต่อซอฟต์แวร์
  • Regression testing คือ การทดสอบซอฟต์แวร์เพื่อให้มั่นใจว่า การเปลี่ยนแปลงของซอฟต์แวร์นั้น จะไม่กระทบ Function การทำงานเดิม เช่น มี Requirement ใหม่, มีการเปลี่ยนแปลงของ Code, การ Fix bug, มี Feature ใหม่ๆเพิ่มเข้ามา เป็นต้น สิ่งที่จะทำให้มั่นใจว่า Function การทำงานเดิมจะไม่ได้รับผลกระทบนั้น Tester จะทดสอบซอฟต์แวร์อีกครั้ง จาก Test case ชุมเดิม ที่ได้เคยสร้างไว้
  • Usability testing หรือ User Experience Testing คือการให้ User เป็นคนทดสอบเพื่อดูการทำงานของซอฟต์แวร์ว่าถูกต้องหรือไม่ แล้วบันทึกผลการทดสอบจาก User ว่า User มีความพึ่งพอใจในการใช้งานหรือไม่ โดยผลการทดสอบจะเป็นสิ่งที่นำไปประเมินและปรับปรุงระบบต่อไป
Automation testing จะเข้ามาช่วยในการทดสอบซอฟต์แวร์ได้อย่างไร

     การนำ Automation testing มาช่วยการทดสอบโดยเฉพาะช่วงของการทดสอบซอฟต์แวร์แบบ Regression testing นั้นจะมีประสิทธิภาพสูงสุด เพราะ Regression testing นั้นจะใช้เวลาค่อนข้างนาน หากเทียบกับการทดสอบรูปแบบอื่นๆ เพราะจะต้อง Execute test case ทั้งหมดที่มีอยู่เพื่อให้มั่นใจว่า New feature นั้นจะไม่ส่งผลกระทบ ด้วยปัญหาที่ Regression testing ต้องทำซ้ำบ่อยๆ ใช้เวลาการทดสอบมาก และก็ใช้ tester หลายคนเพื่อมาช่วยกันทดสอบ จึงมีความคิดในการสร้าง Test script ขึ้นมา โดย Test script นั้นจะถูกสร้างโดย Automation tester ต้องอาศัย tester ที่มีความรู้ความเข้าใจการสร้าง test script ภายใต้ Automation Framework ที่สนใจ หลังจากสร้าง Test script เสร็จแล้วก็สามารถนำ Test script มาทดสอบ Regression testing ได้เลย แทนที่จะใช้ tester ในการ Execute test case ทุกครั้ง ต่อไปก็จะใช้ Test script ทำงานแทน Tester  ทำให้ลดต้นทุนด้านเวลาและคนที่จะมา Execute test case ได้อย่างมาก

Test automation framework คืออะไร

     Test automation framework เป็นโครงสร้างที่ใช้ในการกำหนดแนวทางในการพัฒนา Test script เช่น วิธีในการสร้าง Test script วิธีการ Execute test script วิธีการบำรุงรักษา Test script เป็นต้น ดังนั้น Framework ที่ถูกเลือกจะมีผลต่อการออกแบบ Test script ของเรานั่นเอง
     Automation framework นั้นเปรียบได้กับการเลือกยานพาหนะ หากต้องการขับรถไปต่างจังหวัดขับทางไกลก็เลือกรถยนต์ หากต้องการขับในเมืองรถติดๆและต้องการความรวดเร็วก็เลือกใช้มอเตอร์ไซต์ ขึ้นอยู่กับรูปแบบการใช้งาน Automation framework ก็เช่นกันขึ้นอยู่กับลักษณะของ Application เช่น Web application, API, Windows application  ก็เลือก framework ที่แตกต่างกันออกไป ซึ่งแต่ละ Framework จะถูกออกแบบเป็นลักษณะเฉพาะเจาะจงอยู่แล้ว อย่าง Robot framework ก็ถือว่าเป็น framework ที่สามารถทำงานได้ดีบน Web application ในการสร้าง Framework นั้นสามารถสร้างขึ้นมาเองหรือจะใช้ Framework ที่มีอยู่ก็ได้ ไม่ว่าจะเป็น Framework แบบไหนควรมีคุณลักษณะดังนี้


โครงสร้างโดยทั่วไปของ Automation framework

Project Management 
     ก่อนจะลงมือทำ Automate scripts ต้องเข้าในก่อนว่าองค์กรเรานั้นใช้ Process model แบบไหน เช่น Waterfall model หรือเป็นแบบ Agile เรารู้ว่าองค์กรใช้ Process model แบบไหนจะมีผลต่อการวางแผนในการพัฒนา Automate scripts เช่นหากองค์กรใช้ Process model แบบ Agile นั้นหมายความว่าเราจะต้องพัฒนา Automate scripts ให้เสร็จในทุกๆ Sprint

Test Management
     ในระหว่างพัฒนา Software นั้น QA จะต้องเขียน Test cases, Test Scenario ตาม Requirement เพื่อทดสอบว่าผลลัพธ์เป็นไปตามที่คาดหวังหรือไม่โดยจะเก็บไว้ใน Test case management tool เพื่อในการสร้าง Automate scripts ว่าเงื่อนไขที่ใช้ออกแบบหรือผลลัพทธ์ที่ได้ต้องเป็นไปตาม Test cases ที่ได้ออกแบบไว้

Test Generation Layer
     เป็น Layer ที่จะใช้ในการสร้าง Test scripts ขึ้นมาโดยทั่วไปแล้วมักจะประกอบไปด้วยองค์ประกอบดังต่อไปนี้
  • Test Data เป็นข้อมูลทดสอบที่ถูกสร้างขึ้น การออกแบบการทดสอบในบาง Application อาจจะเป็นลักษณะของการ Execution scenario เดิมๆแต่อาจจะเปลี่ยนชุดข้อมูลทดสอบ (Data-Driven) ซึ่งหากมีการออกแบบการทำสอบแบบนี้ การสร้าง Test Data เก็บแยกออกจากตัว Scripts จะมีความยืดหยุ่นกว่า
  • Test Scripts เป็นการสร้าง Test scripts ขึ้นมาบน Framework ที่สนใจ ซึ่งหาก Framework ไหนมีวิธีการสร้าง Test scripts ที่ง่ายและมีคู่มือที่ดีแล้วจะช่วยให้ QA พัฒนา Automate scripts ได้ง่ายขึ้น
  • Test Libraries เป็นส่วนที่จะเพิ่มความสามารถให้กับ Framework ยิ่ง Framework ไหนสามารถที่จะเชื่อมต่อ Libraries หรือ QA สามารถพัฒนา Libraries เองได้แล้วจะยิ่งเพิ่มความสามารถให้กับ Framework นั้น
  • Scheduler ปกติแล้วเมื่อพัฒนา Scripts เสร็จควรมีการตั้ง Run scripts ในทุกๆวันหรือทุกๆรอบของการ Deploy เพื่อเป็นการตรวจสอบระบบในทุกๆวันว่าระบบทำงานถูกต้องหรือไม่ เช่น กำหนดให้ Automate scripts run ทุกๆเที่ยงคืน ซึ่งเมื่อถึงตอนเช้า QA หรือ Developer team สามารถตรวจผลการทำงานของระบบได้ว่าระบบมี Issue หรือไม่
  • Repository ทุกๆครั้งที่มีการ Update code ของ Automate scripts ใหม่ๆ ควรมีการใช้ Object Repository เก็บไว้เพื่อทำ Version control
Test Execution Layer
     เป็น Layer ที่ใช้ในการ run test scripts รวมไปถึงการแสดง Report ต่างๆ ประกอบด้วย
  • Test Execution ใช้ในการ run test scripts ที่เราพัฒนาขึ้นมาภายใต้ Environment ที่เรากำหนด
  • Reporting จะแสดงถึงผลของการ run test scripts โดยทั่วไปแล้วจะแสดงถึงผลผ่านหรือไม่ผ่าน และจะมีรายละเอียดต่างๆ เพื่อ QA จะสามารถ investigrate ถึงปัญหาที่เกิดขึ้นได้ว่าเป็น Bug หรือไม่
  • Logging เป็นเก็บรายละเอียดผลการ run test scripts ของเราเพื่อที่จะสามารถใช้ตรวจสอบข้อผิดพลาดต่างๆได้ในกรณีที่ test scripts ไม่สามารถ run ได้
Application under test
     คือระบบที่เราต้องการทดสอบหรือ run test scripts เช่น Application นั้นเป็นเว็บ Mobile Windows หรือ API ซึ่งเราสามารถพัฒนาและ run test scripts ได้ใน Application เหล่านั้นแต่ต้องขึ้นกับ Framework อีกทีว่าสามารถ run ได้ใน Application แบบไหนได้บ้าง

ข้อดีข้อเสียของการทำ Automated test
ข้อดี
  • เป็นการทดสอบที่รวดเร็ว
  • ข้อผิดพลาดในการ run test น้อยกว่าคน(Manual test) เนื่องจากเป็นการทำงานโดย Scripts และสามารถตรวจสอบผลลัพธ์ที่คาดหวังได้อย่างแม่นยำ
  • สามารถชี้วัดคุณภาพของซอฟต์แวร์ได้อย่างรวดเร็ว
  • สร้างความน่าเชื่อถือให้กับซอฟต์แวร์
ข้อเสีย
  • มีค่าใช้จ่ายเพิ่มเติมในการสร้าง test scripts
  • ต้องการเทคโนโลยีอื่นในการพัฒนา เช่น Automation framework
  • ทีมพัฒนาต้องเข้าใจและมีความสามารถเกี่ยวกับ Automation
  • มี Cost ในการ Maintenance test scripts

ป้ายกำกับ

แสดงเพิ่มเติม

บทความยอดนิยม

Software Development Life Cycle (SDLC) คืออะไร ทำไมจำเป็นต่อการพัฒนาซอฟต์แวร์

ม.ปลายอยากเข้าสายคอม วิทยาการคอม วิศวกรรมคอม เตรียมตัวอย่างไร ต้องมีพื้นฐานอะไรบ้าง

วิธีเก็บ วิเคราะห์ รวบรวม requirement อย่างไรให้มีประสิทธิภาพ

Performance Test คือ อะไร วัดประสิทธิภาพของระบบ ล่มไม่ล่ม จะรู้ได้อย่างไร

8 สิ่งที่ AI จะมาเปลี่ยนโลกในอนาคต

ถอดรหัสความลับเครื่อง Enigma จุดเริ่มต้นและจุดจบของสงครามโลกครั้งที่ 2