อ่าน 4 นาที
การทดสอบอัตโนมัติ
การทดสอบอัตโนมัติ คือการใช้ ซอฟต์แวร์ (แยกต่างหากจากซอฟต์แวร์ที่กำลังทดสอบ) เพื่อควบคุมการดำเนินการทดสอบและเปรียบเทียบผลลัพธ์จริงกับผลลัพธ์ที่คาดการณ์ไว้ [ 1 ]...
การทดสอบอัตโนมัติ
| ส่วนหนึ่งของชุดบทความเกี่ยวกับ |
| การพัฒนาซอฟต์แวร์ |
|---|
การทดสอบอัตโนมัติคือการใช้ซอฟต์แวร์ (แยกต่างหากจากซอฟต์แวร์ที่กำลังทดสอบ) เพื่อควบคุมการดำเนินการทดสอบและเปรียบเทียบผลลัพธ์จริงกับผลลัพธ์ที่คาดการณ์ไว้[ 1 ]การทดสอบอัตโนมัติสนับสนุนการทดสอบระบบที่กำลังทดสอบ (SUT) โดยไม่ต้องมีการโต้ตอบด้วยตนเองซึ่งอาจนำไปสู่การดำเนินการทดสอบที่เร็วขึ้นและการทดสอบที่บ่อยขึ้น การทดสอบอัตโนมัติเป็นแง่มุมสำคัญของการทดสอบอย่างต่อเนื่องและมักใช้สำหรับการบูรณาการอย่างต่อเนื่องและการส่งมอบอย่างต่อเนื่อง (CI/CD) [ 2 ]
เมื่อเปรียบเทียบกับการทดสอบด้วยตนเอง
การทดสอบด้วยระบบอัตโนมัติมีข้อดีหลายประการเหนือกว่าการทดสอบด้วยตนเอง
การทดสอบ API
สำหรับการทดสอบ APIนั้น การทดสอบจะควบคุมระบบที่กำลังทดสอบ (SUT) ผ่านทางอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) เมื่อเทียบกับการทดสอบด้วยตนเอง การทดสอบ API แบบอัตโนมัติมักสามารถดำเนินการทดสอบได้จำนวนมากในเวลาอันสั้น
การทดสอบ GUI
สำหรับการทดสอบ GUIนั้น การทดสอบจะควบคุมระบบที่กำลังทดสอบ (SUT) ผ่านทางส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) โดยการสร้างเหตุการณ์ต่างๆ เช่น การกดแป้นพิมพ์และการคลิกเมาส์ การทดสอบ GUI แบบอัตโนมัติอาจเป็นเรื่องท้าทายในการพัฒนา แต่สามารถทำงานได้เร็วกว่าการทดสอบโดยมนุษย์มาก สาขาเฉพาะทาง ได้แก่:
- การทดสอบแบบบันทึกและเล่นซ้ำ – เครื่องมือทดสอบ GUI บางตัวมีฟีเจอร์ที่ช่วยให้สามารถบันทึกการกระทำของผู้ใช้แบบโต้ตอบและเล่นซ้ำในภายหลังเพื่อใช้ในการทดสอบ โดยเปรียบเทียบผลลัพธ์ที่ได้จริงกับผลลัพธ์ที่คาดหวัง ข้อดีของวิธีการนี้คือไม่จำเป็นต้องเขียนโค้ดมากนักหรืออาจไม่ต้องเขียนเลย อย่างไรก็ตาม บางคนอ้างว่าการทดสอบดังกล่าวมีปัญหาด้านความน่าเชื่อถือ การบำรุงรักษา และความแม่นยำ ตัวอย่างเช่น การเปลี่ยนป้ายกำกับของปุ่มหรือการย้ายปุ่มไปยังส่วนอื่นของหน้าจออาจต้องบันทึกการทดสอบใหม่ และการทดสอบดังกล่าวส่วนใหญ่มักไม่มีประสิทธิภาพและบันทึกกิจกรรมที่ไม่สำคัญอย่างไม่ถูกต้อง
- สำหรับการทดสอบเว็บไซต์ GUI คือเบราว์เซอร์ และการโต้ตอบจะเกิดขึ้นผ่านเหตุการณ์ DOMและHTMLโดยปกติจะใช้เบราว์เซอร์แบบไร้ส่วนหัวหรือโซลูชันที่ใช้Selenium Web Driver เพื่อจุดประสงค์นี้ [ 3 ]
การทดสอบการถดถอย
เมื่อมีการนำระบบทดสอบอัตโนมัติมาใช้การทดสอบการถดถอย (regression testing)สามารถทำได้อย่างรวดเร็วและง่ายดาย แทนที่จะต้องใช้เวลาและความพยายามของมนุษย์จำนวนมาก การทดสอบการถดถอยอาจทำได้เพียงแค่กดปุ่ม และแม้แต่การเริ่มต้นการทดสอบก็สามารถทำได้โดยอัตโนมัติ
เทคนิคอัตโนมัติ
ต่อไปนี้คือเทคนิคการทดสอบที่สำคัญซึ่งจัดอยู่ในหมวดหมู่การทดสอบอัตโนมัติ
การทดสอบอย่างต่อเนื่อง
การทดสอบอย่างต่อเนื่องคือกระบวนการดำเนินการทดสอบอัตโนมัติซึ่งเป็นส่วนหนึ่งของกระบวนการส่งมอบซอฟต์แวร์เพื่อประเมินความเสี่ยงทางธุรกิจของการปล่อย SUT [ 4 ] [ 5 ]ขอบเขตของการทดสอบขยายจากการตรวจสอบความถูกต้องของข้อกำหนดจากล่างขึ้นบนหรือเรื่องราวของผู้ใช้ไปจนถึงการประเมินข้อกำหนดของระบบที่เกี่ยวข้องกับเป้าหมายทางธุรกิจโดยรวม[ 6 ]
การทดสอบตามแบบจำลอง
สำหรับการทดสอบตามแบบจำลอง SUT จะถูกสร้างแบบจำลองและสามารถสร้างกรณีทดสอบจากแบบจำลองนั้นเพื่อรองรับ การพัฒนาการทดสอบ แบบไม่ต้องเขียนโค้ด เครื่องมือบางอย่างรองรับการเข้ารหัสกรณีทดสอบเป็นภาษาอังกฤษธรรมดาที่สามารถใช้งานได้บน ระบบปฏิบัติการเบราว์เซอร์และอุปกรณ์อัจฉริยะหลายประเภท[ 7 ]
การพัฒนาแบบทดสอบนำ
การพัฒนาแบบทดสอบนำ (TDD) โดยเนื้อแท้แล้วรวมถึงการสร้างโค้ดทดสอบอัตโนมัติ โค้ด ทดสอบหน่วยจะถูกเขียนขึ้นในขณะที่เขียนโค้ด SUT เมื่อโค้ดเสร็จสมบูรณ์ การทดสอบก็จะเสร็จสมบูรณ์เช่นกัน[ 8 ]
อื่น
เทคนิคการทดสอบอัตโนมัติอื่นๆ ได้แก่:
- การทดสอบที่ขับเคลื่อนด้วยข้อมูล
- การทดสอบที่ขับเคลื่อนด้วยโมดูลาร์
- การทดสอบที่ขับเคลื่อนด้วยคีย์เวิร์ด
- การพัฒนาที่ขับเคลื่อนด้วยพฤติกรรม
ข้อควรพิจารณา
จากการตรวจสอบแหล่งข้อมูลจากผู้ปฏิบัติงาน 52 รายและแหล่งข้อมูลทางวิชาการ 26 ราย พบว่าปัจจัยหลัก 5 ประการที่ควรพิจารณาในการตัดสินใจเกี่ยวกับการทดสอบอัตโนมัติ ได้แก่ ระบบที่กำลังทดสอบ (SUT) ขอบเขตของการทดสอบ ชุดเครื่องมือทดสอบ ประเด็นเกี่ยวกับมนุษย์และองค์กร และปัจจัยข้ามสาขา ปัจจัยที่ถูกระบุบ่อยที่สุด ได้แก่ ความต้องการการทดสอบการถดถอย ปัจจัยทางเศรษฐกิจ และความสมบูรณ์ของ SUT [ 9 ] [ 10 ]
แม้ว่าการนำการทดสอบอัตโนมัติกลับมาใช้ซ้ำได้จะเป็นประโยชน์ต่อบริษัทพัฒนาซอฟต์แวร์ แต่คุณสมบัตินี้ก็อาจถูกมองว่าเป็นข้อเสียได้เช่นกัน เพราะมันนำไปสู่ภาวะชะงักงันกล่าวคือ การรันการทดสอบเดิมซ้ำๆ จะไม่สามารถตรวจจับข้อผิดพลาดได้อีกต่อไป
เครื่องมือทดสอบสามารถช่วยในการทำงานอัตโนมัติ เช่น การติดตั้งผลิตภัณฑ์ การสร้างข้อมูลทดสอบ การโต้ตอบกับ GUI การตรวจจับปัญหา (ลองพิจารณาการใช้เอเจนต์วิเคราะห์หรือสำรวจข้อมูลที่มีออราเคิลทดสอบ ) การบันทึกข้อบกพร่อง ฯลฯ โดยไม่จำเป็นต้องทำการทดสอบแบบอัตโนมัติครบวงจร
ข้อควรพิจารณาในการพัฒนาการทดสอบอัตโนมัติ ได้แก่:
- ความเป็นอิสระของแพลตฟอร์มและระบบปฏิบัติการ
- การทดสอบที่ขับเคลื่อนด้วยข้อมูล
- การรายงาน ( ฐานข้อมูล , คริสตัลรีพอร์ต )
- ความง่ายในการแก้ไขข้อผิดพลาด
- การบันทึกข้อมูล
- การควบคุมเวอร์ชัน
- การขยายและการปรับแต่ง (เช่นAPIสำหรับการผสานรวมกับเครื่องมืออื่นๆ)
- การบูรณาการกับเครื่องมือสำหรับนักพัฒนา (เช่น การใช้AntหรือMavenสำหรับ การพัฒนา Java )
- การทดสอบแบบอัตโนมัติเพื่อการบูรณาการกับกระบวนการสร้างและการประมวลผลแบบกลุ่ม
- การแจ้งเตือนทางอีเมล (เช่นข้อความส่งไม่ถึง )
- การดำเนินการทดสอบแบบกระจาย
บทบาท
เพื่อสนับสนุนการทดสอบอัตโนมัติด้วยโค้ดวิศวกรทดสอบหรือ ผู้รับผิดชอบ ด้านการประกันคุณภาพซอฟต์แวร์ต้องมีความสามารถในการเขียนโค้ดซอฟต์แวร์ เทคนิคการทดสอบบางอย่าง เช่น การทดสอบด้วยตารางและการทดสอบแบบไม่ต้องเขียนโค้ด สามารถลดหรือบรรเทาความจำเป็นในการใช้ทักษะการเขียนโปรแกรมได้
กรอบ
เฟรมเวิร์กสำหรับการทดสอบอัตโนมัติเป็นสภาพแวดล้อมการเขียนโปรแกรมที่ผสานรวมตรรกะการทดสอบ ข้อมูลการทดสอบ และทรัพยากรอื่นๆ เฟรมเวิร์กนี้เป็นพื้นฐานของการทดสอบอัตโนมัติและช่วยลดความซับซ้อนของกระบวนการอัตโนมัติ การใช้เฟรมเวิร์กสามารถลดต้นทุนในการพัฒนาและบำรุงรักษาการ ทดสอบ ได้ หากมีการเปลี่ยนแปลงใดๆ ในกรณีทดสอบก็เพียงแค่ต้องอัปเดตไฟล์กรณีทดสอบเท่านั้น ส่วนสคริปต์หลักและสคริปต์เริ่มต้นจะยังคงเหมือนเดิม
เฟรมเวิร์กมีหน้าที่ในการกำหนดรูปแบบในการแสดงความคาดหวัง จัดเตรียมกลไกในการเชื่อมต่อหรือขับเคลื่อน SUT ดำเนินการทดสอบ และรายงานผลลัพธ์[ 11 ]
มีเฟรมเวิร์กหลายประเภทให้เลือกใช้:
- เชิงเส้น – โค้ดเชิงกระบวนการ ซึ่งอาจสร้างขึ้นโดยเครื่องมือต่างๆ เช่น เครื่องมือที่ใช้ฟังก์ชันบันทึกและเล่นซ้ำ
- มีโครงสร้าง – ใช้โครงสร้างควบคุม – โดยทั่วไปคือเงื่อนไข/คำสั่ง 'if-else', 'switch', 'for', 'while'
- ขับเคลื่อนด้วยข้อมูล – ข้อมูลจะถูกจัดเก็บไว้ภายนอกการทดสอบในฐานข้อมูล สเปรดชีต หรือกลไกอื่นๆ
- ขับเคลื่อนด้วยคีย์เวิร์ด
- ไฮบริด – ใช้หลายประเภท
- กรอบการทำงานอัตโนมัติแบบ Agile
- การทดสอบหน่วย – เฟรมเวิร์กบางตัวถูกออกแบบมาเพื่อการทดสอบหน่วย โดยเฉพาะ เช่นxUnit , JUnitและNUnit
อินเทอร์เฟซการทดสอบอัตโนมัติ
อินเทอร์เฟซการทดสอบอัตโนมัติเป็นแพลตฟอร์มที่ให้พื้นที่ทำงานสำหรับการรวมเครื่องมือและเฟรมเวิร์กการทดสอบหลายรายการสำหรับการทดสอบระบบ/การบูรณาการ อินเทอร์เฟซการทดสอบอัตโนมัติอาจช่วยลดความซับซ้อนของกระบวนการแมปการทดสอบกับเกณฑ์ทางธุรกิจโดยไม่ต้องเขียนโค้ด อินเทอร์เฟซการทดสอบอัตโนมัติอาจปรับปรุงประสิทธิภาพและความยืดหยุ่นในการบำรุงรักษาการทดสอบ[ 12 ]

อินเทอร์เฟซการทดสอบอัตโนมัติประกอบด้วยองค์ประกอบดังต่อไปนี้:
- เอ็นจิ้นอินเทอร์เฟซ
- ประกอบด้วยตัวแยกวิเคราะห์และตัวรันการทดสอบ ตัวแยกวิเคราะห์มีหน้าที่แยกวิเคราะห์ไฟล์วัตถุที่มาจากที่เก็บวัตถุให้เป็นภาษาสคริปต์เฉพาะการทดสอบ ตัวรันการทดสอบจะดำเนินการสคริปต์การทดสอบโดยใช้ชุดทดสอบ[ 12 ]
- ที่เก็บวัตถุ
- การรวบรวมข้อมูลวัตถุ UI/แอปพลิเคชันที่บันทึกโดยเครื่องมือทดสอบขณะสำรวจ SUT [ 12 ]
ดูเพิ่มเติม
- การเปรียบเทียบเครื่องมือทดสอบ GUI
- รายชื่อเครื่องมือทดสอบเว็บไซต์
- ฟัซซิ่ง – เทคนิคการทดสอบซอฟต์แวร์อัตโนมัติ
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การทดสอบอัตโนมัติ
การทดสอบอัตโนมัติ คือการใช้ ซอฟต์แวร์ (แยกต่างหากจากซอฟต์แวร์ที่กำลังทดสอบ) เพื่อควบคุมการดำเนินการทดสอบและเปรียบเทียบผลลัพธ์จริงกับผลลัพธ์ที่คาดการณ์ไว้ [ 1 ]...
เมื่อเปรียบเทียบกับการทดสอบด้วยตนเอง
การทดสอบด้วยระบบอัตโนมัติมีข้อดีหลายประการเหนือกว่าการทดสอบด้วยตนเอง
การทดสอบ API
สำหรับ การทดสอบ API นั้น การทดสอบจะควบคุมระบบที่กำลังทดสอบ (SUT) ผ่านทาง อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) เมื่อเทียบกับการทดสอบด้วยตนเอง การทดสอบ API แบบอัตโนมัติมักสามารถดำเนินการทดสอบได้จำนวนมากในเวลาอันสั้น
การทดสอบ GUI
สำหรับ การทดสอบ GUI นั้น การทดสอบจะควบคุมระบบที่กำลังทดสอบ (SUT) ผ่านทาง ส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) โดยการสร้างเหตุการณ์ต่างๆ เช่น การกดแป้นพิมพ์และการคลิกเมาส์ การทดสอบ GUI แบบอัตโนมัติอาจเป็นเรื่องท้าทายในการพัฒนา...