खाते में लेने के कई कारक हैं। उन बिंदुओं को स्पष्ट करने के लिए, मैं एक ऐसे क्षेत्र का एक उदाहरण का उपयोग करूंगा, जहां उपयोगकर्ता को किसी विशिष्ट कार्य के लिए निर्धारित कोटा के संदर्भ में प्रतिशत दर्ज करना चाहिए जो कार्य का उपयोग कर सकता है। 0% का मतलब है कि कार्य डिस्क पर कुछ भी लिखने में सक्षम नहीं होगा; 100% का मतलब है कि कार्य सभी डिस्क स्थान को भर सकता है। बीच में मान का मतलब है कि वे क्या मतलब है।
एक डेवलपर के रूप में, आप शायद यह मान रहे हैं कि स्वीकार्य मूल्य [0, 1, 2, 3,, 99, 100] हैं, और बाकी सब कुछ मूर्खतापूर्ण है। आइए देखें कि उपयोगकर्ता अभी भी उन "मूर्खतापूर्ण" मूल्यों में क्यों प्रवेश कर सकते हैं।
लेखन त्रुटियां
%^
उपयोगकर्ता 56 मान दर्ज कर रहा था, लेकिन गलती से Shiftउन्हें दर्ज करते समय दबाया गया था (उदाहरण के लिए क्योंकि फ्रांसीसी कीबोर्ड पर, आपको Shiftअंकों को दर्ज करने के लिए दबाया जाता है, और उपयोगकर्ता लगातार एक फ्रेंच कीबोर्ड और QWERTY के बीच स्विच कर रहा था)।
उसी तरह, आप एक नंबर प्राप्त कर सकते हैं, इसके साथ या उससे पहले या बीच में कुछ:
56q
यहां, उपयोगकर्ता संभवतः अंकों में प्रवेश कर रहा था, उसके बाद अगले फ़ील्ड पर जाने के लिए एक टैब। दबाने के बजाय ⇆ , उपयोगकर्ता ने पड़ोसी कुंजी दबाया।
गलतफहमी और गलतफहमी
एक खाली इनपुट शायद सबसे सामान्य है। उपयोगकर्ता ने कल्पना की कि क्षेत्र वैकल्पिक था, या नहीं जानता था कि इस क्षेत्र में क्या रखा जाए।
56.5
उपयोगकर्ता ने सोचा था कि फ़्लोटिंग पॉइंट मान स्वीकार्य थे। या तो उपयोगकर्ता गलत है, और एप्लिकेशन को विनम्रता से समझाना चाहिए कि केवल पूर्णांक मान क्यों स्वीकार किए जाते हैं, या प्रारंभिक आवश्यकताएं गलत थीं, और यह उपयोगकर्ताओं को अस्थायी बिंदु मान दर्ज करने के लिए समझ में आता है।
none
उपयोगकर्ता ने गलत समझा कि जब अंतरिक्ष उस कार्य को ले सकता है, तो ऐप ने एक नंबर की उम्मीद की। यह एक खराब यूजर इंटरफेस का संकेत दे सकता है। उदाहरण के लिए, उपयोगकर्ता से पूछते हैं "इस कार्य को कितना डिस्क स्थान लेना चाहिए?" बहुत समझदारी।
150
उपयोगकर्ता ने गलत समझा कि प्रतिशत का इस मामले में क्या मतलब है। हो सकता है कि उपयोगकर्ता यह बताना चाहता था कि यह कार्य वर्तमान में उपयोग किए गए स्थान का 150% ले सकता है, इसलिए यदि 2 टीबी की डिस्क पर 100 जीबी का उपयोग किया जाता है, तो कार्य 150 जीबी का उपयोग कर सकता है। फिर से, एक बेहतर उपयोगकर्ता इंटरफ़ेस मदद कर सकता है। उदाहरण के लिए, एक नंगे इनपुट क्षेत्र के साथ प्रतिशत चिह्न के साथ संलग्न होने के बजाय, यह एक हो सकता है:
[____] % of disk space (2 TB)
जब उपयोगकर्ता टाइप करना शुरू कर देता है, तो यह मक्खी पर पाठ को बदल देगा।
[5___] % of disk space (102.4 GB of 2 TB)
अभ्यावेदन
फ्लोटिंग पॉइंट के साथ बड़ी संख्या या संख्या को अलग तरीके से दर्शाया जा सकता है। उदाहरण के लिए, एक संख्या 1234.56 इस तरह लिखी जा सकती है 1,234.56
:। संस्कृति के आधार पर, समान संख्या का पाठ प्रतिनिधित्व अलग होगा। फ्रेंच में, एक ही नंबर इस तरह लिखा जाएगा: 1 234,56
। देखें, एक अल्पविराम जहां आप एक और एक स्थान की उम्मीद नहीं करेंगे।
हमेशा एक विशिष्ट लोकेल का उपयोग करके एक विशिष्ट प्रारूप की अपेक्षा करना आपको जल्दी या बाद में परेशानी में डाल देगा, क्योंकि विभिन्न देशों के उपयोगकर्ताओं को संख्या, दिनांक और समय आदि लिखने की अलग-अलग आदतें होंगी।
इंसान बनाम कंप्यूटर
Twenty-four
साधारण मनुष्य कंप्यूटर के समान नहीं सोचते हैं। "चौबीस" है एक वास्तविक संख्या, स्वतंत्र रूप से क्या एक पीसी आपको बता जाएगा।
हालाँकि (1) अधिकांश प्रणालियाँ इस प्रकार के इनपुट को संभालती नहीं हैं और (2) लगभग हर उपयोगकर्ता पूर्ण अक्षरों में लिखे नंबर में प्रवेश करने की कल्पना नहीं करता है, लेकिन इसका मतलब यह नहीं है कि ऐसा इनपुट मूर्खतापूर्ण है। में चेहरा 3 के बारे में , एलन कूपर एक मुद्दा यह है कि इस तरह के निवेशों से निपटने नहीं मनुष्य के लिए अनुकूल करने के लिए, और आदर्श रूप में, इंटरफ़ेस सही ढंग से उन आदानों संभाल करने में सक्षम होना चाहिए कंप्यूटर की अक्षमता का संकेत है बनाता है।
मुझे केवल एलन कूपर की पुस्तक में जोड़ना है कि कई मामलों में, अंकों को गलती से अंकों में लिखा जाता है । यह तथ्य कि कंप्यूटर अपने उपयोगकर्ताओं से गलतियाँ करने की उम्मीद करता है (और सही ढंग से लिखने वाले उपयोगकर्ता को बर्दाश्त नहीं करेगा) कष्टप्रद है।
यूनिकोड
5𝟨
यूनिकोड अपने स्वयं के आश्चर्य को आरक्षित करता है: जो अक्षर समान दिख सकते हैं, वे समान नहीं हैं। आश्वस्त नहीं? "5𝟨" === "56"
अपने ब्राउज़र के डेवलपर टूल पर कॉपी-पेस्ट करें और दबाएँ Enter।
वे तार समान नहीं होने का कारण यह है कि यूनिकोड वर्ण वर्ण 𝟨
के समान नहीं है 6
। यह एक ऐसी स्थिति पैदा करेगा जहां एक नाराज ग्राहक कॉल करेगा, यह बताएगा कि आपका ऐप काम नहीं कर रहा है, एक इनपुट का स्क्रीनशॉट प्रदान करता है जो वैध दिखता है, और आपका ऐप यह दावा करता है कि इनपुट अमान्य है।
कोई भी यूनिकोड वर्ण में क्यों प्रवेश करेगा जो अंक की तरह दिखता है, आप पूछेंगे? जब मैं किसी उपयोगकर्ता से अनजाने में प्रवेश करने की उम्मीद नहीं करता हूं, तो एक अलग स्रोत से कॉपी-पेस्ट का कारण बन सकता है, और मेरे पास एक ऐसा मामला था जहां उपयोगकर्ता वास्तव में एक स्ट्रिंग का ऐसा कॉपी-पेस्ट करता था जिसमें एक यूनिकोड चरित्र होता था जो नहीं होता था स्क्रीन पर दिखाई देते हैं।
निष्कर्ष
वे मामले हैं जो आपको प्राथमिक संख्या इनपुट फ़ील्ड के लिए मिलते हैं। मैं आपको कल्पना करने दूंगा कि आपको और अधिक जटिल रूपों के लिए क्या संभालना पड़ सकता है, जैसे कि एक तारीख, या एक पता।
मेरा उत्तर उस पर केंद्रित है जिसे आपने "मूर्खतापूर्ण" इनपुट कहा है। परीक्षण खुश रास्तों की जाँच के बारे में नहीं है; यह जाँचने के बारे में भी है कि जब कोई दुर्भावनापूर्ण उपयोगकर्ता जानबूझकर अजीब चीज़ों में प्रवेश कर रहा है, तो उसे तोड़ने की कोशिश करने पर आप ऐप नहीं तोड़ेंगे। इसका मतलब है कि जब आप प्रतिशत पूछ रहे हैं, तो आपको यह भी परीक्षण करना होगा कि उपयोगकर्ता तब क्या कर रहा है जब उपयोगकर्ता स्ट्रिंग के साथ प्रतिसाद दे रहा है, या एक नकारात्मक संख्या, या एक बॉबी तालिका ।