ฉันแค่ต้องการเพิ่มและให้บริบทเพิ่มเติมเกี่ยวกับสาเหตุที่เรามีระดับการทดสอบเหล่านี้สิ่งที่พวกเขาหมายถึงตัวอย่างจริงๆ
ไมค์โคห์นในหนังสือของเขา“ ประสบความสำเร็จด้วยความคล่องตัว” มาพร้อมกับ“ การทดสอบพีระมิด” เป็นวิธีการทดสอบอัตโนมัติในโครงการ มีการตีความต่าง ๆ ของรุ่นนี้ แบบจำลองนี้อธิบายถึงชนิดของการทดสอบอัตโนมัติที่จำเป็นต้องสร้างความรวดเร็วในการให้ข้อเสนอแนะเกี่ยวกับแอปพลิเคชันภายใต้การทดสอบและผู้ที่เขียนการทดสอบเหล่านี้ มีการทดสอบอัตโนมัติ 3 ระดับที่จำเป็นสำหรับโครงการใด ๆ และมีดังนี้
การทดสอบหน่วย - การทดสอบ
เหล่านี้เป็นส่วนประกอบที่เล็กที่สุดของแอปพลิเคชันซอฟต์แวร์ของคุณ นี่อาจเป็นฟังก์ชันหนึ่งในโค้ดที่คำนวณค่าตามอินพุตบางตัว ฟังก์ชั่นนี้เป็นส่วนหนึ่งของฟังก์ชั่นอื่น ๆ ของรหัสฐานฮาร์ดแวร์ / ซอฟต์แวร์ที่ประกอบขึ้นเป็นแอปพลิเคชัน
ตัวอย่างเช่น - ลองใช้แอปพลิเคชันเครื่องคิดเลขทางเว็บ ส่วนประกอบที่เล็กที่สุดของแอปพลิเคชั่นนี้ที่จำเป็นต้องมีการทดสอบหน่วยอาจเป็นฟังก์ชั่นที่ดำเนินการเพิ่มเติมส่วนอื่นที่ทำการลบและอื่น ๆ ฟังก์ชั่นขนาดเล็กทั้งหมดเหล่านี้ประกอบกันเป็นแอพพลิเคชั่นเครื่องคิดเลข
นักพัฒนาในอดีตเขียนการทดสอบเหล่านี้โดยปกติแล้วพวกเขาจะเขียนในภาษาโปรแกรมเดียวกับแอปพลิเคชันซอฟต์แวร์ กรอบการทดสอบหน่วยเช่น JUnit และ NUnit (สำหรับ java), MSTest (สำหรับ C # และ. NET) และ Jasmine / Mocha (สำหรับ JavaScript) ใช้สำหรับวัตถุประสงค์นี้
ข้อได้เปรียบที่ใหญ่ที่สุดของการทดสอบหน่วยคือพวกเขาทำงานได้อย่างรวดเร็วภายใต้ UI และเราสามารถรับข้อเสนอแนะอย่างรวดเร็วเกี่ยวกับแอปพลิเคชัน สิ่งนี้ควรประกอบด้วยมากกว่า 50% ของการทดสอบอัตโนมัติของคุณ
API / Integration Tests -
เป็นการทดสอบส่วนประกอบต่าง ๆ ของระบบซอฟต์แวร์ด้วยกัน ส่วนประกอบอาจรวมถึงฐานข้อมูลการทดสอบ API ของ (Application Programming Interface) เครื่องมือของบุคคลที่สามและบริการพร้อมกับแอปพลิเคชัน
ตัวอย่างเช่น - ในตัวอย่างเครื่องคิดเลขของเราด้านบนเว็บแอปพลิเคชันอาจใช้ฐานข้อมูลเพื่อเก็บค่าใช้ API เพื่อทำการตรวจสอบด้านเซิร์ฟเวอร์และอาจใช้เครื่องมือ / บริการของบุคคลที่สามเพื่อเผยแพร่ผลลัพธ์ไปยังระบบคลาวด์ แพลตฟอร์ม
ในอดีตนักพัฒนาซอฟต์แวร์หรือ QA ทางเทคนิคจะเขียนการทดสอบเหล่านี้โดยใช้เครื่องมือต่าง ๆ เช่นบุรุษไปรษณีย์, SoapUI, JMeter และเครื่องมืออื่น ๆ เช่น Testim
สิ่งเหล่านี้ทำงานได้เร็วกว่าการทดสอบ UI เนื่องจากยังคงทำงานภายใต้ประทุน แต่อาจใช้เวลานานกว่าการทดสอบหน่วยเล็กน้อยเนื่องจากต้องตรวจสอบการสื่อสารระหว่างส่วนประกอบอิสระต่าง ๆ ของระบบและตรวจสอบให้แน่ใจว่ามีการรวมที่ราบรื่น ซึ่งควรประกอบด้วยมากกว่า 30% ของการทดสอบอัตโนมัติ
การทดสอบ UI -
ในที่สุดเรามีการทดสอบที่ตรวจสอบความถูกต้องของ UI ของแอปพลิเคชัน การทดสอบเหล่านี้มักจะเขียนขึ้นเพื่อทดสอบการจบสิ้นการไหลผ่านแอพลิเคชัน
ตัวอย่างเช่น - ในแอปพลิเคชั่นเครื่องคิดเลขการไหลแบบเอนด์เอนด์อาจเป็นการเปิดเบราว์เซอร์ -> การป้อน URL แอปพลิเคชันเครื่องคิดเลข -> การลงชื่อเข้าใช้ด้วยชื่อผู้ใช้ / รหัสผ่าน -> การเปิดแอปพลิเคชันเครื่องคิดเลข -> ตรวจสอบผลลัพธ์เหล่านั้นจาก UI -> การออกจากระบบของแอปพลิเคชัน นี่อาจเป็นหนึ่งในการจบโฟลว์ที่จะเป็นตัวเลือกที่ดีสำหรับ UI ระบบอัตโนมัติ
ประวัติศาสตร์ QA ทางเทคนิคหรือทดสอบด้วยตนเองเขียนทดสอบ UI พวกเขาใช้เฟรมเวิร์กโอเพ่นซอร์สเช่นซีลีเนียมหรือแพลตฟอร์มการทดสอบ UI เช่น Testim เพื่อสร้างรันและบำรุงรักษาการทดสอบ การทดสอบเหล่านี้ให้ข้อเสนอแนะทางสายตามากขึ้นในขณะที่คุณสามารถดูว่าการทดสอบทำงานอย่างไรความแตกต่างระหว่างผลลัพธ์ที่คาดหวังและที่เกิดขึ้นจริงผ่านภาพหน้าจอบันทึกรายงานการทดสอบ
ข้อ จำกัด ที่ใหญ่ที่สุดของการทดสอบ UI คือพวกเขาค่อนข้างช้าเมื่อเทียบกับการทดสอบระดับหน่วยและ API ดังนั้นควรมีเพียง 10-20% ของการทดสอบอัตโนมัติทั้งหมด
การทดสอบสองประเภทถัดไปอาจแตกต่างกันไปขึ้นอยู่กับโครงการของคุณ แต่ความคิดคือ -
การทดสอบควัน
นี่อาจเป็นการรวมกันของการทดสอบ 3 ระดับข้างต้น แนวคิดคือการเรียกใช้ในระหว่างการตรวจสอบรหัสทุกครั้งและให้ฟังก์ชันการทำงานที่สำคัญของระบบยังคงทำงานตามที่คาดไว้ หลังจากการเปลี่ยนแปลงรหัสใหม่ถูกผสาน โดยทั่วไปแล้วพวกเขาต้องทำงานด้วย 5 - 10 นาทีเพื่อรับข้อเสนอแนะที่เร็วขึ้นเกี่ยวกับความล้มเหลว
การทดสอบการถดถอย
พวกเขามักจะทำงานวันละครั้งอย่างน้อยและครอบคลุมฟังก์ชั่นต่างๆของระบบ พวกเขามั่นใจว่าแอปพลิเคชันยังคงทำงานตามที่คาดไว้ พวกเขามีรายละเอียดมากกว่าการทดสอบควันและครอบคลุมสถานการณ์เพิ่มเติมของแอปพลิเคชันรวมถึงสิ่งที่ไม่สำคัญ