ตัวอย่างกลยุทธ์การทดสอบอัตโนมัตินี้จะถือว่ารูปแบบการจัดส่งที่ต่อเนื่องกับทีมที่มีความคล่องตัวหลายทีม
ในบทความก่อนหน้านี้ครอบคลุม กลยุทธ์การทดสอบ Agile เอกสารเช่นเดียวกับ วิธีตั้งค่าฟังก์ชัน QA ตั้งแต่เริ่มต้นสำหรับโครงการ Agile และวิธีการทดสอบอัตโนมัติเป็นหนึ่งในรายการสำคัญในการตั้งค่าเริ่มต้น
ในตัวอย่างกลยุทธ์การทดสอบอัตโนมัตินี้ฉันจะระบุประเด็นสำคัญที่ต้องพิจารณาเพื่อให้ได้ประโยชน์สูงสุดจากความพยายามในการทดสอบอัตโนมัติ
การทดสอบอัตโนมัติเป็นกิจกรรมหลักของวิธีการพัฒนาที่คล่องตัว ในขณะที่เราก้าวไปสู่การปรับใช้งานอย่างต่อเนื่องการทดสอบอัตโนมัติจะมีความสำคัญมากขึ้นเนื่องจากการตอบกลับข้อเสนอแนะที่รวดเร็วซึ่งให้กับทีมพัฒนาเกี่ยวกับความสมบูรณ์ของแอปพลิเคชัน
เพื่อให้ได้ข้อเสนอแนะอย่างรวดเร็วนี้การทดสอบอัตโนมัติจำเป็นต้องดำเนินการอย่างต่อเนื่องควรรวดเร็วและผลการทดสอบควรสม่ำเสมอและเชื่อถือได้
เพื่อให้บรรลุเป้าหมายดังกล่าวการตรวจสอบส่วนใหญ่ควรทำโดยเป็นส่วนหนึ่งของการพัฒนาคุณลักษณะใหม่ ๆ กล่าวอีกนัยหนึ่งการพัฒนาและการทดสอบควรเป็นกิจกรรมที่เชื่อมโยงกันและคุณภาพควรได้รับการ“ อบ” ตั้งแต่เริ่มต้นโดยการตรวจสอบให้แน่ใจว่าสิ่งที่กำลังพัฒนานั้นใช้งานได้จริงและไม่ทำให้ฟังก์ชันการทำงานที่มีอยู่เสียหาย
สิ่งนี้ต้องการ 'การย้อนกลับปิรามิดการทดสอบอัตโนมัติ' โดยการผลักดันการทดสอบ GUI ที่ใช้เวลานานในการดำเนินการไปยังระดับที่ต่ำกว่าเช่น เลเยอร์ API ที่สามารถทำงานได้ทันทีหลังจากการทดสอบหน่วยซึ่งเป็นส่วนหนึ่งของโครงสร้างเพื่อให้ระดับความมั่นใจเริ่มต้น
ที่เกี่ยวข้อง:
การป้องกันมากกว่าการตรวจจับ - ในขณะที่ควรใช้ความพยายามทุกวิถีทางในการป้องกันการนำข้อบกพร่องในแอปพลิเคชันมาใช้ แต่แรกเทคนิคและวิธีการนั้นอยู่นอกเหนือขอบเขตของโพสต์นี้ ที่นี่มีการกำหนดวิธีการเพื่อให้สามารถตรวจจับจุดบกพร่องได้อย่างรวดเร็วเมื่อนำเข้าสู่ระบบและข้อเสนอแนะในการพัฒนา
คุณภาพควรได้รับการสนับสนุนมากกว่าปริมาณ ในกรณีส่วนใหญ่จะเป็นการดีกว่าที่จะเปิดตัวโดยใช้คุณลักษณะเดียวที่เป็นหินแข็งแทนที่จะเป็นคุณลักษณะหลายอย่างที่เป็นขุย ตามเกณฑ์การเปิดตัวขั้นต่ำคุณลักษณะที่พัฒนาขึ้นใหม่ไม่ควรมีข้อบกพร่องในการถดถอยใด ๆ
ดังที่ได้กล่าวไปแล้วข้อเสนอแนะอย่างรวดเร็วเกี่ยวกับความสมบูรณ์ของแอปพลิเคชันมีความสำคัญอย่างมากในการสนับสนุนการส่งมอบอย่างต่อเนื่องดังนั้นจึงมีการกำหนดกระบวนการและกลไกที่เราสามารถรับข้อเสนอแนะได้อย่างรวดเร็ว
วิธีหนึ่งในการรับคำติชมอย่างรวดเร็วคือการเพิ่มจำนวนการทดสอบหน่วยการทดสอบการรวมและการทดสอบ API การทดสอบระดับต่ำเหล่านี้จะมีตาข่ายนิรภัยเพื่อให้แน่ใจว่าโค้ดทำงานตามที่ตั้งใจไว้และช่วยป้องกันข้อบกพร่องที่หลุดรอดไปในการทดสอบชั้นอื่น ๆ
การทดสอบหน่วยเป็นรากฐานสำหรับการทดสอบอัตโนมัติในระดับที่สูงขึ้น
องค์ประกอบที่สองของการปรับปรุงคือการเรียกใช้การทดสอบการถดถอยบ่อยขึ้นและสอดคล้องกับกระบวนการของการบูรณาการแบบต่อเนื่องดูในภายหลัง ไม่ควรมองว่าการทดสอบอัตโนมัติเป็นงานแยก แต่เป็นกิจกรรมที่สอดคล้องกันที่ฝังอยู่ใน SDLC
การทดสอบการถดถอยอัตโนมัติเป็นหัวใจหลักของกลยุทธ์การทดสอบอัตโนมัติ
ชุดการถดถอยทำหน้าที่เป็นตัวตรวจสอบว่าแอปพลิเคชันสามารถโหลดและเข้าถึงได้ นอกจากนี้ควรเรียกใช้สถานการณ์สำคัญเพียงไม่กี่สถานการณ์เพื่อให้แน่ใจว่าแอปพลิเคชันยังคงใช้งานได้
จุดมุ่งหมายของชุดทดสอบควันคือการตรวจจับปัญหาที่ชัดเจนที่สุดเช่นแอปพลิเคชันไม่โหลดหรือไม่สามารถดำเนินการขั้นตอนของผู้ใช้ทั่วไปได้ ด้วยเหตุนี้การทดสอบควันจึงควรใช้เวลาไม่เกิน 5 นาที เพื่อให้ข้อเสนอแนะอย่างรวดเร็วในกรณีที่สิ่งสำคัญไม่ทำงาน
ชุดทดสอบควันทำงานในทุกการใช้งานและอาจเป็นส่วนผสมระหว่างการทดสอบ API และ / หรือ GUI
Functional Regression Packs ซึ่งมีไว้เพื่อตรวจสอบการทำงานของแอปพลิเคชันโดยละเอียดมากกว่าการทดสอบควัน
ชุดการถดถอยหลายชุดจะต้องมีเพื่อวัตถุประสงค์ที่แตกต่างกัน หากมีหลายทีมที่ทำงานในส่วนต่างๆของแอปพลิเคชันที่ดีควรมีชุดการถดถอยที่แตกต่างกันซึ่งสามารถมุ่งเน้นไปที่พื้นที่ที่ทีมกำลังดำเนินการอยู่
แพ็คเหล่านี้ควรสามารถรันในสภาพแวดล้อมใด ๆ และเมื่อจำเป็นหากลักษณะการทำงานของคุณลักษณะยังคงสอดคล้องกันตลอดทั้งสภาพแวดล้อม มีการดำเนินการหลายครั้งต่อวันและควรใช้เวลาไม่เกิน 15 ถึง 30 นาที
เนื่องจากการทดสอบการทำงานเหล่านี้มีรายละเอียดมากขึ้นจึงใช้เวลาในการรันนานขึ้นดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องมีการทดสอบการทำงานส่วนใหญ่ที่เลเยอร์ API ซึ่งการทดสอบสามารถดำเนินการได้เร็วขึ้นเพื่อให้เราสามารถอยู่ภายใน 15 ถึง 30 นาที เวลาที่ จำกัด.
End-to-End Regression Pack, ซึ่งทดสอบแอปพลิเคชันทั้งหมดโดยรวม จุดมุ่งหมายของการทดสอบเหล่านี้คือเพื่อให้แน่ใจว่าส่วนต่างๆของแอปพลิเคชันที่เชื่อมต่อกับฐานข้อมูลต่างๆและแอปพลิเคชันของบุคคลที่สามทำงานได้อย่างถูกต้อง
การทดสอบ End-to-End ไม่ได้มีไว้เพื่อทดสอบฟังก์ชันการทำงานทั้งหมดเนื่องจากมีการทดสอบแล้วในชุดการถดถอยเชิงฟังก์ชันอย่างไรก็ตามการทดสอบเหล่านี้เป็นแบบ 'น้ำหนักเบา' ซึ่งเพียงแค่ตรวจสอบการเปลี่ยนจากสถานะหนึ่งไปยังอีกสถานะหนึ่ง สถานการณ์ที่สำคัญที่สุดหรือการเดินทางของผู้ใช้
การทดสอบเหล่านี้ส่วนใหญ่ดำเนินการผ่าน GUI เนื่องจากพวกเขากำลังตรวจสอบว่าผู้ใช้จะใช้ระบบอย่างไร เวลาที่ใช้ในการดำเนินการเหล่านี้อาจแตกต่างกันไปในแต่ละแอปพลิเคชัน แต่โดยปกติจะทำงานวันละครั้ง
Test Automation เริ่มต้นที่ระดับหน่วย ผู้พัฒนาควรเขียนแบบทดสอบหน่วยสำหรับคุณลักษณะใหม่ใด ๆ ที่พัฒนาขึ้น การทดสอบหน่วยเหล่านี้เป็นรากฐานของการปฏิบัติอัตโนมัติที่ใหญ่ขึ้นซึ่งครอบคลุมไปจนถึงการทดสอบระบบ GUI
เป็นความรับผิดชอบของนักพัฒนาที่จะต้องตรวจสอบให้แน่ใจว่าสำหรับฟีเจอร์ใหม่ทุกรายการที่พัฒนาขึ้นจะมีการเขียนชุดการทดสอบหน่วยที่สอดคล้องกันและมั่นคงเพื่อพิสูจน์ว่าโค้ดทำงานตามที่ตั้งใจไว้และตรงตามข้อกำหนด
การทดสอบหน่วยจะให้ ROI แก่ทีมมากที่สุดเนื่องจากทำงานได้รวดเร็วมากดูแลรักษาและแก้ไขได้ง่าย (เนื่องจากไม่มีการอ้างอิง) และเมื่อมีข้อผิดพลาดในโค้ดโค้ดจะถูกส่งกลับไปยังผู้พัฒนาอย่างรวดเร็ว
การทดสอบหน่วยจะทำงานบนเครื่องของนักพัฒนาเช่นเดียวกับสภาพแวดล้อม CI
ในขณะที่การทดสอบหน่วยจะขึ้นอยู่กับการทดสอบฟังก์ชันภายในชั้นเรียนการทดสอบการรวมจะสร้างระดับถัดไปจากการทดสอบหน่วยเพื่อทดสอบชั้นเรียนที่รวมกันเป็นส่วนประกอบเพื่อส่งมอบฟังก์ชันการทำงาน การทดสอบเหล่านี้จะดำเนินการก็ต่อเมื่อการทดสอบหน่วยทำงานและผ่านไปแล้ว
การทดสอบบริการจะทำงานที่เลเยอร์ API โดยธรรมชาติโดยไม่มีการแทรกแซงของอินเทอร์เฟซเว็บ GUI ด้วยเหตุนี้การทดสอบจึงสามารถตรวจสอบการทำงานในรูปแบบที่บริสุทธิ์และเนื่องจากการทดสอบพูดคุยโดยตรงกับส่วนประกอบจึงดำเนินการได้อย่างรวดเร็วและจะเป็นส่วนหนึ่งของการสร้าง
ในกรณีที่จำเป็นให้ล้อเลียนเช่น Wiremock จะถูกนำมาใช้เพื่อแยกตัวประกอบของการพึ่งพาอื่น ๆ 3ถระบบปาร์ตี้และเมื่อระบบดาวน์สตรีมไม่พร้อมใช้งานเพื่อให้ข้อมูลที่จำเป็นสำหรับการทดสอบ
การทดสอบการรวมระบบและ / หรือการทดสอบบริการสามารถเรียกใช้บนเครื่องของนักพัฒนาซอฟต์แวร์ได้เช่นกันและเป็นส่วนหนึ่งของการสร้าง แต่ถ้าเริ่มใช้เวลานานควรเรียกใช้ในสภาพแวดล้อม CI
เครื่องมือเช่น SoapUI สามารถใช้สำหรับการทดสอบบริการ
แอปพลิเคชันอีคอมเมิร์ซทั่วไปสามารถแบ่งออกเป็นแอปพลิเคชันต่างๆหรือ 'แอป' ที่มีฟังก์ชันการทำงานที่แตกต่างกัน แนวคิดของ“ การทดสอบแอป” คือการจัดกลุ่มการทดสอบที่ทดสอบการทำงานของแอปเข้าด้วยกันและทำงานกับแอปที่ต้องการ แพ็คนี้จะมีประโยชน์ในกรณีที่ทีมต้องการเปิดตัวแอพแต่ละตัวและต้องการทราบว่าแอปทำงานอย่างถูกต้องหรือไม่
โดยทั่วไปการทดสอบแอปพลิเคชันจะต้องใช้อินเทอร์เฟซเพื่อโต้ตอบกับส่วนประกอบต่างๆดังนั้นจึงคาดว่าการทดสอบเหล่านี้จะดำเนินการผ่านเบราว์เซอร์บน GUI
วัตถุประสงค์ของการทดสอบแอปคือเพื่อให้แน่ใจว่าคุณสมบัติของแอปพลิเคชันทำงานได้ถูกต้อง เนื่องจากการทดสอบจัดขึ้นในลักษณะที่ให้ความมั่นใจในสุขภาพของแอปใดแอปหนึ่งโดยปกติการทดสอบเหล่านี้จึงเรียกว่าการทดสอบแนวตั้งเนื่องจากพวกเขาดำเนินการ 'ปิด' แอปใดแอปหนึ่ง การทดสอบมีความละเอียดถี่ถ้วนและครอบคลุมมาก
ซีลีเนียม WebDriver สามารถใช้เพื่อเรียกใช้การทดสอบอัตโนมัติเหล่านี้กับเบราว์เซอร์ เครื่องมือนี้ได้รับความนิยมมากที่สุดสำหรับการทดสอบระบบอัตโนมัติของเบราว์เซอร์และมี API ที่หลากหลายเพื่อให้สามารถตรวจสอบได้อย่างซับซ้อน
การทดสอบอัตโนมัติของ GUI ซึ่งรันกับระบบทำหน้าที่เป็นโฟลว์ของผู้ใช้ทั่วไปการเดินทางหรือสถานการณ์จากต้นทางถึงปลายทาง เนื่องจากปัญหาเกี่ยวกับการทดสอบประเภทนี้ (อธิบายไว้ด้านล่าง) สิ่งเหล่านี้จะถูกควบคุมให้น้อยที่สุด สถานการณ์แบบ end-to-end จะรวมอยู่ในชุดการถดถอยทุกคืน
ในฐานะส่วนหนึ่งของกลยุทธ์การทดสอบอัตโนมัติเราจำเป็นต้องตรวจสอบให้แน่ใจว่าได้ลดจำนวนการทดสอบอัตโนมัติที่เรียกใช้ที่เลเยอร์ GUI ให้เหลือน้อยที่สุด
ในขณะที่การเรียกใช้การทดสอบอัตโนมัติผ่าน GUI ให้การทดสอบที่ดีและมีความหมายในแง่ของการจำลองการโต้ตอบของผู้ใช้กับแอปพลิเคชัน แต่ก็มีแนวโน้มที่จะเกิดปัญหาต่างๆตามรายการด้านล่าง:
เนื่องจากการทดสอบใช้ตัวระบุตำแหน่ง HTML ในการระบุองค์ประกอบของเว็บที่จะโต้ตอบทันทีที่มีการเปลี่ยนแปลง id การทดสอบจะล้มเหลวดังนั้นจึงต้องเสียค่าใช้จ่ายในการบำรุงรักษาจำนวนมาก
GUI อาจ จำกัด ความสามารถของผู้ทดสอบในการตรวจสอบคุณลักษณะอย่างสมบูรณ์เนื่องจาก GUI อาจไม่มีรายละเอียดทั้งหมดจากการตอบกลับทางเว็บเพื่อให้สามารถตรวจสอบได้
เนื่องจากการทดสอบดำเนินการผ่าน GUI เวลาในการโหลดหน้าเว็บจึงสามารถเพิ่มเวลาในการทดสอบโดยรวมได้อย่างมากและด้วยเหตุนี้ผลตอบรับจากนักพัฒนาจึงค่อนข้างช้า
เนื่องจากปัญหาดังกล่าวข้างต้นการทดสอบอัตโนมัติ GUI จึงให้ ROI น้อยที่สุด
การทดสอบการทำงานอัตโนมัติของเบราว์เซอร์จะถูกเก็บไว้ให้น้อยที่สุดและจะใช้ในการจำลองพฤติกรรมของผู้ใช้โดยรวมโฟลว์ของผู้ใช้ทั่วไปและสถานการณ์จากต้นทางถึงปลายทางที่ระบบโดยรวมใช้งาน