परीक्षण के लिए स्क्रीनशॉट का उपयोग करना

पड़ोसी विषय के अनुरोध पर लिखा गया है - हम यांडेक्स में खोज का परीक्षण कैसे करते हैं। परिणाम ब्लॉक का स्क्रीनशॉट-आधारित परीक्षण



गहरी रीफैक्टरिंग के बारे में एक कहानी।

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

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

page.render('test0001-after-login.png'); 

पर्याप्त मात्रा में परीक्षण हमारे लिए ज्ञात मात्रा में कार्यक्षमता को कवर करते हुए लिखे गए हैं। जैसा कि बाद में पता चला, हम पर्याप्त नहीं जानते थे :) इन परीक्षणों से कई सौ स्क्रीनशॉट उत्पन्न हुए। जाहिर है, एक दूसरे के साथ चित्रों की तुलना करना पूरी तरह से धन्यवाद रहित कार्य है। आपको यह स्वचालित रूप से करने की आवश्यकता है। पिछली परियोजनाओं में से, मैंने पायथन पर कई छवियों (कट, गोंद, क्षेत्रों को खोजने, एक-दूसरे के शीर्ष पर छवियों को ओवरले करना, आदि) के साथ कई लिपियों को लागू किया और इस कार्य के लिए इसे चार्ज करने के लिए तैयार था।
सब कुछ साइकिल के आविष्कार के बिना चला गया। शक्तिशाली क्रॉस-प्लेटफ़ॉर्म उपयोगिता पैकेज शामिल - ImageMagick
तुलना दो स्क्रीनशॉट की तुलना कर सकती है, अंतर को उजागर कर सकती है और स्क्रीन पर सूचना प्रदर्शित कर सकती है।
कॉल उदाहरण:
 compare.exe -metric AE shots/test-002_opentree.png reference/test-002_opentree.png diff-002.png 2>&1 

हम एक ताजा स्क्रीनशॉट लेते हैं, इसे संदर्भ के साथ तुलना करते हैं, स्क्रीन पर पाठ जानकारी प्रदर्शित करते हैं, और विवरणों के मैनुअल देखने के लिए ग्राफिक जानकारी को एक फ़ाइल में सहेजते हैं।

इन दो स्क्रीनशॉट के बीच अंतर को नोटिस करना मुश्किल है:



लेकिन जब अंतर को उजागर किया जाता है, तो सब कुछ काफी स्पष्ट होता है - एक ब्लॉक में एक ठोस सीमा होती है, न कि एक बिंदीदार:


पहले दो चित्र फेटोमजस परीक्षण द्वारा लिए गए थे, और अंतिम तुलना का परिणाम है। जानकारी का हिस्सा आरक्षित है, के रूप में हमारे कार्यक्रम के इंटरफ़ेस को प्रकाशित करने के लिए मेरे पास आधिकारिक अनुमति नहीं है, भले ही वह पुराना हो।

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

पुनश्च। मैं इस समस्या को हल करने के लिए पायथन का उपयोग करने के बारे में गलत जानकारी के लिए माफी माँगता हूँ।

Source: https://habr.com/ru/post/In201374/


All Articles