เจ้าหน้าที่ QA จะทดสอบตรรกะการแคชที่พวกเขามองไม่เห็นได้อย่างไร


33

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

หนึ่งความคิดที่ฉันมีคือการใส่การบันทึกในวิธีการที่เรียกใช้รหัสที่เติมแคชและบันทึกเมื่อวัตถุถูกดึงออกมาจากแคชและเมื่อมันต้องการนันทนาการจากฐานข้อมูลจากนั้นผู้ทดสอบสามารถดูบันทึกเพื่อดูว่า ตัวอย่างเช่นวัตถุบางอย่างถูกโหลดใหม่จาก db ทุก ๆ 10 นาทีแทนที่จะดูทุกหน้า

แต่ทุกคนสามารถแนะนำวิธีปฏิบัติที่ดีกว่าสำหรับสถานการณ์นี้ได้ไหม


6
ที่เกี่ยวข้อง: วิธีทดสอบโหลด
gnat


5
ฉันทำงานกับการแสดงตลอดทั้งวันและ "QA จะทดสอบการเปลี่ยนแปลงของคุณได้อย่างไร" เป็นคำถามที่ฉันถูกถามอย่างต่อเนื่อง
Brandon

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

คำตอบ:


37

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

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

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


+1 สำหรับการทดสอบประสิทธิภาพแทนการแคช มูลค่าทางธุรกิจอะไรแคชด้วยตัวเอง? (ไม่มี) แน่นอนว่าคุณกำลังทำงานเพื่อส่งผลกระทบต่อสิ่งที่เห็นได้ชัด - ทำไมคุณถึงใช้เวลากับการติดตั้งมัน? ทดสอบผลกระทบนั้น
alexanderbird

74

คุณใช้แคช (ฉันถือว่า) เพราะระบบทำงานได้ไม่ดีพอ นั่นคือสิ่งที่เกี่ยวข้องกับผู้ใช้ นี่คือสิ่งที่ QA สามารถตรวจสอบได้:

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

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


1
การระบุว่า QA ไม่สนใจว่าคุณจะแก้ปัญหาอย่างไรนั้นเป็นมุมมองที่ง่ายมากเกี่ยวกับสิ่งที่ QA สนใจพวกเขาสนใจว่าคุณปรับปรุงประสิทธิภาพการทำงานจริงหรือไม่แนะนำหนี้ทางเทคนิคความเสี่ยงหรือข้อบกพร่องอื่น ๆ
Eric

4
@Eric ในการพัฒนาซอฟต์แวร์ "QA" เป็นกลุ่มที่ไม่ได้อ้างถึงนักพัฒนา / วิศวกร หนี้ด้านเทคนิคเป็นข้อกังวลของนักพัฒนา / วิศวกร (และความกังวลด้านการจัดการเนื่องจากอาจส่งผลกระทบต่อระยะเวลาต้นทุน ฯลฯ ) เช่นเดียวกับความเสี่ยง งานของ QA คือการทำให้แน่ใจว่าซอฟต์แวร์ตรงตามข้อกำหนด (และอาจช่วยในกระบวนการล้างข้อกำหนดที่ไม่ชัดเจน) หากพวกเขาสนใจเกี่ยวกับการนำไปใช้งานทั้งหมดมันควรจะเป็นเพียงวิธีการหาวิธีที่สร้างสรรค์ในการทำลายระบบ
jpmc26

3
@Eric ฉันไม่สับสนอะไร "ควบคุม" ไม่หมายถึงการทดสอบซอฟต์แวร์ คุณกำลังตีความคำศัพท์อย่างกว้าง ๆ ว่าควรรวม บริษัท ทั้งหมดที่พัฒนาซอฟต์แวร์และแม้แต่ลูกค้าหากเป็นระบบที่สร้างขึ้นเองสำหรับพวกเขาเนื่องจากทุกคนมีมือที่มีคุณภาพ
jpmc26

1
@Eric โปรดอย่าทำให้ฉันเถียงว่าภาษาและซีแมนทิกส์ทำงานกับคุณอย่างไร ฉันขอท้าให้คุณค้นหา 5 อินสแตนซ์บน StackExchange นี้โดยที่คำนั้นถูกใช้ในเวลาน้อยกว่า 30 นาที นอกจากนี้แม้จะมีคำจำกัดความที่ดีที่สุดกลุ่มควบคุมคุณภาพที่แยกต่างหากสามารถทำเพื่อแก้ไขปัญหาที่นอกเหนือจากผลิตภัณฑ์ตัวเองคือการกำหนดนโยบายเกี่ยวกับนักพัฒนาและเมื่อนโยบายและกระบวนการมีการยกระดับข้างต้นทำผลิตภัณฑ์ที่ดีคุณมักจะจบลงด้วยผลิตภัณฑ์ที่ไม่ดี นอกจากนี้ฉันสามารถรับรองได้ว่าคน "QA" ที่ฉันทำงานด้วยมากที่สุดคือผู้ทดสอบและมีเพียงเล็กน้อยที่พูดเกี่ยวกับกระบวนการพัฒนาของฉัน
jpmc26

4
@Eric: ไม่มีสิ่งใดที่จะหยุด บริษัท หรือกลุ่มคนที่นิยาม "QA" ให้เป็นมุมมองแบบองค์รวมมากขึ้น อย่างไรก็ตามจากประสบการณ์ของฉัน (ใน 5 บริษัท ที่แตกต่างกันมาก) เวที QA ในชื่อและผู้ที่เชี่ยวชาญในการพัฒนาซอฟต์แวร์มักจะเน้นการทดสอบพฤติกรรมของระบบ ในขณะที่เราอาจมี "การควบคุมคุณภาพ" "ควาลิตี"และชื่อที่คิดค้นขึ้นเพื่อครอบคลุมมุมผู้เชี่ยวชาญในเรื่องคุณภาพที่กว้างขึ้น
Neil Slater

3

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

ตัวเลือกหนึ่งที่มีแคชคือการเปิดเผยหน้าพิเศษที่ให้รายละเอียดบางอย่างเกี่ยวกับแคช (เนื้อหาสถานะ ฯลฯ ) สิ่งนี้สามารถช่วยในการดีบักในการพัฒนาและอาจเกิดขึ้นในการผลิต QA ยังสามารถใช้หน้านี้เพื่อสร้างกรณีทดสอบสำหรับแคชหากพวกเขาได้รับรายละเอียดเกี่ยวกับลักษณะการทำงานที่คาดไว้ของแคช การใช้เคาน์เตอร์วัดประสิทธิภาพและ / หรือไฟล์บันทึกเพื่อบันทึกลักษณะการทำงานแคชอย่างชัดเจนเป็นแนวทางที่มองเห็นได้น้อยกว่า

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

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


3

ทดสอบประสิทธิภาพตามที่ระบุไว้ในคำตอบของ Andy

ฉันพบว่าอุปสรรคที่ใหญ่ที่สุดในการใช้งานแคช (และประสิทธิภาพ) ในหลาย ๆ องค์กรนั้นคือการมีสภาพแวดล้อมที่คุณสามารถทำการทดสอบประสิทธิภาพที่ดีและทำการทดสอบเพื่อทดสอบภาระและการทดสอบประสิทธิภาพต่างๆ

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

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

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

ต้องมีความชัดเจน

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

คุณอาจพบว่าลิงก์ต่อไปนี้มีประโยชน์:


2

อย่าลืมให้ผู้ทดสอบทำการรีบู๊ตเซิร์ฟเวอร์และตรวจสอบว่าข้อมูลที่พวกเขาป้อนยังคงอยู่ที่นั่น ฉันเห็นระบบที่มีการทดสอบหลายเดือนหลายคนล้มเหลวเมื่อทำเสร็จ!

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

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


1

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

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

ฯลฯ ...


0

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


0

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

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


-4

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


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