คำถามติดแท็ก test-automation

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

2
การทดสอบหน่วย Guava สร้างขึ้นโดยอัตโนมัติอย่างไร
Guava มีกรณีทดสอบหน่วยสร้างขึ้นโดยอัตโนมัติ : Guava มีจำนวนยูนิตทดสอบที่มาก: ณ เดือนกรกฎาคม 2012 แพ็คเกจทดสอบ Guava มีมากกว่า 286,000 กรณีทดสอบรายบุคคล สิ่งเหล่านี้ส่วนใหญ่สร้างขึ้นโดยอัตโนมัติไม่ใช่เขียนด้วยมือ แต่ความครอบคลุมในการทดสอบของ Guava นั้นละเอียดมากโดยเฉพาะ com.google.common.collect มันถูกสร้างขึ้นมาได้อย่างไร? มีการใช้เทคนิคและเทคโนโลยีใดในการออกแบบและสร้างสิ่งเหล่านั้น

4
วิธีแก้ปัญหาหรือทดสอบรหัสใหม่อย่างมีประสิทธิภาพเมื่อการตั้งค่าฮาร์ดแวร์เพื่อสร้างข้อบกพร่องเป็นเรื่องยากหรือเป็นไปไม่ได้ที่จะได้รับ?
ฉันทำงานที่ บริษัท ขนาดกลาง (พนักงาน 150 คน, ทีมวิศวกรขนาด 10 ~ คน) และโครงการส่วนใหญ่ของฉันเกี่ยวข้องกับการเชื่อมต่อกับอุปกรณ์ห้องปฏิบัติการ (oscilloscopes, เครื่องวิเคราะห์สเปกตรัมแบบออปติคอล ฯลฯ ) เพื่อวัตถุประสงค์ในการทดสอบแบบกึ่งอัตโนมัติ ฉันพบสถานการณ์ที่แตกต่างกันสองสามอย่างซึ่งฉันไม่สามารถแก้ไขปัญหาหรือทดสอบรหัสใหม่ได้อย่างมีประสิทธิภาพเพราะฉันไม่ได้ตั้งค่าฮาร์ดแวร์ให้ฉันอีกต่อไป ตัวอย่าง 1:การตั้งค่าที่กระบวนการ 10-20 "เบิร์นอิน" ทำงานอย่างอิสระโดยใช้เซ็นเซอร์ประเภทท็อปบัลลังก์ - ฉันสามารถรับเซ็นเซอร์หนึ่งตัวสำหรับการทดสอบและสามารถขโมยวินาทีในการจำลองการเชื่อมต่อทั้งหมดเพื่อจำลอง อุปกรณ์หลายอย่าง (การค้นหาการเชื่อมต่อการสตรีม ฯลฯ ) ในที่สุดข้อผิดพลาดปรากฏขึ้น (และในที่สุดก็ลงเอยอยู่ในอุปกรณ์เฟิร์มแวร์ & ไดรเวอร์) ที่ยากมากที่จะทำซ้ำอย่างถูกต้องด้วยหน่วยเดียว แต่เข้าใกล้ระดับ "โชว์จุก" เมื่อ 10-20 ของอุปกรณ์เหล่านี้ถูกใช้พร้อมกัน สิ่งนี้ยังคงไม่ได้รับการแก้ไขและกำลังดำเนินการอยู่ ตัวอย่างที่ 2:การทดสอบที่ต้องใช้เครื่องวิเคราะห์สเปกตรัมแสงที่มีราคาแพงเป็นองค์ประกอบหลักของมัน อุปกรณ์นั้นค่อนข้างเก่าล้าสมัยตามผู้ผลิตที่ได้รับมาจาก บริษัท ขนาดใหญ่และถูกทำลายโดยทั่วไปและเอกสารเพียงอย่างเดียวคือเอกสารที่ยืดยาว (และไม่เป็นทางการ) ที่ดูเหมือนจะแปลไม่ดี ในระหว่างการพัฒนาเริ่มต้นฉันสามารถเก็บอุปกรณ์ไว้ที่โต๊ะทำงานของฉันได้ แต่ตอนนี้มันเชื่อมโยงกันทั้งทางร่างกายและตามกำหนดเวลาในระหว่างการทดสอบตลอด 24 ชั่วโมงทุกวัน …

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

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

3
คุณจะทดสอบหน่วยหรือทำการทดสอบอัตโนมัติที่มีประสิทธิภาพมากที่สุดในรหัสกราฟิกสำหรับ OpenGL อย่างไร
ฉันกำลังเขียนเกมและเอ็นจิ้นกราฟิคประกอบบน OpenGL ใน C ++ ฉันยังเป็นแฟนของกระบวนการเข้ารหัสที่ดีและการทดสอบอัตโนมัติ การทดสอบรหัสกราฟฟิก + นั้นดูเหมือนจะไม่สามารถเปลี่ยนแปลงได้เนื่องจากผลลัพธ์มักจะเป็นเพียงการแสดงผลเท่านั้น ตัวอย่างเช่นลองนึกภาพการวิเคราะห์สตรีมรูปภาพดิบที่เรนเดอร์ไปที่หน้าจอไบต์ต่อไบต์ - คุณต้องทดสอบข้อมูลเพื่อเปรียบเทียบกับซึ่งยากที่จะสร้าง / รับและบ่อยครั้งที่รูปภาพที่แสดงไม่เหมือนกันใน ระดับไบต์เมื่อทำงานในเวลาที่ต่างกัน - การเปลี่ยนแปลงเล็กน้อยในอัลกอริทึมจะทำลายวิธีการนี้อย่างสมบูรณ์ ฉันกำลังคิดที่จะสร้างชุดทดสอบแบบเห็นภาพซึ่งโดยทั่วไปฉันสามารถสร้างฉากทดสอบที่แตกต่างกันแสดงสิ่งต่าง ๆ เช่นการทำแผนที่เงาภาพเคลื่อนไหว ฯลฯ ฯลฯ โดยเป็นส่วนหนึ่งของ CI ฉากเหล่านี้จะถูกแสดงเป็นวิดีโอ ไฟล์ (หรืออาจปล่อยไว้เป็นไฟล์ที่เรียกทำงานได้) ที่มีเมทริกต่างกัน สิ่งนี้จะยังคงต้องการการตรวจสอบไฟล์วิดีโอด้วยตนเอง แต่อย่างน้อยที่สุดมันก็ค่อนข้างอัตโนมัติและเป็นมาตรฐาน คุณคิดอย่างไร? ฉันหวังว่าจะมีวิธีที่ดีกว่า

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

3
คุณสมบัติใดบ้างที่ควรทดสอบผ่านการทดสอบ UI อัตโนมัติ
เมื่อเร็ว ๆ นี้เรามีที่ปรึกษาแจ้งว่าหากคุณลักษณะสามารถทดสอบได้ผ่านการทดสอบ UI อัตโนมัติเท่านั้น (เช่น Selenium, Coded UI) แสดงว่ามีปัญหาสถาปัตยกรรมพื้นฐาน ในขณะที่คำสั่งนี้อาจจะสุดขีดเล็กน้อยมันเป็นไปตามแนวเดียวกันของปิรามิดการทดสอบในการทดสอบ UI นั้นควรประกอบขึ้นเป็นส่วนเล็ก ๆ ของชุดทดสอบอัตโนมัติโดยรวมของคุณ ดังนั้นคุณสมบัติใดบ้างที่ควรมีการทดสอบ UI อัตโนมัติ ระบบที่มีสถาปัตยกรรมตรงประเด็นจะยังคงมีคุณสมบัติที่สามารถตรวจสอบได้ผ่านการทดสอบ UI หรือการทดสอบเหล่านี้ควรทำหน้าที่เป็น "แบ็คอัพ" สำหรับชุดของการทดสอบหน่วยและบริการหรือไม่

9
รหัสทดสอบคัดลอกและวาง: วิธีนี้แย่แค่ไหน?
งานปัจจุบันของฉันส่วนใหญ่เขียนโค้ดทดสอบ GUI สำหรับแอปพลิเคชันต่างๆที่เราใช้งาน อย่างไรก็ตามฉันพบว่าฉันมักจะคัดลอกและวางรหัสจำนวนมากในการทดสอบ เหตุผลสำหรับเรื่องนี้คือพื้นที่ที่ฉันทดสอบมีแนวโน้มที่จะคล้ายกันมากพอที่จะต้องมีการทำซ้ำ แต่ก็ไม่ได้คล้ายกันมากพอที่จะใส่รหัสลงในเมธอดหรือวัตถุ ฉันพบว่าเมื่อฉันพยายามใช้คลาสหรือวิธีการเพิ่มเติมอย่างกว้างขวางการทดสอบจะยุ่งยากมากขึ้นในการบำรุงรักษาและบางครั้งก็ยากที่จะเขียนตั้งแต่แรก แต่ฉันมักจะคัดลอกโค้ดทดสอบขนาดใหญ่จำนวนหนึ่งจากส่วนหนึ่งแล้ววางลงในอีกส่วนหนึ่งและทำการเปลี่ยนแปลงเล็กน้อยตามที่ฉันต้องการ ฉันไม่ได้ใช้วิธีการเข้ารหัสที่มีโครงสร้างมากขึ้นเช่นการใช้หลักการหรือฟังก์ชั่น OO มากขึ้น ผู้เขียนโค้ดคนอื่นรู้สึกเช่นนี้เมื่อเขียนรหัสทดสอบหรือไม่? เห็นได้ชัดว่าฉันต้องการที่จะปฏิบัติตามหลักการ DRY และ YAGNI แต่ฉันพบว่ารหัสทดสอบ (รหัสทดสอบอัตโนมัติสำหรับการทดสอบ GUI ต่อไป) สามารถทำให้หลักการเหล่านี้ยากที่จะปฏิบัติตาม หรือฉันต้องการเพียงแค่ฝึกฝนการเข้ารหัสและระบบโดยรวมที่ดีขึ้นในการทำสิ่งต่าง ๆ ? แก้ไข: เครื่องมือที่ฉันใช้คือ SilkTest ซึ่งเป็นภาษาที่เป็นกรรมสิทธิ์ที่ชื่อว่า 4Test เช่นกันการทดสอบเหล่านี้ส่วนใหญ่ใช้สำหรับเดสก์ท็อปของ Windows แต่ฉันได้ทำการทดสอบเว็บแอปโดยใช้การตั้งค่านี้เช่นกัน

3
ฉันสามารถใช้ Ruby เพื่อทำให้ทุกอย่างเป็นอัตโนมัติได้หรือไม่
ฉันเผชิญกับแอพพลิเคชั่นหลายประเภท (บนเว็บ, อิง GUI, บรรทัดคำสั่ง ฯลฯ ) บนแพลตฟอร์มต่างๆ (Windows, Linux และอื่น ๆ ) เพื่อให้ทำงานได้ทุกวัน มีโอกาสที่ดีสำหรับฉันที่จะทำงานอัตโนมัติโดยการเขียนสคริปต์ แต่แอปพลิเคชันและแพลตฟอร์มเกือบทุกประเภทมีภาษาหรือเครื่องมือการเขียนสคริปต์ดั้งเดิม (เช่นVBScriptและPowerShellสำหรับ Windows, สคริปต์ Bash สำหรับ Linux, ซีลีเนียมสำหรับเว็บแอปพลิเคชันและAutoItสำหรับแอปพลิเคชัน GUI เป็นต้น) มันฆ่าฉันให้เรียนรู้และบำรุงรักษาภาษาสคริปต์มากมาย ฉันมีความรู้สึกว่าทับทิมสามารถทำงานร่วมกับแพลตฟอร์มต่าง ๆ ได้อย่างง่ายดายและเป็นสิ่งที่แสดงออกมาก ดังนั้นคำถามของฉันคือ: เป็นไปได้ไหมที่จะใช้ Ruby เพื่อเขียนสคริปต์ทุกอย่าง ถ้าเป็นเช่นนั้นข้อเสียเปรียบหลักเมื่อเปรียบเทียบกับภาษาสคริปต์ของแต่ละแพลตฟอร์มคืออะไร

6
ขั้นตอนใดของ Agile (SCRUM) ที่เราควรเริ่มสร้างการทดสอบระบบอัตโนมัติ
พื้นหลังเล็กน้อยของฉัน - ฉันเป็นผู้ทดสอบด้วยตนเองเป็นเวลาเกือบ 2 ปีในสภาพแวดล้อม Agile โดยใช้ SCRUM (1-2 สัปดาห์ในการวิ่ง) ดังนั้นฉันต้องการที่จะแนะนำการทดสอบระบบอัตโนมัติในงานของฉันโดยใช้ Selenium WebDriver (กับ Java) คำถามของฉันอยู่ในระหว่างเมื่อฉันควรทดสอบการทำงานด้วยตนเองและเมื่อฉันควรแปลงพวกเขาสำหรับการทดสอบอัตโนมัติ ฉันได้อ่านและรับแนวทางที่แตกต่างเช่น: เมื่อเริ่มการวิ่งใหม่ให้แปลงเรื่องราวของผู้ใช้เป็นสคริปต์อัตโนมัติจากการวิ่งก่อนหน้านี้หรือ; แปลงเรื่องราวของผู้ใช้ภายในการวิ่งเดียวกัน คำแนะนำใด ๆ / s จะได้รับการชื่นชมอย่างมาก ขอบคุณล่วงหน้า.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.