กรอบการทำงานอัตโนมัติการทดสอบ Agile

⚡ สรุปอย่างชาญฉลาด

การทดสอบอัตโนมัติแบบ Agile ใช้การตรวจสอบอัตโนมัติภายในสปรินต์สั้นๆ ซึ่งข้อกำหนดเปลี่ยนแปลงทุกสัปดาห์ และชุดทดสอบที่สร้างขึ้นสำหรับการปล่อยเวอร์ชันแบบ Waterfall ที่เสถียร จะกลายเป็นภาระในการบำรุงรักษามากกว่าจะเป็นตาข่ายนิรภัย

  • 🔘 ความตึงเครียดของแกนกลางลำตัว: ระบบอัตโนมัติให้รางวัลแก่ความเสถียร ในขณะที่วิธีการแบบ Agile ให้รางวัลแก่การเปลี่ยนแปลง ดังนั้นการเลือกการทดสอบจึงมีความสำคัญมากกว่าความครอบคลุมของการทดสอบ
  • ☑️ ความแตกต่างของน้ำตก: ระบบอัตโนมัติแบบดั้งเดิมนั้นตั้งอยู่บนสมมติฐานว่าแอปพลิเคชันมีความเสถียร มีผู้เขียนสคริปต์ที่เชี่ยวชาญ และมีค่าใช้จ่ายในการติดตั้งสูง
  • Sprint ความเป็นจริง: การทำงานแบบเร่งด่วน (sprint) หนึ่งถึงสี่สัปดาห์นั้นไม่ค่อยเหมาะสมกับการออกแบบ การเขียนโค้ด และการตรวจสอบความถูกต้องของสคริปต์ขนาดใหญ่
  • 🧪 ไม่ใช่การสำรวจ: การทดสอบอัตโนมัติเป็นการยืนยันพฤติกรรมที่ทราบอยู่แล้ว แต่ไม่ได้ค้นพบข้อบกพร่องใหม่ๆ ที่ไม่เคยพบมาก่อน
  • 🛠️ การเลือกเครื่องมือ: เครื่องมือที่มีข้อจำกัดด้านลิขสิทธิ์ขัดแย้งกับการทำงานร่วมกันแบบเปิดกว้าง ซึ่งเป็นสิ่งที่ทีม Agile พึ่งพา
  • 📈 เหมาะสมที่สุด: การตรวจสอบการถดถอยซ้ำๆ ที่ใช้ข้อมูลจำนวนมากและมีผลลัพธ์ชัดเจนว่าผ่านหรือไม่ผ่าน สามารถทำให้เป็นระบบอัตโนมัติได้ดี

กรอบการทำงานอัตโนมัติการทดสอบ Agile

การทดสอบระบบอัตโนมัติแบบ Agile

การทดสอบอัตโนมัติแบบ Agile การทดสอบอัตโนมัติคือการใช้ระบบอัตโนมัติในการพัฒนาซอฟต์แวร์แบบ Agile จุดประสงค์คือเพื่อให้การพัฒนาซอฟต์แวร์มีประสิทธิภาพและประสิทธิผลมากขึ้น พร้อมทั้งรักษาคุณภาพและควบคุมเวลาและทรัพยากรที่ใช้ไปในแต่ละรอบการพัฒนา เนื่องจากการทดสอบถูกเขียนขึ้นควบคู่ไปกับการพัฒนาฟีเจอร์ การทดสอบอัตโนมัติจึงขึ้นอยู่กับการประสานงานระหว่างนักพัฒนาและผู้ทดสอบเป็นอย่างมาก

นับตั้งแต่ระเบียบวิธี Agile เริ่มต้นขึ้นเพื่อขจัดความยุ่งยากและใช้เวลานานของแบบจำลอง Waterfall อิทธิพลของมันก็ปรากฏให้เห็นในหลายๆ ด้าน การทดสอบอัตโนมัติ เช่นกัน ทั้งสองศาสตร์นี้ต้องนำมาผสมผสานกันอย่างรอบคอบ:

การผสมผสานระหว่าง Agile และระบบอัตโนมัติ กลายเป็นระบบอัตโนมัติในกระบวนการ Agile

การใช้ระบบอัตโนมัติในวิธีการแบบ Waterfall เทียบกับการใช้ระบบอัตโนมัติในวิธีการแบบ Agile

ในวงจรชีวิตการทดสอบซอฟต์แวร์แบบดั้งเดิม การทดสอบอัตโนมัติจะทำได้ก็ต่อเมื่อแอปพลิเคชันนั้นเสร็จสมบูรณ์แล้ว มีความเสถียรและข้อกำหนดต่างๆ ได้รับการกำหนดไว้เรียบร้อยแล้วมันตั้งสมมติฐานว่า ใช้เวลาค่อนข้างนานต้องใช้ผู้เชี่ยวชาญด้านระบบอัตโนมัติที่มีทักษะสูงและค่าใช้จ่ายในการติดตั้งที่ค่อนข้างสูง จุดประสงค์หลักคือการลดต้นทุนในระยะยาวและยืนยันว่าไม่มีข้อบกพร่องใหม่เกิดขึ้นรอบๆ กรณีทดสอบที่มีอยู่

การทดสอบอัตโนมัติไม่ใช่ลักษณะของการสำรวจค้นหาเนื่องจากบทบาทหลักของมันคือการประหยัดเวลาและลดต้นทุน ไม่ได้ออกแบบมาเพื่อค้นหาข้อบกพร่องใหม่ๆ ที่เกิดขึ้นโดยไม่คาดคิด การทดสอบอัตโนมัติส่วนใหญ่ยืนยันพฤติกรรมที่มีอยู่แล้ว

ดังนั้น สภาพแวดล้อมทั้งสองแบบจึงสร้างความต้องการที่แตกต่างกันอย่างมากสำหรับชุดทดสอบ:

ปัจจัย ระบบอัตโนมัติในกระบวนการน้ำตก ระบบอัตโนมัติใน Agile
สถานะแอปพลิเคชัน มีความเสถียรและได้รับการตรวจสอบอนุมัติก่อนเริ่มเขียนสคริปต์ มีการเปลี่ยนแปลงในทุกสปรินต์ บ่อยครั้งในระหว่างการเขียนสคริปต์
เวลาว่าง ขั้นตอนการทำงานอัตโนมัติโดยเฉพาะ อะไรก็ตามที่สามารถทำได้ภายในระยะเวลา 1-4 สัปดาห์
ใครเป็นผู้เขียนบท ทีมผู้เชี่ยวชาญด้านระบบอัตโนมัติแยกต่างหาก ทีมส่งมอบงาน ผู้ทดสอบ และนักพัฒนาทำงานร่วมกัน
เป้าหมายหลัก ลดต้นทุนในระยะยาวสำหรับชุดการวิเคราะห์ถดถอยขนาดใหญ่ ได้รับผลตอบรับอย่างรวดเร็วเกี่ยวกับส่วนเพิ่มที่เพิ่งสร้างเสร็จ
ความเสี่ยงในการบำรุงรักษา ต่ำ เนื่องจากความต้องการเปลี่ยนแปลงช้า สูง เนื่องจากข้อกำหนดเปลี่ยนแปลงอยู่ตลอดเวลา

วิธีการนำระบบอัตโนมัติมาใช้ในระเบียบวิธี Agile

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

แนวทาง Agile ปฏิเสธการจัดทำเอกสารที่น่าเบื่อ และสนับสนุนการทดสอบเชิงสำรวจ

มีความขัดแย้งอย่างแท้จริงระหว่างปรัชญาพื้นฐานของวิธีการแบบ Agile และการทดสอบอัตโนมัติ ทีม Agile แก้ปัญหานี้โดยการจำกัดขอบเขตของสิ่งที่พวกเขาทำการทดสอบอัตโนมัติ แทนที่จะลดจำนวนการทดสอบอัตโนมัติลง: การตรวจสอบจะถูกเขียนขึ้นในสปรินต์เดียวกับฟีเจอร์ ผลักดันลงไปยังระดับยูนิตและ API ซึ่งเป็นระดับที่บำรุงรักษาได้ง่ายที่สุด และเรียกใช้ในทุกๆ บิลด์

ประเด็นพื้นฐานสำหรับการทดสอบอัตโนมัติแบบ Agile

ก่อนที่จะทุ่มกำลังการทำงานของสปรินต์ไปกับการทำงานอัตโนมัติ ให้พิจารณาประเด็นต่างๆ ที่เป็นตัวตัดสินว่าสคริปต์นั้นจะสามารถทำงานให้เสร็จได้หรือไม่:

  • เวลาในการออกแบบและเขียนโค้ด: สคริปต์ทุกตัวต้องได้รับการออกแบบ เขียนโค้ด และตรวจสอบเหมือนกับโค้ดที่ใช้งานจริง
  • การตรวจสอบความถูกต้องเทียบกับข้อมูลทดสอบ: สคริปต์ที่เสร็จสมบูรณ์แล้วจะต้องได้รับการตรวจสอบความถูกต้องด้วยข้อมูลทดสอบที่มีอยู่ก่อนที่ใครจะสามารถเชื่อถือได้
  • วัตถุประสงค์ของการทดสอบ: การทดสอบการทำงานและการทดสอบการถดถอยมีค่าใช้จ่ายในการบำรุงรักษาและอายุการใช้งานที่แตกต่างกัน
  • Sprint ความยาว: สปรินต์หนึ่งรอบจะใช้เวลาหนึ่งถึงสี่สัปดาห์ โดยส่วนใหญ่มักใช้เวลาสองสัปดาห์ ซึ่งแทบจะไม่เหลือเวลาสำหรับการเขียนสคริปต์จำนวนมากเลย

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

ในทางตรงกันข้าม การทดสอบแบบอัตโนมัติมีประโยชน์มากที่สุดสำหรับข้อกำหนดที่ค่อนข้างคงที่ มันไม่เหมาะกับความเปลี่ยนแปลงอย่างต่อเนื่องของวิธีการแบบ Agile ซึ่งเป็นเหตุผลว่าทำไมการเลือกสิ่งที่จะทำการอัตโนมัติจึงมีความสำคัญมากกว่าปริมาณของสิ่งที่ทำการอัตโนมัติ

เครื่องมืออัตโนมัติแบบเปรียว

การเลือกที่เกี่ยวข้อง เครื่องมืออัตโนมัติ ปัจจัยสำคัญอีกประการหนึ่งในการนำการทดสอบอัตโนมัติมาใช้ในวิธีการแบบ Agile คือ เครื่องมือทดสอบอัตโนมัติที่มีลิขสิทธิ์ ตัวอย่างเช่น กำหนดเกณฑ์การเข้าถึงด้านความปลอดภัยที่เข้มงวดสำหรับผู้ใช้ประเภทและระดับต่างๆ ซึ่งจำกัดว่าใครบ้างที่สามารถเข้าถึงทรัพยากรของกรอบการทำงานการทดสอบอัตโนมัตินั้นได้

เครื่องมืออัตโนมัติแบบมีลิขสิทธิ์จะจำกัดการใช้ทรัพยากร ในขณะที่วิธีการแบบ Agile มีข้อจำกัดน้อยกว่า

ในทางตรงกันข้าม วิธีการแบบ Agile เน้นการทำงานร่วมกันอย่างเปิดเผยและการมีปฏิสัมพันธ์อย่างอิสระระหว่างสมาชิกในทีม นโยบายการเข้าถึงที่จำกัดจะขัดขวางความสามัคคีนั้น และอาจส่งผลให้เกิดผลลัพธ์ที่ไม่เป็นประโยชน์หรือไม่เอื้อต่อความสำเร็จของโครงการ

สิ่งสำคัญอันดับแรกคือการส่งมอบสคริปต์การทดสอบอัตโนมัติที่มีคุณภาพภายในระยะเวลาที่กระบวนการแบบ Agile กำหนด เลือกกรณีทดสอบที่เหมาะสมอย่างรอบคอบ เพื่อให้สคริปต์ที่ได้สามารถนำกลับมาใช้ใหม่ได้ในภายหลังและยังคงเสร็จสิ้นภายในเวลาที่กำหนด

แม้ในสภาพแวดล้อมแบบ Agile ก็ยังจำเป็นต้องมีการทดสอบบางอย่าง โดยเฉพาะอย่างยิ่งการทดสอบการถดถอย (regression tests) ส่วนถัดไปจะกล่าวถึงสถานการณ์ที่การทดสอบแบบอัตโนมัติเหมาะสม และวิธีการเชื่อมโยงแต่ละสถานการณ์เข้ากับการทดสอบแบบ Agile

การทดสอบระบบอัตโนมัติ Concepts เมื่อนำไปประยุกต์ใช้กับ Agile

ตารางด้านล่างนี้แสดงเงื่อนไขคลาสสิกเจ็ดประการที่สนับสนุนการทดสอบแบบอัตโนมัติ และให้คำตอบแบบ Agile สำหรับแต่ละเงื่อนไข มีเพียงสามเงื่อนไขเท่านั้นที่สามารถนำมาใช้ในสปรินต์แบบ Agile ได้อย่างชัดเจน และทั้งสามเงื่อนไขนั้นมีลักษณะเป็นการทดสอบแบบถดถอย:

# แนวคิดการทดสอบอัตโนมัติ คำตอบของระเบียบวิธีแบบ Agile
1 ต้องทำการทดสอบซ้ำบ่อยๆ นี่คือจุดที่แนวคิดของการทดสอบการถดถอยเข้ามามีบทบาท
2 ขั้นตอนการทำงานและการตรวจสอบความถูกต้องของการทดสอบจะค่อยๆ พัฒนาและเปลี่ยนแปลงไปตามกาลเวลา ไม่เหมาะสำหรับการทดสอบแบบ Agile เนื่องจาก Agile Testing หมายถึงการเปลี่ยนแปลงข้อกำหนดบ่อยครั้ง
3 การทดสอบนี้เป็นการตรวจสอบกระบวนการทางธุรกิจหรือขั้นตอนการทำงาน มากกว่าการตรวจสอบรูปลักษณ์ สีสัน หรือรูปแบบตาราง สถานการณ์นี้สามารถพิจารณาได้ว่าเกี่ยวข้องกับการทดสอบด้วยตนเอง
4 การทดสอบนี้จะสร้างผลลัพธ์ให้กับหน่วยงานกำกับดูแล ซึ่งหน่วยงานดังกล่าวจะกำหนดให้ต้องบันทึกและจัดเก็บผลลัพธ์เหล่านั้นในรูปแบบอิเล็กทรอนิกส์ เพื่อใช้เป็นหลักฐานอย่างเป็นทางการในการปฏิบัติตามข้อกำหนด ไม่เหมาะสมกับวิธีการแบบ Agile เนื่องจากวิธีการแบบ Agile ไม่ได้เน้นการจัดทำเอกสารอย่างละเอียดถี่ถ้วน
5 การทดสอบนั้นซ้ำซากมาก หรือมีหลายขั้นตอนที่ต้องดำเนินการให้เหมือนกันทุกครั้ง ซึ่งต้องหลีกเลี่ยงความเหนื่อยล้าของผู้ทดสอบด้วยตนเอง ไม่เหมาะสมกับวิธีการพัฒนาซอฟต์แวร์แบบ Agile
6 ผลการทดสอบว่าผ่านหรือไม่ผ่านนั้น สามารถตรวจสอบและบันทึกได้ค่อนข้างง่ายด้วยเครื่องมืออัตโนมัติที่เลือกใช้ เหมาะสำหรับงานทดสอบการถดถอย (regression test) ในระหว่างการทดสอบแบบ Agile ซึ่งต้องการความสามารถในการทำงานซ้ำๆ และต้องใช้ความพยายามอย่างมาก
7 การทดสอบจำเป็นต้องป้อนข้อมูลจำนวนมากเข้าสู่แอปพลิเคชัน สามารถนำไปใช้ในการทดสอบการถดถอยได้

แนวคิดการทดสอบอัตโนมัติเจ็ดประการที่จับคู่กับวิธีการ Agile ที่เหมาะสมจะช่วยตอบคำถามเหล่านี้ได้

คำถามที่พบบ่อย

หลักการแบ่งชั้นคือ: เริ่มต้นด้วยการทดสอบหน่วย (unit test) ที่รวดเร็วจำนวนมากที่ฐาน ลดจำนวนการทดสอบการบูรณาการ (integration test) และการทดสอบ API ลงตรงกลาง และปิดท้ายด้วยการทดสอบ UI แบบครบวงจร (end-to-end test) บางๆ ที่ด้านบนสุด วิธีนี้จะช่วยให้ชุดทดสอบขนาดสปรินต์ (sprint) ทำงานได้รวดเร็วและบำรุงรักษาได้ง่ายและประหยัด

การตรวจสอบอัตโนมัติสำหรับเรื่องราวจะถูกเขียนขึ้นในสปรินต์เดียวกันกับเรื่องราวนั้น ๆ โดยปกติทีมจะเริ่มต้นด้วยการทดสอบหน่วยในสปรินต์แรก เพราะการรอจนกว่าผลิตภัณฑ์จะเสถียรเพียงพอจะทำให้เกิดภาระการทดสอบด้วยตนเองเพิ่มขึ้น

จัดลำดับขั้นตอนให้สอดคล้องกับพีระมิด การทดสอบหน่วย (Unit test) จะทำงานก่อนเพราะเร็วที่สุด ตามด้วยการทดสอบการบูรณาการ (Integration test) และการทดสอบ API (API test) จากนั้นจึงเป็นการทดสอบแบบครบวงจร (End-to-End test) ขนาดเล็ก ความล้มเหลวจะปรากฏขึ้นในระดับที่ต้นทุนต่ำที่สุดก่อน Guru99 ครอบคลุมกลไกใน บูรณาการอย่างต่อเนื่อง.

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

ทีมส่งมอบงานทั้งหมด นักพัฒนาดูแลการทดสอบหน่วย นักทดสอบดูแล API และเลเยอร์แบบครบวงจร และทั้งสองฝ่ายตรวจสอบงานของกันและกัน ทีมงานอัตโนมัติในขั้นตอนถัดไปที่แยกต่างหาก ทำให้เกิดความล่าช้าในการส่งมอบงาน ซึ่งเป็นสิ่งที่ Scrum ตั้งใจจะกำจัดออกไป

แยกการทดสอบที่ไม่เสถียรออกจากกระบวนการทำงานหลัก แจ้งข้อบกพร่อง และแก้ไขหรือลบออกภายในสปรินต์ การปล่อยให้การทดสอบที่ไม่เสถียรอยู่ในรอบการทำงานหลักจะสอนให้ทีมเพิกเฉยต่อบิลด์สีแดง ซึ่งจะทำให้เสียค่าใช้จ่ายมากกว่าการขาดการครอบคลุมการทดสอบ

ตัวระบุตำแหน่งที่ซ่อมแซมตัวเองได้จะระบุองค์ประกอบที่ถูกย้ายจากบริบทเดิมอีกครั้งแทนที่จะล้มเหลว ซึ่งช่วยลดความล้มเหลวที่เกิดจากการบำรุงรักษา นอกจากนี้ โมเดลยังสร้างข้อมูลทดสอบ จัดลำดับความสำคัญของการทดสอบที่จะดำเนินการกับส่วนต่าง และจัดกลุ่มความล้มเหลวที่ซ้ำกัน เพื่อให้ทีมสปรินต์สามารถคัดแยกได้เพียงครั้งเดียว

มันร่างเอกสารเหล่านั้นได้อย่างรวดเร็ว นักบิน GitHub สร้างโครงสร้างอ็อบเจ็กต์หน้าเว็บ ฟิกซ์เจอร์ และแอสเซมบลีจากโค้ดที่มีอยู่ ซึ่งช่วยลดความซ้ำซ้อนได้มากping. Revตรวจสอบร่างทุกครั้ง เพราะการทดสอบที่สร้างขึ้นอาจยืนยันพฤติกรรมปัจจุบัน แทนที่จะเป็นพฤติกรรมที่ต้องการ

สรุปโพสต์นี้ด้วย: