โครงสร้างพื้นฐานเป็นรหัสบอกให้เราใช้เครื่องมือที่ทำให้งานสร้างของคุณเป็นแบบอัตโนมัติ ยิ่งใหญ่ เครื่องมืออย่างansible , พ่อครัว , หุ่นเชิด , กองเกลือและอื่น ๆ ผลักดันเราให้เขียนว่าโครงสร้างพื้นฐานมีลักษณะอย่างไรในขณะที่แก้ไขความแตกต่าง
ใน Salt กองบิตเหล่านี้จะเรียกว่ารัฐ หากรัฐไม่ตรงกับความจริงเครื่องมือจะแก้ไขให้เรา กล่าวอีกนัยหนึ่ง - เรากำลังเขียนการทดสอบสำหรับโครงสร้างพื้นฐานของเราและหากการทดสอบล้มเหลวเครื่องมือจะแก้ไขด้วยตนเอง อย่างน้อยนั่นก็เป็นความคิด
XP สอนให้เราใช้ TDD และคำถามคือถ้ามันใช้กับโครงสร้างพื้นฐานได้หรือไม่ การขับรถแสดงให้เห็นว่ามันเป็น
ฉันนึกภาพการทดสอบบางประเภทที่มีประโยชน์มาก
เราเขียนการทดสอบควันที่มาพร้อมกับบริการที่ปรับใช้เพื่อให้แน่ใจว่าบริการที่ปรับใช้แบบ end-to-end จะทำงานและทำงานตามที่คาดไว้ นี่จะเป็นการเรียก API หรือ / และ systemctl ตรวจสอบเพื่อให้แน่ใจว่าสิ่งที่เราเพิ่งปรับใช้งาน ฟังก์ชั่นจำนวนมากนี้สามารถครอบคลุมในสถานะเดียวกันเนื่องจากเครื่องมือเช่น ansible มีสถานะเพื่อให้แน่ใจว่าบริการกำลังทำงานอยู่
มีโครงการโมเลกุลที่อนุญาตให้เรียกใช้แต่ละบทบาท (ตามที่เรียกว่าสถานะของมัน) เทียบกับนักเทียบท่าหรือเครื่องมือ virtualisation ชั่วคราวอื่น กองกำลังนี้จะแยกบทบาทและอนุญาตให้ดำเนินการแยกจาก playbook ขณะที่ทำงานกับพวกเขา การทดสอบส่วนใหญ่อนุญาตการเยาะเย้ยตัวแปรที่บทบาทควรจะทำงานด้วย ตัวอย่างอื่น ๆ ดูเหมือนจะซ้ำซ้อนของเอ็นจิน ansible (ยืนยันไฟล์ที่เป็นของผู้ใช้ ... )
เรดาร์เทคโนโลยีของThoughtWorksในขณะนี้ยกย่องเครื่องมือเช่นinspec , serverspecหรือgossสำหรับการตรวจสอบว่าเซิร์ฟเวอร์นั้นตรงตามข้อกำหนด แต่เรากำลังเขียนสเป็คใช่มั้ย
ดังนั้นจะมีจุดหนึ่งในการทดสอบโครงสร้างพื้นฐานเพิ่มเติมหากเราอธิบายโครงสร้างพื้นฐานในรัฐ / บทบาทหรือไม่? ฉันสงสัยว่าสิ่งนี้จะกลายเป็นสิ่งจำเป็นมากขึ้นในองค์กรขนาดใหญ่ที่ทีมใดทีมหนึ่งให้ข้อมูลจำเพาะและอื่น ๆ ตามมาหรือหากมีบทบาทจำนวนมากบางทีคุณอาจต้องการเรียกใช้ชุดย่อยเหล่านั้นและได้รับประโยชน์จากการทดสอบเร็ว ฉันกำลังดิ้นรนเพื่อดูว่าทำไมคุณถึงเขียนข้อสอบหากคุณมีบทบาท / สถานะสำหรับคำถามเดียวกันในใจ
goss
แต่ผลข้างเคียงของการกระทำเหล่านั้นจะถูกทดสอบโดยใช้ ดังนั้นสำหรับตัวอย่างเช่น RPM ได้รับการติดตั้ง (ansible) จากนั้นทดสอบว่าไฟล์เริ่มต้นที่คาดว่าจะเกิดขึ้นหรือบริการกำลังทำงานอยู่และกำลังฟังพอร์ตเฉพาะ ฉันไม่ต้องการแก้ไขปัญหาดังกล่าวโดยอัตโนมัติ แต่ได้รับแจ้งและหยุดความคืบหน้า แน่นอนว่า Ansible สามารถทดสอบระบบให้กับคุณเช่นกันคุณเพียงแค่ต้องมีความชัดเจนเกี่ยวกับเรื่องนี้ แต่ในกรณีของเราเราใช้goss
เพื่อทดสอบพฤติกรรมการให้บริการภายในตู้คอนเทนเนอร์