2012-05-10 13 views
8

हमें एक ऐसे प्रोग्राम के लिए यूनिट परीक्षण और सिस्टम परीक्षण कैसे व्यवस्थित करना चाहिए जो हार्डवेयर को अनुकरण करता है (जो वीएमवेयर की तरह है)?एक एमुलेटर का परीक्षण

पृष्ठभूमि:

हम कई वर्षों से 1980 के दशक और संबंधित परिधीय उपकरणों और सॉफ्टवेयर से एक कंप्यूटर में कामयाब के लिए की है। प्रणाली हमारे ग्राहकों के लिए महत्वपूर्ण है और वे इसे प्रतिस्थापित नहीं करना चाहते हैं। इसलिए हमने कुछ हार्डवेयर के लिए अनुकरणकर्ताओं को विकसित करने के लिए चुना है। समस्या यह है कि टाइपराइटर लिखित पाठ के हजारों पृष्ठों में यह खराब तरीके से प्रलेखित है। इसलिए यह कोशिश करें और त्रुटि-विकास।

समस्या:

वर्तमान में हम एमुलेटर का कोई इकाई परीक्षण और प्रणाली परीक्षण बहुत एड-हॉक कर रहे हैं। परीक्षण करना मुश्किल है कि एक जटिल ओएस पाठ टर्मिनल में टाइप करके और बाहरी सिस्टम से डेटा इनपुट अनुकरण करके सभी पहलुओं में काम करता है या नहीं। एकमात्र तरीका जिस पर हम अभी परीक्षण कर रहे हैं बाहरी सिस्टम (X.25 के माध्यम से) से एक बड़ा इनपुट दबाव जोड़ना और नियमित रूप से कुछ भारी संचालन स्वचालित करना है। लेकिन आप तब बहुत याद करते हैं।

+0

क्या आपके लिए एक परीक्षण वातावरण में सेटिंग्स को दोहराना संभव है और एक समय में एक परिधीय अनुकरण करना संभव है? – Jaywalker

+0

हो सकता है कि यह एक पागल विचार हो, लेकिन क्या आपके लिए एक ऐसी प्रणाली स्थापित करना संभव है जो सभी इनपुट की प्रतिलिपि वास्तविक प्रणाली में, एमुलेटर को भेज सके, और फिर वास्तविक प्रणाली के एमुलेटर के आउटपुट की तुलना करें? –

उत्तर

5

मैं कुछ तुलना करने योग्य कंपनी के लिए काम करता था। हमारी प्रणाली का परीक्षण करने के लिए (जो वास्तव में एक गतिशील बाइनरी अनुवादक था, एक एमुलेटर नहीं था) हमने एक परीक्षण ढांचा लिखा था जो समान आदेशों को मूल रूप से और अनुवादित करेगा, फिर परिणामों की तुलना करें। हमने इसे उपयोगकर्ताओं के कार्यक्रमों के साथ करना शुरू किया, लेकिन जैसे ही हमने अधिक परिष्कृत उत्पादों को विकसित किया, हमने नकली हार्डवेयर के परीक्षण को स्वचालित करने के लिए एक ही तकनीक का उपयोग किया। असल में बोलते हुए, आप कुछ प्रोग्राम लिखना चाहते हैं जो इस हार्डवेयर तक पहुंचते हैं और इसके लिए सामान करते हैं, सभी आउटपुट टर्मिनल या कहीं लॉग पर डंप करते हैं। फिर इन कार्यक्रमों को दोनों तरफ (असली और नकली) चलाएं, और आउटपुट की तुलना करें। इस पर निर्भर करते हुए कि आपका अनुकरण कितना सटीक है, आपको आउटपुट के कुछ हिस्सों को अलग-अलग करने के लिए कुछ स्क्रिप्टिंग की आवश्यकता हो सकती है - पते, होस्टनाम, उस तरह की चीज़।

हार्डवेयर को अनुकरण करते समय देखने के लिए दूसरी बात राज्य परिवर्तन है: एक विशेष आदेश दोनों पक्षों पर आउटपुट दे सकता है, लेकिन अलग-अलग तरीकों से आंतरिक स्थिति बदल सकता है। यह अनुमान लगाना मुश्किल हो सकता है, लेकिन आम तौर पर आपको प्रभावित होने की संभावना वाले आंतरिक राज्य की पहचान करने की आवश्यकता होती है और प्रत्येक कमांड के आउटपुट के साथ इसे बाहर निकाल दिया जाता है।

हमने खरीदा जाने से पहले हमने ओएस/हार्डवेयर राज्य चरण-दर-चरण की निगरानी के लिए कर्नेल ट्रेसिंग टूल का उपयोग करके कुछ भी चालाक काम करना शुरू किया, क्योंकि हमने अपने परीक्षण चलाए, फिर मूल और अनुवादित रनों के बीच चरणों की श्रृंखला की तुलना की। यह पूरी तरह से विकसित नहीं हुआ था, लेकिन बहुत ही आशाजनक लग रहा था।

अफसोस की बात यह है कि यह सब चीजें आंतरिक और बंद स्रोत थीं, इसलिए मैं आपको कुछ भी नहीं कह सकता जिसे आप चला सकते हैं और खेल सकते हैं, लेकिन विचार बहुत ही अच्छा है - हमारे पास हर निर्माण पर चलने वाले हजारों स्वचालित परीक्षण थे बहुत संतोषजनक परिणामों के साथ हमारे अनुवादकों का।

संपादित करें: जितना अधिक मैं इस समस्या के बारे में सोचता हूं उतना उत्सुक हूं कि मुझे इसमें एक सनकी है। मुझे नहीं लगता कि आपकी परियोजना ओपन-सोर्स है, लेकिन अगर यह है तो मुझे भाग लेना अच्छा लगेगा। अगर यह संभावना है तो मुझसे संपर्क करने में संकोच न करें।

+0

दुर्भाग्य से, परियोजना ओपन सोर्स नहीं है, इसलिए बाहर से मदद की कोई संभावना नहीं है। लेकिन आपकी रुचि के लिए धन्यवाद – magol

संबंधित मुद्दे