คำแนะนำสั้น ๆ เกี่ยวกับการทดสอบการถดถอย: เมื่อใดควรทำ
เผยแพร่แล้ว: 2023-05-23สารบัญ
การทดสอบการถดถอย: เหตุใดจึงจำเป็นสำหรับซอฟต์แวร์ของคุณ
ในขณะที่โลกของการพัฒนาซอฟต์แวร์เปลี่ยนแปลงตลอดเวลา เทคโนโลยีใหม่ๆ ก็เกิดขึ้นอย่างต่อเนื่อง และเทคโนโลยีที่จัดตั้งขึ้นในรูปแบบต่างๆ ซึ่งหมายความว่า หลายๆ ส่วนของแอปพลิเคชันของคุณที่ปกติแล้วอาจใช้งานไม่ได้เนื่องจากการเปลี่ยนแปลงเล็กน้อย ปรากฏการณ์นี้เรียกว่าการถดถอย ซึ่งอธิบายถึงการนำข้อบกพร่องกลับเข้ามาในซอฟต์แวร์หลังจากมีการเปลี่ยนแปลง—ไม่ว่าจะโดยไม่ได้ตั้งใจหรือผ่านการตัดสินใจอย่างมีสติในการแนะนำฟังก์ชันใหม่
ด้วยเหตุนี้ การทดสอบการถดถอยจึงเป็นหนึ่งในปัจจัยขับเคลื่อนที่อยู่เบื้องหลังความสำเร็จหรือความล้มเหลวของโครงการพัฒนาซอฟต์แวร์ เนื่องจากช่วยให้มั่นใจได้ว่าซอฟต์แวร์ของคุณจะทำงานตามที่ออกแบบไว้ โดยไม่คำนึงถึงการเปลี่ยนแปลงที่คุณทำไว้ ในบทความนี้ เราจะเรียนรู้พื้นฐานของการทดสอบประเภทนี้ร่วมกับทีม SE Ranking ซึ่งเป็นผู้พัฒนาแพลตฟอร์ม SaaS SEO และใช้การทดสอบการถดถอยเป็นส่วนหนึ่งของขั้นตอนการพัฒนา
การทดสอบการถดถอยคืออะไร?
- การทดสอบการถดถอยเป็นวิธีการตรวจสอบว่าชิ้นส่วนใหม่และส่วนที่แก้ไขของระบบซอฟต์แวร์ยังคงทำงานตามที่คาดไว้หรือไม่หลังจากมีการเปลี่ยนแปลง
ทำการทดสอบการถดถอยเพื่อตรวจสอบข้อบกพร่องและดูว่าการเปลี่ยนแปลงล่าสุดทำให้รหัสที่มีอยู่เสียหายหรือไม่ การทดสอบควรทำในลักษณะเดียวกับการทดสอบพื้นฐานก่อนหน้า จุดประสงค์ของการทดสอบการถดถอยคือเพื่อให้แน่ใจว่าพฤติกรรมส่วนที่เหลือของซอฟต์แวร์จะไม่ได้รับผลกระทบในขณะที่โค้ดกำลังถูกแก้ไข
- ตัวอย่างเช่น หากคุณลักษณะที่อนุญาตให้ผู้ใช้เข้าสู่ระบบมีการเปลี่ยนแปลง คุณจะต้องทำการทดสอบที่คำนึงถึงผลลัพธ์ที่เป็นไปได้ทั้งหมดของการเข้าสู่ระบบในฐานะผู้ใช้รายอื่น: ด้วยรหัสผ่านที่ไม่ถูกต้องและรหัสผ่านที่ถูกต้อง
การทดสอบการถดถอยทำงานอย่างไร
กลไกการทำงานของการทดสอบการถดถอยประกอบด้วยเทคนิคหลายอย่างที่สามารถใช้ในระหว่างการทดสอบซอฟต์แวร์เพื่อให้แน่ใจว่าการเปลี่ยนแปลงใหม่ในโปรแกรมหรือผลิตภัณฑ์ซอฟต์แวร์จะไม่เปลี่ยนแปลงการทำงานของโปรแกรมที่มีอยู่:
- ทดสอบซอฟต์แวร์ทั้งหมดอีกครั้ง
การทดสอบซอฟต์แวร์ทั้งหมดหลังจากแก้ไขส่วนประกอบหนึ่งหรือหลายส่วนเป็นหนึ่งในเทคนิคของการทดสอบการถดถอย สิ่งนี้ทำเพื่อให้แน่ใจว่าส่วนที่แก้ไขของซอฟต์แวร์ทำงานได้อย่างถูกต้องกับส่วนที่ไม่เปลี่ยนแปลง
ด้วยการกำเนิดของแนวทางการพัฒนาซอฟต์แวร์แบบ Agile การทดสอบการถดถอยได้พัฒนาจากกิจกรรมแบบแมนนวลอย่างเคร่งครัดไปสู่กิจกรรมที่มีเครื่องมืออัตโนมัติและแนวทางที่มีโครงสร้าง เป็นแนวทางที่ต้องใช้เครื่องมือทดสอบอัตโนมัติหรือสนับสนุนกิจกรรมการทดสอบการถดถอยของผู้ทดสอบด้วยตนเองด้วยตรรกะของแอปพลิเคชัน
เนื่องจาก SE Ranking ทำงานโดยวิธี Scrum และพยายามปรับเปลี่ยนและเพิ่มฟีเจอร์และฟังก์ชันใหม่ๆ ให้กับแพลตฟอร์มอย่างต่อเนื่อง พวกเขาจึงคุ้นเคยกับเทคนิคการทดสอบการถดถอยที่กล่าวถึงข้างต้นไม่เหมือนใคร การใช้งานช่วยให้มั่นใจได้ว่าซอฟต์แวร์ทั้งหมดทำงานได้อย่างถูกต้องหลังจากเพิ่มคุณสมบัติใหม่ และจะไม่เปลี่ยนแปลงการทำงานของซอฟต์แวร์ที่เหลือ
- การเลือกการทดสอบการถดถอย
การเลือกการทดสอบการถดถอยเป็นเทคนิคที่เลือกกรณีทดสอบที่ใกล้เคียงกับค่าเฉลี่ยมากที่สุด ต้องใช้เวลาและความพยายามน้อยลงเนื่องจากไม่ได้พิจารณาการทดสอบที่มีอยู่ทั้งหมด แต่เฉพาะการทดสอบที่ให้มูลค่าสูงสำหรับค่าใช้จ่าย
ลองอธิบายแนวคิดนี้ด้วยตัวอย่าง:
ลองนึกภาพคุณมีโปรแกรม 1,000 บรรทัดที่คุณต้องการทดสอบ และคุณไม่มีงบประมาณ (หรือเวลา) ในการจ้างบริษัททดสอบ คุณอาจจะเขียนแบบทดสอบสามชุดด้วยตัวคุณเองและเขียนโค้ดลงในชุดทดสอบการถดถอยของคุณ จากนั้น คุณอาจหาคนอีกสองคนมาทำการทดสอบกับคุณด้วย ซึ่งรวมการทดสอบทั้งหมดได้สูงสุด 5 รายการ นี่คือจุดเริ่มต้นของการเลือกการทดสอบการถดถอย การต่อสู้กับทรัพยากรที่มีอยู่อย่างจำกัดและช่วยเพิ่มปริมาณความครอบคลุมสูงสุดในแต่ละการทดสอบผ่านการตัดสินใจที่ชาญฉลาดและเลือกสรรว่าการทดสอบใดจะดำเนินการ
- การจัดลำดับความสำคัญของการทดสอบการถดถอย
การจัดลำดับความสำคัญของการทดสอบการถดถอยเป็นกระบวนการที่การทดสอบซอฟต์แวร์กำหนดลำดับในการดำเนินการกรณีทดสอบเพื่อลดข้อบกพร่องของซอฟต์แวร์ โดยคำนึงถึงความรุนแรงของข้อบกพร่องแต่ละข้อและคุณลักษณะที่สำคัญที่สุดของระบบ ซึ่งจะช่วยในการพิจารณาว่าควรเรียกใช้สถานการณ์ทดสอบใดก่อนและหลัง
เนื่องจากทีม SE Ranking ทำการทดสอบการถดถอยเดือนละสองครั้ง พวกเขาจึงทบทวนลำดับความสำคัญตลอดเวลา ตัวอย่างเช่น ส่วนที่มีการดัดแปลงและคุณสมบัติใหม่มากที่สุด หรือได้รับการประเมินว่ามีข้อบกพร่องมากที่สุด จะมีความสำคัญสูงสุด ในขณะเดียวกัน ส่วนที่ไม่มีการเปลี่ยนแปลงและไม่เกี่ยวข้องกับส่วนที่มีการเปลี่ยนแปลงจะถือว่ามีลำดับความสำคัญต่ำ
ที่มา: Jelvix
เราจะทำการทดสอบการถดถอยได้เมื่อใด
- เมื่อมีการเพิ่มฟังก์ชันใหม่ลงในแอปพลิเคชัน
เมื่อคุณเพิ่มฟังก์ชันการทำงานใหม่ให้กับโปรแกรมที่มีอยู่ มักจะรบกวนคุณสมบัติการทำงานก่อนหน้านี้และนำไปสู่ความล้มเหลวในประสิทธิภาพต่อไป แม้ว่าโค้ดจะเขียนได้อย่างสมบูรณ์ก็ตาม ด้วยเหตุนี้ การดำเนินการทดสอบการถดถอยจึงมีความสำคัญเพื่อตรวจสอบว่าการปรับเปลี่ยนหรือการปรับปรุงในส่วนใดส่วนหนึ่งของแอปพลิเคชันไม่ส่งผลเสียต่อส่วนอื่น เมื่อทีม SE Ranking เพิ่มรูปแบบไฟล์ใหม่ในฟังก์ชันการส่งออก พวกเขาทำการทดสอบการถดถอยของคุณสมบัติทั้งหมดที่เกี่ยวข้องกับการส่งออก
- เมื่อแก้ไขข้อบกพร่องแล้ว
เราสามารถทำการทดสอบการถดถอยได้เมื่อแก้ไขข้อบกพร่องแล้ว การทดสอบการถดถอยช่วยยืนยันว่าซอฟต์แวร์ (หรือเว็บไซต์) ยังคงทำงานตามที่คาดไว้หลังจากที่เราแก้ไขจุดบกพร่อง จำเป็นต้องทดสอบการเปลี่ยนแปลงโค้ดเพื่อดูว่ามีผลกระทบต่อโมดูลอื่นๆ หรือไม่ และทุกอย่างทำงานตามที่คาดไว้หรือไม่
- เมื่อมีการแก้ไขปัญหาด้านประสิทธิภาพ
การทดสอบการถดถอยมักจะทำเพื่อให้แน่ใจว่าเป็นไปตามมาตรฐานคุณภาพและยืนยันประสิทธิภาพหลังการแก้ไข กล่าวอีกนัยหนึ่ง เป็นกระบวนการที่เราสามารถรับประกันได้ว่าประสิทธิภาพและฟังก์ชันการทำงานของโมดูลโค้ดรุ่นเก่าตรงหรือเกินกว่าข้อกำหนดที่กำหนดไว้ในเวอร์ชันโค้ดที่ใหม่กว่า การทดสอบการถดถอยมีวัตถุประสงค์เพื่อยืนยันว่าการแก้ไขในซอฟต์แวร์ไม่ได้ทำให้เกิดข้อบกพร่องหรือข้อผิดพลาดใหม่
- เมื่อมีการเปลี่ยนแปลงสิ่งแวดล้อม
การทดสอบการถดถอยเป็นไปตามและยืนยันว่าการทดสอบหน่วยที่ประสบความสำเร็จ การทดสอบการรวมระบบ และการทดสอบระบบ และจะดำเนินการเมื่อมีการเปลี่ยนแปลงสภาพแวดล้อม การเปลี่ยนแปลงด้านสิ่งแวดล้อมที่อาจทำให้เกิดการทดสอบการถดถอย ได้แก่ การอัปเกรดฮาร์ดแวร์ เวอร์ชันซอฟต์แวร์ใหม่ และข้อจำกัดด้านทรัพยากร เช่น หน่วยความจำ พื้นที่ดิสก์ และความเร็วของโปรเซสเซอร์ เมื่อมีการอัปเดตเฟรมเวิร์กที่ทีมพัฒนา SE Ranking ทำงานตามปกติแล้ว ยังได้ดำเนินการทดสอบการถดถอยเพื่อให้แน่ใจว่าทุกอย่างทำงานได้ไม่แย่ไปกว่าเดิม
ความแตกต่างระหว่างการทดสอบซ้ำและการทดสอบการถดถอย
นักพัฒนาจะส่งโค้ดที่ปราศจากข้อผิดพลาดและถูกต้องก็ต่อเมื่อกระบวนการทดสอบนี้ทำอย่างถูกต้องเท่านั้น การทดสอบซ้ำและการทดสอบการถดถอยเป็นวิธีและแนวทางการทดสอบที่แตกต่างกันสองวิธี ทั้งคู่ใช้สำหรับตรวจสอบความถูกต้องของแอปพลิเคชันซอฟต์แวร์ อย่างไรก็ตาม เป้าหมายหลักของพวกเขาคือสิ่งอื่น
คำว่า การทดสอบซ้ำ หมายถึงการทดสอบการทำงานหรือจุดบกพร่องอีกครั้งเพื่อให้แน่ใจว่าโค้ดได้รับการแก้ไขแล้ว ในทางตรงกันข้าม การทดสอบการถดถอยหมายถึงการทดสอบคุณลักษณะที่สร้างขึ้นใหม่ด้วยตัวแปรเพิ่มเติมเพื่อให้แน่ใจว่าการเปลี่ยนแปลงนั้นไม่ก่อให้เกิดผลเสียที่ไม่คาดคิดต่อฟังก์ชันการทำงานที่มีอยู่
ที่มา: Utor
นอกจากนี้ ความแตกต่างอย่างมากระหว่างการทดสอบการถดถอยและการทดสอบซ้ำคือเวลาที่ต้องใช้ในการดำเนินการแต่ละครั้ง ในขณะที่สามารถเรียกใช้การทดสอบซ้ำได้ทันทีหลังจากแก้ไขข้อบกพร่องแล้ว การทดสอบการถดถอยจะใช้เวลาหลายวันจึงจะเสร็จสมบูรณ์ เนื่องจากเป็นการตรวจสอบกรณีทดสอบที่มีอยู่ทั้งหมดอีกครั้งเพื่อระบุว่ามีข้อบกพร่องใหม่หรือไม่ หากการทดสอบการถดถอยล้มเหลว การทดสอบซ้ำจะมีความจำเป็น เนื่องจากนี่หมายความว่ามีข้อบกพร่องอยู่ในโครงสร้างใหม่
จะทำการทดสอบการถดถอยได้อย่างไร
ที่มา: ซิมฟอร์ม
- เตรียมพร้อมสำหรับการทดสอบแบบแมนนวลและแบบอัตโนมัติ
การรวบรวมข้อกำหนดของซอฟต์แวร์และฮาร์ดแวร์ การตั้งค่าเครื่องมือและการสนับสนุนที่เหมาะสม และการเรียนรู้วิธีใช้อย่างมีประสิทธิภาพจะช่วยให้ความพยายามของคุณมีประสิทธิผล ข้อมูลการทดสอบและสภาพแวดล้อมอาจต้องมีการเตรียมการก่อนดำเนินการทดสอบของคุณ
การทดสอบการถดถอยแบบแมนนวลจะดำเนินการกับผลิตภัณฑ์ด้วยตนเองเพื่อให้แน่ใจว่าคุณลักษณะ ฟังก์ชัน หรือแง่มุมบางอย่างของผลิตภัณฑ์ทำงานและถูกต้องหลังจากใช้การเปลี่ยนแปลงแล้ว การทดสอบด้วยตนเองอาจใช้เวลานาน เนื่องจากคุณจะต้องทำงานเดิมซ้ำๆ ทุกครั้งที่มีรายงานข้อบกพร่อง นอกจากนี้ยังต้องใช้ทรัพยากรจำนวนมากเพื่อให้เสร็จสมบูรณ์
การทดสอบอัตโนมัติสามารถลดจำนวนทรัพยากรที่จำเป็น และช่วยให้คุณทดสอบและตรวจสอบความถูกต้องของแอปพลิเคชันได้ดีขึ้นและเร็วขึ้น การทดสอบอัตโนมัติดำเนินการโดยเครื่องมือ/เฟรมเวิร์กการทดสอบ และสามารถรวมเข้ากับไปป์ไลน์การจัดส่งอย่างต่อเนื่อง การทดสอบการถดถอยด้วยตนเองเป็นแนวคิดที่ดีกว่าสำหรับกรณีทดสอบจำนวนน้อย ในขณะที่การทดสอบการถดถอยแบบอัตโนมัติจะทำงานได้ดีขึ้นหากคุณมีกรณีทดสอบจำนวนมากที่ต้องจัดการ
- ตรวจหาการเปลี่ยนแปลงในซอร์สโค้ด
เมื่อทำการเปลี่ยนแปลงโค้ดประเภทใดก็ตามหรืออัปเกรดส่วนหนึ่งของแอปพลิเคชันของคุณ นักพัฒนาจะใช้เวลาเป็นจำนวนมากในการทดสอบซอร์สโค้ดที่กำลังแก้ไข ความยากลำบากคือการหาวิธีระบุอย่างเจาะจงว่าพื้นที่ใดจะได้รับผลกระทบจากการเปลี่ยนแปลงเพื่อมุ่งเน้นความพยายามในการทดสอบของคุณ แต่นั่นคือสิ่งที่ต้องทำจริงๆ!
มิฉะนั้น คุณอาจใช้เวลาและความพยายามอย่างมากเพียงเพื่อจะพบว่าการเปลี่ยนแปลงไม่ส่งผลกระทบต่อส่วนที่ทดสอบของระบบของคุณ สิ่งนี้เรียกว่าการทดสอบแบบ "นอกใน" และสามารถช่วยประหยัดเวลาและเงินได้เนื่องจากคุณจะสามารถระบุปัญหาได้ดีขึ้น
- จัดลำดับความสำคัญของการเปลี่ยนแปลงเหล่านั้นและข้อกำหนดของผลิตภัณฑ์
การกำหนดข้อกำหนดของผลิตภัณฑ์และการปรับเปลี่ยนเว็บไซต์เป็นขั้นตอนสำคัญในกระบวนการทดสอบซอฟต์แวร์ อย่างไรก็ตาม หากไม่จัดลำดับความสำคัญของการเปลี่ยนแปลงเหล่านี้ คุณอาจพบว่าจำเป็นต้องทดสอบส่วนต่างๆ ของเว็บไซต์ซ้ำๆ การดำเนินการนี้อาจทำให้คุณหมดเวลา (และเงิน) ก่อนที่จะเสร็จสิ้นรอบการทดสอบทั้งหมด หรือส่งผลให้รอบการทดสอบอ่อนแอลงเนื่องจากมีการโฟกัสที่จำกัดในแต่ละกรณีการทดสอบ
การปรับเปลี่ยนและข้อกำหนดของผลิตภัณฑ์ได้รับการระบุไว้หลังจากขั้นตอนการพัฒนาสิ้นสุดลง ในขั้นตอนนี้ ผู้ทดสอบควรให้ความสำคัญกับการแก้ไขและข้อกำหนดเหล่านี้ตามฟังก์ชันการทำงานและความสอดคล้องกับกระบวนการทดสอบซอฟต์แวร์ การจัดลำดับความสำคัญของการเปลี่ยนแปลงและข้อกำหนดของผลิตภัณฑ์ยังสามารถทำได้ผ่านการอภิปรายร่วมกัน การจำกัดความต้องการให้แคบลง และเทคนิคการทดสอบ
- กำหนดจุดเริ่มต้นและเกณฑ์การเข้า
ครั้งแล้วครั้งเล่า เกิดขึ้นที่แอปพลิเคชันเฉพาะไม่มีสิทธิ์สำหรับการทดสอบการถดถอยอัตโนมัติ และนำไปสู่การใช้ความพยายามที่ลงทุนในการทดสอบซอฟต์แวร์การถดถอยเป็นโมฆะ ระดับคุณสมบัติคือจุดเข้าสู่ชุดทดสอบการถดถอย โดยปกติจะขึ้นอยู่กับพารามิเตอร์การกำหนดค่าหรือตารางวัตถุ ก่อนที่จะดำเนินการทดสอบการถดถอยได้ การกำหนดค่าแอปพลิเคชันเป้าหมายต้องตรงตามเกณฑ์คุณสมบัติที่กำหนดไว้ล่วงหน้า
- กำหนดจุดออก
แม้ว่าคุณอาจเปิดตัวคุณลักษณะใหม่และมีการทดสอบการถดถอย แต่นั่นไม่ได้หมายความว่าการทดสอบจะสิ้นสุดลงที่นั่น ในกรณีส่วนใหญ่ จำเป็นต้องทำการทดสอบเพิ่มเติมเพื่อให้แน่ใจว่าคุณลักษณะนี้ทำงานได้ตามที่ตั้งใจไว้ ดังนั้น ในตอนท้ายของการทดสอบแต่ละครั้ง คุณต้องตัดสินใจว่าจะดำเนินการทดสอบการถดถอยต่อไปหรือหยุดการทดสอบ ซึ่งเรียกว่า "จุดออก"
ทางออกหรือจุดสุดท้ายคือผลลัพธ์ของการทดสอบการถดถอยหรือโปรแกรมแต่ละรายการ ประเด็นนี้มีวัตถุประสงค์เพื่อกำหนดสถานะของคุณสมบัติซอฟต์แวร์ภายใต้การพิจารณาและข้อกำหนดที่เกี่ยวข้องก่อนที่จะสรุปผลการทดสอบหรือโปรแกรม ทางออกหรือจุดสุดท้ายของการทดสอบการถดถอยอาจอยู่ในรูปแบบของเมตริกต่างๆ ขึ้นอยู่กับเป้าหมายของคุณในฐานะองค์กรและวิธีที่คุณต้องการวัดความสำเร็จของฟีเจอร์ใหม่
- กำหนดการทดสอบ
หลังจากยืนยันข้อกำหนดด้านการทำงานและไม่ใช่ฟังก์ชันของแอปพลิเคชันเป็นที่เข้าใจแล้ว ก็ถึงเวลาเริ่มวางโครงสร้างสำหรับการนำไปใช้งาน คุณควรสร้างแผนการทดสอบเพื่อให้มีโครงสร้างและแนวทางสำหรับกิจกรรมการทดสอบ ในการทำเช่นนี้ เราต้อง:
- กำหนดเป้าหมายและวัตถุประสงค์การทดสอบ
- กำหนดการพึ่งพาทรัพยากร
- ระบุองค์ประกอบการทดสอบที่ต้องทดสอบ
- ระบุว่าสมาชิกในทีมคนใดต้องทำการทดสอบ
- เลือกกรอบเวลาที่เหมาะสม
- เสร็จสิ้นขั้นตอนการทดสอบ
บทสรุป
ในเว็บแอปพลิเคชัน แนวคิดของการทดสอบการถดถอยดูเหมือนง่ายพอ การทดสอบการถดถอยเป็นชุดของการทดสอบที่เขียนขึ้นโดยเฉพาะหลังจากการอัพเดตหรือเผยแพร่ซอฟต์แวร์แต่ละครั้งเพื่อให้แน่ใจว่าไม่มีข้อผิดพลาดใหม่เกิดขึ้น สิ่งนี้สำคัญมากเพราะการแก้ไขจุดบกพร่องสามารถทำให้เกิดจุดบกพร่องอื่นได้ ในเศรษฐกิจโลกทุกวันนี้ เวลาเป็นเงินเป็นทอง และการไม่ทำการทดสอบการถดถอยจะทำให้คุณเสียค่าใช้จ่ายอย่างมาก ด้วยเหตุผลนี้ ในการส่งมอบเฉพาะผลิตภัณฑ์ที่มีคุณภาพและการอัปเดตให้กับผู้ใช้ของคุณ คุณควรทำการทดสอบการถดถอยเป็นประจำเพื่อแยกจุดบกพร่องใดๆ ออกจากซอฟต์แวร์ของคุณ