การทดสอบส่วนต่อประสานผู้ใช้อัตโนมัติแก้ปัญหาอะไร


23

ขณะนี้เรากำลังตรวจสอบการทดสอบส่วนต่อประสานผู้ใช้แบบอัตโนมัติ (ขณะนี้เราทำการทดสอบหน่วยอัตโนมัติและการรวมระบบ)

เราได้ดูที่ Selenium และ Telerik และได้ตัดสินในภายหลังว่าเป็นเครื่องมือที่เลือกเนื่องจากมีความยืดหยุ่นมากกว่าเครื่องบันทึก - และเราไม่ต้องการให้ผู้ทดสอบเขียนโค้ดมากเกินไป

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

ระบบของเราอยู่ระหว่างการพัฒนาอย่างต่อเนื่องและเราจะเปิดตัวเวอร์ชั่นใหม่ของแพลตฟอร์ม (บนเว็บ) ของเรา

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

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


4
คำว่า "การทดสอบอัตโนมัติ" ไม่ได้หมายความถึงปัญหาที่พยายามแก้ไขใช่หรือไม่ // OTOH ถ้าคุณถามเกี่ยวกับ ROI ที่แนบมากับ "การทดสอบอัตโนมัติ" นั่นเป็นคำถามที่แตกต่างออกไป ...
Jim G.

คำตอบ:


24

เมื่อทีมของฉันติดตั้ง UI อัตโนมัติทดสอบสิ่งที่ยอดเยี่ยมมากมายก็เกิดขึ้น

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

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

ประการที่สามทีม QA มีเวลามากขึ้น ด้วยเวลาพิเศษนี้พวกเขาสามารถนั่งในการประชุมที่มีการออกแบบมากขึ้น ในทางกลับกันทำให้พวกเขาเขียนเคสทดสอบใหม่ในเวลาเดียวกันขณะที่ Devs กำลังเขียนโค้ดคุณลักษณะใหม่เหล่านั้น

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

สิ่งสุดท้ายที่เราพบคือการปรับแต่งโดยทีมงาน QA เราสามารถทำการทดสอบการฉีด SQL บนแอพของเรา เราพบช่องโหว่บางอย่างที่เราสามารถแก้ไขได้อย่างรวดเร็ว

การตั้งค่าชุดทดสอบ UI ใช้เวลาพอสมควร แต่เมื่อมันอยู่ที่นั่นมันก็กลายเป็นส่วนสำคัญของกระบวนการพัฒนาของเรา


1
+1 สำหรับการอธิบายขั้นตอนในการสร้างการทดสอบล้มเหลวเป็นที่แท้จริงในกระบวนการ (จุดที่สองของคุณ)
IThasTheAnswer

ปัญหาหนึ่ง: ไม่ทดสอบหน่วย UI บล็อกการเปลี่ยนแปลงที่อาจเกิดขึ้นใน UI [ล็อคคุณใน] ... แม้ว่าฉัน upvoted เพราะคุณอธิบายถึงประโยชน์ในทางที่รันไทม์โดยรวมของแอปพลิเคชันจะถูกตรวจสอบโดยการทดสอบหน่วยมากกว่า ส่วนประกอบแต่ละส่วนของระบบที่กำลังทดสอบ
พระสงฆ์

@monksy - ชุดทดสอบที่เราใช้ (ฉันจำไม่ได้ว่ามันเป็นชื่อสำหรับชีวิตของฉัน) ไม่ได้มีการประสานงาน มันฉลาดพอที่จะใช้รหัสองค์ประกอบ ตราบใดที่เราให้ชื่อองค์ประกอบ UI ทั้งหมดของเราและเก็บชื่อเหล่านั้นไว้ผ่านการแก้ไขการออกแบบกรณีทดสอบยังคงใช้ได้ เราจ่ายเงินนิดหน่อยสำหรับซอฟต์แวร์นั้น แต่เรารู้สึกว่าคุณสมบัตินั้นคุ้มค่า
Tyanna

1
@Tyanna เชื่อฉันในสิ่งนี้ ... มันเป็น ฉันพยายามทำการทดสอบ UI โดยอัตโนมัติ [สำหรับการทดสอบถอยหลัง] ตามสถานที่ตั้ง นั่นไม่ได้ผลและค่อนข้างน่าผิดหวัง Btu ฉันหมายถึงการย้ายองค์ประกอบ arround เปลี่ยนมุมมอง / ui และ UIs
themeable

13

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

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

การมีการทดสอบรันโดยอัตโนมัติบนบิลด์เซิร์ฟเวอร์ (อย่างน้อยวันละครั้ง) เป็นสิ่งที่ต้องมีแน่นอน

เราไม่ต้องการให้ผู้ทดสอบเขียนโค้ดมากเกินไป

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


13

และเราไม่ต้องการให้ผู้ทดสอบเขียนโค้ดมากเกินไป

เราใช้วิธีตรงกันข้าม เราต้องการให้ผู้เขียนโค้ดทดสอบ

นี่คือขั้นตอนการทำงานที่เราเริ่มนำมาใช้ ไม่ใช่เรื่องง่ายที่จะทำเช่นนี้เพราะการจัดการไม่ได้ขึ้นอยู่กับการทดสอบอัตโนมัติของส่วนหน้า พวกเขายินดีที่จะชำระสำหรับ "ใกล้พอ"

  1. เรื่องราวของผู้ใช้

  2. แนวคิดการดำเนินงาน เรื่องราวน่าจะเป็นไปได้อย่างไร มาดูการออกแบบกันอีกที.

  3. ภาพร่างหน้าจอ: การออกแบบ UI มันจะมีลักษณะอย่างไร

  4. สคริปต์ซีลีเนียม หากสคริปต์ทั้งหมดทำงานได้เราจะดำเนินการให้เสร็จสมบูรณ์

  5. การเข้ารหัสและการทดสอบจนกว่าสคริปต์จะทำงาน

การทดสอบอัตโนมัติเป็นวิธีเดียวที่จะพิสูจน์ว่ามีฟังก์ชันการทำงานอยู่

การทดสอบด้วยตนเองนั้นมีแนวโน้มที่จะเกิดข้อผิดพลาดและอาจมีการแทนที่การจัดการ: "ดีพอการทดสอบที่ล้มเหลวนั้นไม่สำคัญเท่าการปล่อยให้ตรงเวลา"

"ไม่มีคุณสมบัติของโปรแกรมใด ๆ หากไม่มีการทดสอบอัตโนมัติ"

การนำเสนอด้วยภาพเป็นอีกเรื่องหนึ่ง การทดสอบแบบเลย์เอาท์ด้วยตนเองเป็นกรณีพิเศษเนื่องจากอาจเกี่ยวข้องกับการพิจารณาด้านความงามหรือการดูปัญหาเฉพาะ (เล็ก) ในขนาดใหญ่มากและซับซ้อนพิกเซล


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

3
@ S.Lott: การทดสอบด้วยตนเองน่าจะ การทดสอบอัตโนมัติดี แต่ไม่ใช่ทุกอย่าง ไม่สามารถตรวจพบโหมดข้อผิดพลาดที่ไม่คาดคิดมากมาย (เช่นปัญหาการจัดวาง) และฉันจะบอกว่าการยึดถือหลักนิยมที่แสดงในสองประโยคสุดท้ายนั้นเป็นการต่อต้าน
Michael Borgwardt

11
Automated testing is the only way to demonstrate that the functionality exists.ไม่มันไม่ใช่ การทดสอบเชิงสำรวจหรือการทดสอบที่ดำเนินการเองแสดงให้เห็นถึงการทำงานที่มีอยู่ มันไม่ดีเท่าการทดสอบอัตโนมัติ แต่การทดสอบอัตโนมัติไม่ใช่วิธีเดียวในการทดสอบ
StuperUser

1
@ S.Lott - Michael และ StuperUser พูดถูก การทดสอบด้วยตนเองและการสำรวจอย่างมีประสิทธิภาพ
Lyndon Vrooman

1
-1 สำหรับการนับถือหลักเดิมตามที่ Michael กล่าวไว้ ดูjoelonsoftware.com/items/2007/12/03.htmlสำหรับคำอธิบายว่าทัศนคตินั้นไร้สาระมากเพียงใดเมื่อนำไปสู่ข้อสรุปเชิงตรรกะ
Mason Wheeler

5

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

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

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


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

@Tunic - เรากำลังใช้ Silverlight ในโครงการปัจจุบันของเราและฉันกำลังเขียนการทดสอบบางอย่างในขณะนี้ที่ตรวจสอบการเชื่อมระหว่าง XAML และรหัสมุมมอง C # นี่หมายถึงว่าผู้ทดสอบของเราไม่จำเป็นต้องตรวจสอบว่าค่าที่ป้อนนั้นมีรูปแบบที่ถูกต้อง ฯลฯ เป็นวันแรก ๆ แต่ก็มีแนวโน้ม
ChrisF

5

เราได้ดูที่ Selenium และ Telerik และได้ตัดสินในอันดับหลังว่าเป็นเครื่องมือที่ดีที่สุดเนื่องจากมีความยืดหยุ่นมากกว่า

ฉันไม่แน่ใจว่าคุณได้ตรวจสอบมากแค่ไหน มีตัวเลือกอื่น ๆ เช่นกัน คุณเคยดูWatir , WatiN , Sikuliหรือไม่?

และเราไม่ต้องการให้ผู้ทดสอบเขียนโค้ดมากเกินไป

ฉันรู้สึกแย่กับคนที่ต้องรักษาสคริปต์เหล่านี้ ส่วนใหญ่แล้วหากไม่มีรหัสที่สามารถแก้ไขได้ง่ายสคริปต์ก็จะบอบบางและเริ่มใช้เวลาในการแก้ไขสคริปต์นานกว่าที่จะบันทึกอีกครั้งซึ่งทำให้เสียเวลามากขึ้น

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

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

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

มันเป็นประโยชน์หลักและถ้าตั้งค่าอย่างถูกต้องสามารถทดสอบเบราว์เซอร์ส่วนใหญ่ที่คุณต้องการด้วยการเปลี่ยนแปลงการกำหนดค่าเล็กน้อย

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

ตามที่ระบุไว้ก่อนหน้านี้การทดสอบอัตโนมัติใช้ความพยายามอย่างมากอย่างไรก็ตามเมื่อทำอย่างถูกต้องฉันยังไม่ได้พบกับทีมที่พูดว่า"ฉันหวังว่าเราไม่ได้ตั้งค่าการทดสอบอัตโนมัติของเรา"


2
+1 โดยเฉพาะอย่างยิ่งสำหรับ "ฉันรู้สึกไม่ดีสำหรับคนที่ต้องดูแลสคริปต์เหล่านี้" รหัสที่ออกแบบมาอย่างดีเป็นส่วนสำคัญในการเขียนการทดสอบ UI ที่คงอยู่ได้โดยเฉพาะกับ UI ที่เปลี่ยนแปลงบ่อย หากผู้ทดสอบของ OP ไม่สามารถใช้ Page Objects หรือรหัสที่นำมาใช้ซ้ำฉันจะแนะนำ OP อย่างจริงจังให้พิจารณาเฉพาะ UI ที่เสถียรโดยอัตโนมัติ (ถ้ามี)
Ethel Evans

3

คุณพูดถูกว่าการถดถอยเป็นเรื่องใหญ่ ยัง -

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

  • เราได้ใช้สคริปต์ทดสอบอัตโนมัติซ้ำสำหรับการโหลดข้อมูลเพื่อที่เราจะได้ไม่ต้องทำให้ฐานข้อมูลทำการทดสอบขนาดใหญ่

  • การทดสอบประสิทธิภาพ

  • การทดสอบหลายเธรด

  • บนระบบเว็บ - การสลับระหว่างเบราว์เซอร์และการสลับระหว่างระบบปฏิบัติการ ด้วยปัญหาความสอดคล้องของเบราว์เซอร์การกดปุ่มให้กว้างที่สุดเท่าที่จะทำได้เป็นเรื่องใหญ่

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


+1 สำหรับจุดแรกของคุณ สำคัญอย่างยิ่งสำหรับชุดทดสอบอัตโนมัติที่ประสบความสำเร็จ!
Lyndon Vrooman

ใช่เห็นด้วยจุดแรก ได้พิจารณาคะแนนที่สองและที่สามจริง ๆ แล้ว แต่ฉันคิดว่านี่เป็นจุดที่ Telerik ล้มลง สคริปต์ซีลีเนียม (คนที่เรียบง่าย ableit) สามารถนำมาใช้โดย BroswerMob
IThasTheAnswer

3

เพียงตัวอย่างเดียว: การวัดระยะเวลาในการแสดงผลหน้าเว็บอย่างแม่นยำ

การใช้การทดสอบระบบอัตโนมัตินั้นง่ายกว่าการทดสอบประสิทธิภาพของเว็บเบราว์เซอร์ ในการวัดเวลาตอบสนองสูงสุดที่คุณน่าจะยอมรับเพียงตั้งค่าคงที่ในสคริปต์ทดสอบของคุณและ / หรือส่งผ่านเป็นพารามิเตอร์ฟังก์ชันเช่นใน pseudocode นี้: $ sel-> wait_for_page_to_load ($ mypage, $ maxtime)

การทดสอบข้ามเบราว์เซอร์ด้วยค่าที่ต่ำสามารถให้ความกระจ่างได้

ทางเลือกอื่นคือให้พนักงานวัดเวลาด้วยนาฬิกาจับเวลา


3

การทดสอบส่วนต่อประสานผู้ใช้แบบอัตโนมัติช่วยแก้ปัญหาความสามารถในการ:

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

อย่างไรก็ตามตามที่คนอื่น ๆ ได้สังเกต:

Telerik ...

เครื่องมือที่เลือกเนื่องจากตัวบันทึกที่ยืดหยุ่นมากขึ้น

เป็นธงสีแดงสำหรับพวกเราหลายคน

สคริปต์ที่บันทึกด้วยวิธีนี้มักจะไม่ใช่วิธีแก้ปัญหาระยะยาวเพราะ:

  • ID ฐานข้อมูล / วัตถุมีแนวโน้มที่จะเปลี่ยนจากกรณีที่กรณี
  • สคริปต์ที่บันทึกด้วยตนเองมักใช้แท็กเลย์เอาต์ของเพจที่เปลี่ยนแปลงบ่อย
  • การกระทำทั่วไปจะต้องมีการเขียนซ้ำแล้วซ้ำอีกแทนที่จะอนุญาตให้นำกลับมาใช้ใหม่ (ดูวิธี SitePrism & PageObject)
  • บางครั้งคุณจำเป็นต้องใช้เครื่องมือเช่น xpath เพื่อดึงข้อมูลเพิ่มเติมตามข้อมูลหน้าปัจจุบัน สคริปต์ที่บันทึกง่าย ๆ จะไม่ทำสิ่งนี้
  • นักพัฒนาและผู้ทดสอบที่เขียนรหัสจะไม่ได้รับการสนับสนุนให้ใช้คลาส CSS, แอตทริบิวต์ข้อมูลของ ID และ HTML5 ซึ่งเป็นแนวทางปฏิบัติที่จะนำไปสู่การทดสอบที่มีประสิทธิภาพและบำรุงรักษาได้มากขึ้น

Telerik มีข้อดีบางประการที่ควรพิจารณา:

  • มุ่งเป้าไปที่ลูกค้ามือถือ
  • เครื่องมือที่สร้างขึ้นเพื่อจัดการการเติบโต
  • รองรับ Android, iOS และ Windows Phone

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


2

มันทำให้ "การทดสอบผู้เชี่ยวชาญ" (คล้ายกับ "การทดสอบเชิงสำรวจ" แต่ดำเนินการโดยผู้ใช้ปลายทางหรือสมาชิกของทีมที่มีความรู้ทางธุรกิจมากมาย) ง่ายต่อการดำเนินการบันทึกผลการวัดและดำเนินการอัตโนมัติ


2

ฉันมาที่นี่จากพื้นหลังที่แตกต่างกัน ที่อดีตนายจ้างของฉันเราได้พัฒนาเครื่องมือทดสอบอัตโนมัติเชิงพาณิชย์ (QALoad, QARun, TestPartner, SilkTest, SilkPerfomer)

เราเห็นว่าการทดสอบ UI อัตโนมัติเป็นการเติมสองบทบาท

  1. การทดสอบการถดถอยแบบเต็ม

  2. การตั้งค่าสภาพแวดล้อมการทดสอบอัตโนมัติ

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

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

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


2

การทดสอบอัตโนมัติทุกชนิดให้การทดสอบการถดถอย โดยเรียกใช้การทดสอบที่ใช้ในการทำงานคุณตรวจสอบว่ามันยังคงทำงาน (หรือไม่) โดยไม่คำนึงถึงสิ่งที่คุณได้เพิ่ม สิ่งนี้เป็นจริงไม่ว่าการทดสอบเป็นการทดสอบการรวมระบบ (ซึ่งมักจะไม่แตะ UI) หรือ AAT (ซึ่งมักจะต้องใช้ UI)

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

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


0

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

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

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


-1

จากประสบการณ์ของฉันการทดสอบส่วนต่อประสานผู้ใช้แบบอัตโนมัติครอบคลุมช่องว่างมากมาย ได้แก่ :

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

1
มันช่วยได้อย่างไรกับสิ่งเหล่านี้? มันจะดีถ้าคุณสามารถอธิบายรายละเอียดเล็กน้อย
Hulk

-1

ฉันต้องการแบ่งปันประสบการณ์ของทีมของเรา เราได้ใช้เครื่องมือทดสอบ UI ของเราสกรีนสกรีนเพื่อทดสอบแอพพลิเคชั่นเว็บและลูกค้าของเรา ได้พิสูจน์ตัวเองแล้วว่าเป็นทางเลือกที่เป็นประโยชน์สำหรับSeleniumสำหรับงานทดสอบ visual / CSS Screenster เป็นเครื่องมือทดสอบระบบอัตโนมัติซึ่งทำการเปรียบเทียบภาพหน้าจอของหน้าเว็บของคุณในเวอร์ชันต่างๆ ก่อนอื่นมันจะสร้างพื้นฐานที่มองเห็นได้สำหรับหน้าภาพหน้าจอสำหรับการกระทำของผู้ใช้แต่ละคน ในระหว่างการดำเนินการครั้งต่อไปจะใช้ภาพหน้าจอใหม่ในแต่ละขั้นตอนเปรียบเทียบกับภาพเดียวจากพื้นฐานและเน้นความแตกต่าง

เมื่อรวมเข้าด้วยกัน Screenter จะมีข้อดีดังต่อไปนี้: Visual Baseline: จับภาพหน้าจอสำหรับแต่ละขั้นตอนของผู้ใช้ในระหว่างการทดสอบการบันทึกการเปรียบเทียบภาพหน้าจอ: Screenter เปรียบเทียบภาพที่บันทึกระหว่างการเล่นกับผู้เล่นจากพื้นฐาน องค์ประกอบ CSS บนภาพหน้าจอและดำเนินการกับมัน - เช่นทำเครื่องหมายเป็นละเว้นพื้นที่เพื่อแยกออกจากการเปรียบเทียบเพิ่มเติม

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