คำถามติดแท็ก user-interface

คำถามเกี่ยวกับการโต้ตอบของซอฟต์แวร์กับผู้ใช้ที่เป็นมนุษย์

14
เครื่องมือแก้ไขโค้ดสามารถบอกใบ้ถึงระดับการซ้อนโค้ดอย่างไรโดยไม่ต้องใช้การเยื้อง [ปิด]
ฉันได้เขียนโปรแกรมแก้ไขข้อความ XMLที่ให้ 2 ตัวเลือกมุมมองสำหรับข้อความ XML เดียวกันหนึ่งเยื้อง (จริง), อื่น ๆ ชิดซ้าย แรงจูงใจสำหรับมุมมองที่ถูกต้องทางซ้ายคือการช่วยให้ผู้ใช้เห็น 'อักขระช่องว่างที่พวกเขากำลังใช้สำหรับการเยื้องของข้อความธรรมดาหรือรหัส XPath โดยไม่มีการแทรกแซงจากการเยื้องซึ่งเป็นผลข้างเคียงโดยอัตโนมัติของบริบท XML ฉันต้องการที่จะให้เบาะแสที่มองเห็น (ในส่วนที่ไม่สามารถแก้ไขได้ของการแก้ไข) สำหรับโหมดชิดซ้ายที่จะช่วยให้ผู้ใช้ แต่ไม่ได้รับการทำอย่างละเอียดเกินไป ฉันลองใช้สายเชื่อมต่อ แต่มันดูยุ่งเกินไป สิ่งที่ดีที่สุดที่ฉันเคยได้รับมาจนถึงตอนนี้แสดงอยู่ในสกรีนช็อตของเครื่องมือแก้ไขด้านล่าง แต่ฉันกำลังมองหาทางเลือกที่ดีกว่า / ง่ายกว่า (ซึ่งไม่ต้องการรหัสมากเกินไป) [แก้ไข] รับแนวคิด heatmap (จาก: @jimp) ฉันได้รับสิ่งนี้และ 3 ทางเลือก - ระบุว่า a, b และ c: ส่วนต่อไปนี้อธิบายคำตอบที่ยอมรับว่าเป็นข้อเสนอโดยรวบรวมแนวคิดจากคำตอบและความคิดเห็นอื่นจำนวนมาก เนื่องจากคำถามนี้เป็นวิกิชุมชนตอนนี้โปรดอย่าลังเลที่จะอัปเดต NestView ชื่อสำหรับแนวคิดนี้ซึ่งมีวิธีการแสดงภาพเพื่อปรับปรุงความสามารถในการอ่านของโค้ดที่ซ้อนกันโดยไม่ต้องใช้การเยื้อง เส้นโค้ง ชื่อของเส้นที่แรเงาแตกต่างกันภายใน NestView ภาพด้านบนแสดง NestView ที่ใช้เพื่อช่วยให้เห็นภาพตัวอย่าง …

25
ควรใช้การตรวจสอบความถูกต้องของที่อยู่อีเมลไกลแค่ไหน
ฉันสงสัยว่าผู้คนควรตรวจสอบที่อยู่อีเมลได้ไกลแค่ไหน ฟิลด์ของฉันคือการพัฒนาเว็บเป็นหลัก แต่สิ่งนี้ใช้ได้กับทุกที่ ฉันเห็นบางแนวทางแล้ว: เพียงตรวจสอบว่ามี "@" อยู่ซึ่งตายง่าย แต่แน่นอนว่าไม่น่าเชื่อถือ การทดสอบ regex ที่ซับซ้อนมากขึ้นสำหรับรูปแบบอีเมลมาตรฐาน regex เต็มรูปแบบกับRFC 2822 - มีปัญหากับเรื่องนี้ก็คือมักจะเป็นอีเมลอาจจะถูกต้อง แต่มันอาจจะไม่ได้เป็นสิ่งที่ผู้ใช้มีความหมาย การตรวจสอบ DNS การตรวจสอบ SMTP ตามที่หลายคนอาจรู้ (แต่หลายคนไม่เข้าใจ) ที่อยู่อีเมลอาจมีการเปลี่ยนแปลงที่แปลกประหลาดมากมายที่คนส่วนใหญ่มักจะไม่พิจารณา (ดูRFC 2822 3.4.1 ) แต่คุณต้องคิดถึงเป้าหมายของ การตรวจสอบของคุณ: คุณเพียงแค่พยายามทำให้แน่ใจว่าข้อความอีเมลสามารถส่งไปยังที่อยู่หรือว่าเป็นสิ่งที่ผู้ใช้อาจจะใส่ (ซึ่งไม่น่าจะเป็นในกรณีที่คลุมเครือมากขึ้น) ที่อยู่ ') ตัวเลือกที่ฉันพิจารณาคือเพียงแค่ให้คำเตือนด้วยที่อยู่ที่ลึกลับ แต่ก็ยังอนุญาตให้ดำเนินการตามคำขอได้ แต่สิ่งนี้จะเพิ่มความซับซ้อนให้กับฟอร์มและผู้ใช้ส่วนใหญ่มีแนวโน้มที่จะสับสน ในขณะที่การตรวจสอบความถูกต้อง DNS / การตรวจสอบ SMTP ดูเหมือนไม่มีปัญหา แต่ฉันพบปัญหาที่เซิร์ฟเวอร์ DNS / เซิร์ฟเวอร์ SMTP หยุดทำงานชั่วคราวและผู้ใช้ไม่สามารถลงทะเบียนที่ไหนสักแห่งหรือเซิร์ฟเวอร์ SMTP …

17
เป็นความคิดที่ดีหรือไม่ที่จะออกแบบสถาปัตยกรรมที่คิดว่าคลาส User Interface สามารถถูกแทนที่ด้วยอินเตอร์เฟสบรรทัดคำสั่งได้?
ใน Code Complete หน้า 25 มีการกล่าวกันว่าเป็นความคิดที่ดีที่จะสามารถแทนที่คลาสส่วนติดต่อผู้ใช้ทั่วไปด้วยบรรทัดคำสั่งหนึ่งได้อย่างง่ายดาย รู้ถึงข้อดีของการทดสอบแล้วจะเกิดปัญหาอะไรขึ้น งานพิเศษนี้จะได้ผลตอบแทนจริงสำหรับเว็บและโครงการมือถือ โครงการขนาดกลางและเล็ก ใช้กฎเดียวกันนี้อย่างไร เกิดอะไรขึ้นถ้ามันทำให้การออกแบบของคุณซับซ้อนมากขึ้น?

24
ทำไมโปรแกรมเมอร์บางคนถึงเกลียดการเป็นส่วนหนึ่งของการพัฒนา UI? [ปิด]
โปรแกรมเมอร์จำนวนมากที่ฉันพบเจอมักจะพูดว่า "เขาไม่ใช่คน UI" ความจริงก็คือการพัฒนาในปัจจุบันไม่ว่าจะเป็นเว็บ, Windows, Linux, OSX หรือการพัฒนารูปแบบอื่น ๆ ในปัจจุบันประกอบด้วยซอฟต์แวร์ที่มี UI ที่ดูดี ทำไมนักพัฒนาหลายคนถึงไม่รู้สึกว่า UI ทำงาน?

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

6
ควรแสดงข้อมูลเกี่ยวกับข้อผิดพลาดแก่ผู้ใช้มากน้อยเพียงใด
แอปพลิเคชันสามารถโยนข้อผิดพลาดได้เสมอ หากมีข้อผิดพลาดเกิดขึ้นผู้ใช้ควรได้รับการแจ้งเตือนเพราะสิ่งที่เขาขอให้แอปพลิเคชันทำไม่สำเร็จ อย่างไรก็ตามผู้ใช้ควรได้รับข้อมูลเท่าไหร่? ฉันคิดว่าพวกเราส่วนใหญ่เห็นด้วยที่จะไม่แสดงการติดตามสแต็ก ( ควรติดตามสแต็กในข้อความแสดงข้อผิดพลาดที่ปรากฏแก่ผู้ใช้หรือไม่ ) แต่ฉันไม่พบคำถามเกี่ยวกับเนื้อหาข้อผิดพลาดที่เหลือหรือสิ่งที่จะแสดงต่อ ผู้ใช้งาน ตัวอย่างเช่นภาษาที่รองรับข้อยกเว้น (.net, java) มีประเภทข้อยกเว้นที่จะแบ่งปันโดยที่ข้อยกเว้นเกิดขึ้นและข้อความที่ค่อนข้างชัดเจนเพื่อให้สอดคล้องกับข้อยกเว้น สิ่งนี้ควรถูกซ่อนจากผู้ใช้ด้วยหรือไม่ หรือเราควรแสดงสิ่งนี้ต่อไป? หรือเราควรแสดงข้อความทั่วไป? หรือเราควรแสดงหนึ่งในจำนวนข้อความตามข้อยกเว้นพื้นฐานคืออะไร

4
เหตุใดจึงเป็นความรับผิดชอบของผู้โทรเพื่อความปลอดภัยของเธรดในการเขียนโปรแกรม GUI?
ฉันเคยเห็นมาแล้วในหลาย ๆ ที่ว่ามันเป็นภูมิปัญญาที่ยอมรับ1ว่าเป็นความรับผิดชอบของผู้โทรเพื่อให้แน่ใจว่าคุณอยู่ในเธรด UI เมื่ออัปเดตองค์ประกอบ UI (โดยเฉพาะใน Java Swing ที่คุณอยู่ในEvent Dispatch Thread ) . ทำไมเป็นเช่นนี้ Event Dispatch Thread เป็นปัญหาของมุมมองใน MVC / MVP / MVVM เพื่อจัดการที่ใดก็ได้ แต่มุมมองจะสร้างการเชื่อมต่ออย่างแน่นหนาระหว่างการนำไปใช้ของมุมมองและโมเดลการทำเกลียวของการปรับใช้มุมมองนั้น โดยเฉพาะสมมติว่าฉันมีแอปพลิเคชันที่ออกแบบมาให้ใช้งาน MVC ซึ่งใช้ Swing ถ้าโทรเป็นผู้รับผิดชอบสำหรับส่วนประกอบปรับปรุงในกระทู้ที่จัดกิจกรรมส่งแล้วถ้าฉันพยายามที่จะสลับออกสวิงดูการดำเนินงานของฉันสำหรับการดำเนินงาน JavaFX ผมต้องเปลี่ยนทุกรหัส Presenter / ควบคุมการใช้ด้าย JavaFX ประยุกต์ใช้แทน ดังนั้นฉันคิดว่าฉันมีสองคำถาม: เหตุใดจึงเป็นความรับผิดชอบของผู้โทรเพื่อให้มั่นใจในความปลอดภัยของเธรดส่วนประกอบ UI ข้อบกพร่องในการให้เหตุผลด้านบนของฉันอยู่ที่ไหน ฉันจะออกแบบแอปพลิเคชันของฉันให้มีเพศสัมพันธ์แบบหลวม ๆ เกี่ยวกับความปลอดภัยของเธรดเหล่านี้ได้อย่างไร แต่ยังคงปลอดภัยต่อเธรดอย่างเหมาะสม ให้ฉันเพิ่มรหัส MCVE Java เพื่อแสดงให้เห็นถึงสิ่งที่ฉันหมายถึงโดย …

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

4
พรอมต์ของ JavaScript ยืนยันและแจ้งเตือนว่า“ ล้าสมัย” [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา เมื่อเร็ว ๆ นี้ฉันได้พัฒนาระบบการจัดการผ่านเว็บสำหรับยิม แอพก่อนหน้าของพวกเขาได้รับการพัฒนาใน Visual Basic สำหรับแอพใหม่สคริปต์ส่วนหน้าทั้งหมดใช้ jQuery เซิร์ฟเวอร์กำลังเรียกใช้ PHP และ MySQL ... คุณรู้ไหมว่าสแต็ค el-cheapo linux ทั่วไป อย่างไรก็ตามฉันสงสัยว่าทำไมกล่องโต้ตอบข้อความยืนยันและข้อความแจ้งเตือนของ JavaScript จึงมีการใช้งานอยู่ในปัจจุบัน มีปลั๊กอิน jQuery จำนวนมากสำหรับหน้าต่างโมดัลและข้อความเตือนที่พยายามเลียนแบบบางสิ่งที่ภาษานั้นมีอยู่แล้วและเบราว์เซอร์ทุกตัวจำเป็นต้องสนับสนุนอย่างถูกต้อง การใช้โซลูชันที่ทำด้วยมือหรือใช้ปลั๊กอินนั้นใช้ได้สำหรับรูปแบบที่ซับซ้อนและความต้องการพิเศษ แต่ถ้าคุณเพียงแค่ขอค่าเดียวหรือยืนยันการลบเร็กคอร์ดทำไมคุณถึงเพิ่มค่าใช้จ่ายดังกล่าวลงในเว็บแอปของคุณ นอกจากนี้ iOS และ Android ยังมีกล่องโต้ตอบข้อความที่ปรับเปลี่ยนได้อย่างดีเมื่อคุณใช้พรอมต์, ยืนยันและแจ้งเตือน

2
ฉันจะแยกส่วนติดต่อผู้ใช้ออกจากตรรกะทางธุรกิจในขณะที่ยังคงรักษาประสิทธิภาพได้อย่างไร
สมมติว่าฉันต้องการที่จะแสดงรูปแบบที่แสดงถึง 10 วัตถุที่แตกต่างกันใน combobox ตัวอย่างเช่นฉันต้องการให้ผู้ใช้เลือกหนึ่งแฮมเบอร์เกอร์จาก 10 เมนูที่มีมะเขือเทศ เนื่องจากฉันต้องการแยก UI และตรรกะฉันจะต้องผ่านแบบฟอร์มการเป็นตัวแทนสตริงของแฮมเบอร์เกอร์เพื่อแสดงบน Combobox มิฉะนั้น UI จะต้องขุดลงในช่องวัตถุ จากนั้นผู้ใช้จะเลือกแฮมเบอร์เกอร์จากคอมโบบ็อกซ์แล้วส่งกลับไปที่คอนโทรลเลอร์ ตอนนี้ผู้ควบคุมจะต้องหาแฮมเบอร์เกอร์อีกครั้งโดยอ้างอิงจากการแทนค่าสตริงที่ใช้โดยแบบฟอร์ม (อาจเป็น ID?) มันไม่มีประสิทธิภาพอย่างไม่น่าเชื่อใช่หรือไม่? คุณมีวัตถุที่คุณต้องการเลือกแล้ว หากคุณส่งแบบฟอร์มไปยังวัตถุทั้งหมดแล้วส่งคืนวัตถุเฉพาะคุณจะไม่ต้อง refind อีกครั้งในภายหลังเนื่องจากแบบฟอร์มส่งคืนการอ้างอิงไปยังวัตถุนั้นแล้ว ยิ่งกว่านั้นถ้าฉันผิดและคุณควรส่งวัตถุทั้งหมดไปยังแบบฟอร์มฉันจะแยก UI ออกจากตรรกะได้อย่างไร

6
ฉันจะหาแรงบันดาลใจสำหรับอินเทอร์เฟซผู้ใช้ที่ดีได้ที่ไหน [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันมีบล็อกที่เกี่ยวกับการกำหนดอินเทอร์เฟซหน้าจอหลักสำหรับแอปพลิเคชันเดสก์ท็อปที่ฉันกำลังอัปเกรดอยู่ เมื่อฉันพัฒนาโปรแกรมนี้ครั้งแรกความละเอียดหน้าจอคือ 640 X 480 วันนี้มีความละเอียดหน้าจอหลายอย่าง ฉันจะหาแนวคิดสำหรับเค้าโครงหน้าจอหลักที่ดีสำหรับแอปพลิเคชันเดสก์ท็อปได้ที่ไหน

3
การเพิ่มคะแนนรางวัลหรือฟีเจอร์เกมลงในซอฟต์แวร์ที่ทำงานจะดูไม่ดีในหมู่ชุมชนการเขียนโปรแกรมหรือไม่
ดังนั้นหนึ่งในความรับผิดชอบของฉันในการทำงานคือการสร้างเครื่องมือภายในที่ช่วยให้คนงานป้อนข้อมูลทั้งหมดของพวกเขา มันเป็นแอพพลิเคชั่นระดับองค์กรที่คล้ายกับเครื่องมือฐานข้อมูล Windows ในรูปแบบ ดังนั้นจึงไม่แตกต่างไปจากการพัฒนาแอปพลิเคชันคำสั่งผสมของ Word + Excel แต่คนทั่วไปในเวิร์กกรุ๊ปนี้เป็นผู้หญิงอายุ 20-40 ปีหรือประเภทชายช่างพูดแบบสุ่ม ฉันรู้ว่าคนเหล่านี้เกี่ยวข้องกับ Facebook เป็นประจำทุกวัน มันจะเลวร้ายแค่ไหนถ้าฉันกำหนดให้อินเทอร์เฟซใหม่ของฉันคล้ายกับที่ Facebook ทำ ผู้คนสามารถได้รับคะแนนและสิ่งต่าง ๆ เมื่อพวกเขากรอกแบบฟอร์มประเภทต่าง ๆ และแข่งขันกันเองเหมือนเป็นเกม เมื่อคนทำเสร็จแล้วมันจะถูกโพสต์บนผนังของพวกเขาและทุกคนสามารถแสดงความคิดเห็น / เหมือนสิ่งที่เหมือนกับใน Facebook และมันก็เหมือนกับว่าพวกเขากำลังทบทวนเพื่อความสนุกสนาน รางวัลที่ได้จะโดดเด่นฉันจะจินตนาการ คนเหล่านี้เข้าสู่เกมบน Facebook และ Facebook ซึ่งผลผลิตจะเพิ่มขึ้นเนื่องจากพวกเขาพยายามแข่งขันและรับคะแนนและความสำเร็จ นี่จะเป็นการใช้ประโยชน์จากผู้คนโดย 'หลอกให้พวกเขาทำงานหนักขึ้นโดยให้พวกเขามีเกม' หรือจะถูกมองว่าเป็นสิ่งที่จะปรับปรุงความสุขในการทำงานหรือไม่?

12
ข้อดี (และข้อเสีย) ของการใช้“ ลงชื่อเข้าใช้ด้วย Twitter / Facebook” สำหรับเว็บไซต์ใหม่คืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ตัวเองและเพื่อนกำลังมองหาที่จะเปิดตัวเว็บไซต์ฟอรั่มเล็ก ๆ ฉันกำลังพิจารณาใช้ API“ ลงชื่อเข้าใช้ด้วย Facebook / Twitter” ซึ่งอาจเป็นแบบเอกสิทธิ์เฉพาะบุคคล (เช่น la Lanyrd ) สำหรับการเข้าสู่ระบบของผู้ใช้ ฉันไม่เคยใช้สิ่งเหล่านี้มาก่อนหรือไม่เรียกใช้ไซต์ที่มีการเข้าสู่ระบบของผู้ใช้เลย ข้อดี (และข้อเสีย) ของ API เหล่านี้คืออะไร โดยเฉพาะ: ฉันจะได้รับประโยชน์อะไรบ้างจากการเป็นนักพัฒนาซอฟต์แวร์ มีข้อเสียอะไรบ้าง? ผู้ใช้ปลายทางชอบ / ไม่ชอบจริงๆหรือไม่? คุณเคยประสบปัญหาด้านเทคนิค / ปัญหาด้านลอจิสติกส์กับ API เหล่านี้โดยเฉพาะหรือไม่? นี่คือข้อดีข้อเสียที่ฉันได้รับ: ข้อดี สะดวกยิ่งขึ้นสำหรับผู้ใช้ (“ ลงทะเบียน” ด้วยการคลิกสองครั้งลงชื่อเข้าใช้ด้วยหนึ่งครั้ง) อาจไม่จำเป็นต้องบำรุงรักษาระบบการเข้าสู่ระบบของเราเอง จุดด้อย ไม่มีการควบคุมกระบวนการเข้าสู่ระบบของเรา ยกเว้นผู้ใช้ Facebook / …

4
วิธีเขียนการทดสอบหน่วยบำรุงรักษาไม่เปราะการบำรุงรักษาสำหรับ GUI?
ฉันพยายามเขียนการทดสอบหน่วย UI สำหรับแอป GUI ของฉันและฉันพบปัญหาว่าในขณะที่พวกเขาทำงานได้ดีเมื่อฉันเริ่มเขียนพวกเขาพวกเขาจะเปราะบางและแตกเมื่อใดก็ตามที่การเปลี่ยนแปลงการออกแบบ (นั่นคือค่อนข้างบ่อย) ฉันกำลังดิ้นรนเพื่อหาชุดแนวทางที่จะนำฉันไปสู่การทดสอบหน่วยที่บำรุงรักษาได้สำหรับ GUI สำหรับตอนนี้สิ่งหนึ่งที่ฉันค้นพบคือการทดสอบที่บอกว่า "ส่วนประกอบนี้ควรแสดงข้อมูลอินพุตที่อื่น" นั้นดี (และง่ายมากที่ใช้ HTML) การทดสอบการตรวจสอบสถานะเฉพาะของส่วนเฉพาะของส่วนประกอบมักจะเปราะ การทดสอบเป็นไปตามการคลิกคลิกคลิกคาดหวังว่าจะพยายามติดตามพฤติกรรมของผู้ใช้และตรรกะทางธุรกิจพื้นฐาน (ซึ่งเป็นส่วนที่สำคัญที่สุด) โดยทั่วไปแล้วจะเปราะบาง ฉันจะเขียนแบบทดสอบที่ดีได้อย่างไร เพื่อให้แม่นยำยิ่งขึ้นฉันต้องการทราบรูปแบบบางอย่างเกี่ยวกับสิ่งที่ฉันสามารถทดสอบใน UI ของฉันไม่ใช่วิธีการทดสอบ แบบแผนการตั้งชื่อและตัวระบุแบบคงที่นั้นดี แต่ไม่แก้ปัญหาหลักซึ่งก็คือ GUI นั้นเปลี่ยนไปมาก ฉันต้องการทดสอบพฤติกรรมที่ไม่น่าจะเปลี่ยนแปลงได้มากที่สุด วิธีการค้นหาสิ่งที่ถูกต้องในการทดสอบ?

2
ควร "เลิกทำการพิมพ์" อย่างไร
ฉันกำลังใช้งานแอป Java ที่มี Undo / Redo stack ฉันสังเกตเห็นว่าแอพบางตัว (เช่น TextEdit บน Mac OS X) ให้คุณเลือก "เลิกทำการพิมพ์" จากเมนูแก้ไขหลังจากพิมพ์ข้อความ ฉันต้องการนำสิ่งเหล่านั้นไปใช้ในแอพของฉันด้วย แต่ฉันมีแนวทางในการค้นหาเวลาที่ยากลำบากจริงๆเกี่ยวกับวิธีการทำงานของมัน ด้วยการทดลองและข้อผิดพลาดการคาดเดาที่ดีที่สุดของฉันเกี่ยวกับวิธีการเลิกทำการพิมพ์ดีดของ TextEdit คือ: เมื่อผู้ใช้พิมพ์อักขระใหม่ (หรือพิมพ์คีย์ลบ) ให้รวมเข้าไปในรายการ Undo Typing ก่อนหน้าหากมีอักขระอยู่ที่ด้านบนสุดของ Undo stack ยกเว้นว่ามีเหตุการณ์ใดเหตุการณ์หนึ่งต่อไปนี้เกิดขึ้น สร้างรายการเลิกทำการพิมพ์ใหม่หลังจากผู้ใช้พิมพ์ต่อไปหลังจากไม่มีกิจกรรมใด ๆ เป็นเวลาอย่างน้อย 15 วินาที สร้างรายการ Undo Typing ใหม่ทุกครั้งหลังจากที่ผู้ใช้พิมพ์เป็นระยะเวลานานและเป็นไปตามเงื่อนไขบางประการ (ไม่ทราบว่าเป็นไปตามเวลาหรือตามจำนวนตัวอักษร) สร้างรายการเลิกทำพิมพ์ดีดใหม่เสมอเมื่อเลือกข้อความใด ๆ แล้วลบหรือเขียนทับ (เลือกข้อความไม่ทำการเปลี่ยนแปลงจากนั้นกลับไปที่จุดแทรกดั้งเดิมและพิมพ์ต่อเนื่องไม่ทำให้เกิดสิ่งนี้) ในทางปฏิบัติกลยุทธ์ของ Apple ดูเหมือนจะใช้งานได้ (อย่างน้อยมันก็ใช้ได้กับฉันเมื่อฉันพิมพ์) แต่ตามที่ระบุไว้ในจุดสุดท้ายฉันไม่สามารถเข้าใจกฎได้อย่างแท้จริง …

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