วิธีทดสอบและปรับให้เหมาะสมเมื่อคุณไม่สามารถสร้างสภาพแวดล้อมได้


17

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

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

วิธีการปรับให้เหมาะสมตามปกติของฉัน (การวัดลองบางอย่างตรวจสอบความถูกต้องวัดความแตกต่างทำซ้ำ) ไม่ได้ทำงานที่นี่จริง ๆ เพราะฉันไม่สามารถทำตามขั้นตอนที่ 2 และ 3 ได้อย่างมีประสิทธิภาพสำหรับส่วนต่าง ๆ ของปัญหา โหลด) สถานการณ์นี้ดูเหมือนจะไม่ซ้ำกัน อะไรคือวิธีการทั่วไปในการทำงานประเภทนี้ในสภาพแวดล้อมแบบนี้?

มีคำถามที่เกี่ยวข้อง:

  • นี้คำถามได้จะทำอย่างไรกับฮาร์ดแวร์ (เช่นวิเคราะห์สเปกตรัม) เป็นไม่พร้อมใช้งานซึ่งสามารถ (ค่อนข้าง) เทิดทูนอย่างง่ายดาย
  • นี้เป็นคำถามเกี่ยวกับการติดตามลงโรคจิตเท่านั้นที่อยู่ในสภาพแวดล้อมการผลิตซึ่งเป็นประโยชน์ - แต่การจัดเรียงที่แตกต่างกันของกิจกรรม

1
คำตอบสั้น ๆ : คำตอบสำหรับคำถามที่เชื่อมโยงที่สองนำไปใช้เช่นกัน การบันทึกเพิ่มเติมจะไม่เพียง แต่ช่วยแก้ไขข้อบกพร่องเท่านั้น แต่ยังช่วยในการทดสอบและปรับให้เหมาะสมอีกด้วย คุณอาจต้องบันทึกสิ่งต่าง ๆ โดยเฉพาะเวลาทำงานและการใช้ทรัพยากร
Doc Brown

คุณสามารถแบ่งเวลาการทำงานหลายส่วนของสภาพแวดล้อมการผลิตระหว่างการผลิตและการทดสอบได้หรือไม่?
แพทริค

@DocBrown - แน่นอน แต่การบันทึกจะไม่ช่วยให้ฉันเห็นว่าการใช้งานทางเลือกจะถูกต้องหรือมีประสิทธิภาพมากกว่าในการผลิตจนกว่าจะใช้งานจริง - ซึ่งดูเหมือนว่าจะช้าเกินไป
Telastyn

2
Reproducing the environment is prohibitively costly.- บั๊กการผลิตแบบหยุดการแสดงมีราคาเท่าใด 2 ข้อบกพร่องคืออะไร? ในเวลาที่คาดเดาไม่ได้ (เป็นไปได้มากที่สุดเมื่อคุณมีผู้ใช้ส่วนใหญ่วางระบบในเวลาเดียวกัน) น้ำหนักที่เทียบกับค่าใช้จ่ายในการตั้งค่าสภาพแวดล้อมการทำสำเนาที่น้อยที่สุด - คุณอาจพบว่าไม่ใช่ราคาแพงอย่างเด็ดขาด
Jess Telford

ด้วยเหตุผลบางอย่างฉันรู้สึกว่านี่หมายถึงว่าระบบได้รับการออกแบบไม่ดีจัดระเบียบ หากระบบมีการจัดการที่ดีและเป็นแบบแยกส่วนการตั้งค่ากรณีทดสอบหรือสถานการณ์การเพิ่มประสิทธิภาพจะไม่เป็นprohibitively costlyเช่นนั้น
InformedA

คำตอบ:


11

ที่จริงแล้วมันยาก แต่ฉันแน่ใจว่าในสถานการณ์ที่เทียบเคียงได้หลายอย่างมันเป็นปัญหาขององค์กรเป็นหลัก แนวทางปฏิบัติที่เป็นไปได้เพียงอย่างเดียวน่าจะเป็นส่วนผสมของมาตรการรวมกันไม่ใช่แค่ "กระสุนเงินอันเดียว" บางสิ่งที่คุณสามารถลองได้:

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

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

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

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

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

สรุปสาระสำคัญคือ - เมื่อคุณไม่สามารถลองและลองผิดลองถูกตัวเลือกที่ดีที่สุดของคุณคือการวางแผนล่วงหน้าแบบคลาสสิกและเทคนิคการควบคุมคุณภาพ


6

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

ดังนั้นคุณจะทำอย่างไร

ไม่ว่าจะเป็นกระบวนการคลัสเตอร์เซิร์ฟเวอร์หรือฐานข้อมูลปริมาณควรทดสอบด้วยศูนย์หนึ่งกฎอินฟินิตี้ในการแซวที่คอขวด / ข้อ จำกัด ที่มีศักยภาพไม่ว่าจะเป็น IO, CPU, โหลด CPU, อินเตอร์ - กระบวนการสื่อสารเป็นต้น

เมื่อคุณมีสิ่งนี้แล้วคุณควรเข้าใจว่าการทดสอบประเภทใดที่ได้รับผลกระทบ ถ้าเป็นการทดสอบแบบหน่วยนี่จะเป็นแบบดั้งเดิมกับผู้พัฒนาหากเป็นการทดสอบแบบรวม / ระบบอาจมีจุดสัมผัสกับทีมอื่น ๆ ที่อาจช่วยด้วยความเชี่ยวชาญเพิ่มเติมหรือเครื่องมือที่ดีกว่า

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

แน่นอนว่าช้างในห้องนั้นเป็นระบบที่ไม่สามารถคาดการณ์ได้เสมอไป!

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


0

ฉันขอแนะนำการทดลอง

การบันทึกจะพบคอขวด จากนั้นคุณสามารถลองใช้งานทางเลือกในเครื่องบางเครื่องหรือแม้กระทั่งในทุกเครื่องที่มีความน่าจะเป็นที่แน่นอนหรือในระยะเวลาที่ จำกัด จากนั้นเปรียบเทียบบันทึกอีกครั้งเพื่อตรวจสอบการปรับปรุง

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.