اختبار خدمة ويبمع خدمة ويب تم إنشاؤها وتشغيلها ، هل يمكن أن تمضي قدما والبدء في ترميز العميل. ولكن أن يكون هذا النهج غير صحيحة. واحدة من الاشياء التي تغيرت مع خدمات ويب والخدمية هو أن العميل والخادم الاتصال باستخدام عقدا. سابقا ، تطبيقات العميل / الخادم باستخدام بروتوكول إبلاغها أن المطورين قررها. إذا كانت هناك حاجة للمطورين طريقة جديدة أو قطعة من المعلومات ، أن التغيير لن يتم. انها ليست صفقة كبيرة لإجراء تغييرات على الطاير. مع خدمات ويب والخدمية ، التي لم تعد القضية. ومع ظهور خدمات ويب والخدمية ، لدينا القدرة على تعريف العقد التي يمكن إعادة استخدامها وتقاسمها من قبل أطراف أخرى. إذا كانت هناك ميزة واحدة رئيسية لالخدمية ، هو قدرتها على تبادل البيانات بسهولة.
دعونا نضع ذلك في سياق آخر. تخيل انك تملك مطعم للبيتزا ، مع اتخاذ - ينفذ الأوامر ، والأوامر عبر الإنترنت ، والانتظار من الموظفين لتلقي الأوامر من العملاء في الموقع. بحيث يمكن للعملاء النظام بيتزا في عدة طرق مختلفة ، وربما في كل اتجاه لديها مختلفة تماما ترتيب النظام. في الواقع ، انه من المشكوك فيه أن الحاجة إلى الانتظار حتى تقوم الموظفين على اتخاذ هذا الأمر في المقام الأول. في هذا اليوم وهذا العصر ، هل يمكن وضع الشاشات التي تعمل باللمس على كل طاولة ، والسماح للعملاء من أجل البيتزا مباشرة. ثم لأن النظام هو الوفاء ، فإنه شخص يجلب الى طاولة المفاوضات. أو عن كيفية تمكين العملاء من أجل البيتزا على شبكة الإنترنت ، ومن ثم تشير إلى أنها تريد أن تأكل في المطعم انه في وقت معين؟ هذا النظام يمكن حجز طاولة للعملاء ، مما يجعل من الممكن بالنسبة لهم لشغل مقعد على طاولة محفوظة عند دخول المطعم وجبة لديها على الفور. ولكنها لن تدمر تجربة الذهاب الى مطعم؟ في رأيي ، فإنه لن يذهب إلى مطعم يمكن أن تكون تجربة جميلة المحمومة. مطعم للبيتزا وهذا المثال يوضح العميل / الخادم معماريات من الأيام الماضية ، مع الموظفين الانتظار أخذ طلبات الزبائن. الخدمية ، من ناحية أخرى ، يمثل البيتزا يأمر نظام موحد بغض النظر عن إدخال جهاز المستخدمة (في شخص ، على الانترنت ، عن طريق الهاتف الخليوي ، الخ). بعد كل شيء ، هو أمر البيتزا من خلال الموظفين الانتظار أي مختلفة من البيتزا أمرت على الانترنت؟ والجواب هو لا. بعد خدمة ويب الخاص بك يستخدم في سياقات متعددة يشكل تحديا في هذا العقد يجب أن يكون اختبار على نطاق واسع. إذا لم يكن على نطاق واسع اختبار خدمة ويب ، هل يمكن أن يسبب مشاكل. فعلى سبيل المثال ، تخيل انك خلقت بلوق خدمة ويب تغذية الشوائب التي كانت طفيفة. للمطورين الذين يستخدمون نهاية خلاصتك تصادف الشوائب ويرون انها طفيفة. لإنقاذ المتاعب ، ويفعلون القليل سريع للمشكلة. الحلول هي خطيرة لأنها تفترض أشياء ستحدث بطريقة معينة. أنت تعطي خلاصتك إلى أطراف ثالثة أخرى الذين لا تواجه الخلل البسيط لسبب أو لآخر. مع مرور الوقت ، ويتلقى العميل تغذية ، ويجدون أنفسهم في مواجهة الشوائب ، فهي على عكس الجميع ، فإنها ارسال بريد الكتروني عن الشوائب ويطلب منها أن تكون ثابتة ، فماذا تفعل عندما تتلقى إشعارا الشوائب؟ هل إصلاح الخلل أو لا؟ الجواب ينبغي أن تقوم على إصلاح الخلل ، ولكن الواقع هو أنه إذا كان الخطأ بسيطا ، يمكن للإصلاح خلل يتسبب العمل رمز للتوقف عن العمل ، وهذا هو السبب في اختبار aWeb خدمة حرجة للغاية : عن طريق اختبار ، يمكنك تقليل فرصة مشاكل في المستقبل. خدمة الإنترنت الاختبار يجب أن تكون شاملة واسعة النطاق ، وليس التعهد aminor. في حالة تطبيق بلوق ، على شبكة الانترنت خدمة اختبارات يمكن أن تجعل حياتك أسهل. المدقق تغذية يتأكد أن تغذية اتوم هو الصحيح ، ولكن المدقق تغذية لا تحقق من صحة ما إذا كانت محتويات تغذية صحيحة. هذا هو مستوى آخر من الاختبار والتحقق من صحة ذلك سيكون ضروريا. والمصادقة على تغذية يجعل من الممكن الفصل بين العميل من الخادم. وجود العميل والخادم تنفصل يجعل من أبسط لإدخال تغييرات في الهيكل العام لأنه يمكنك إجراء التغييرات تدريجيا. العودة إلى الهيكل الأصلي للهيكل بلوق ، تخيل تغيير هيكل مداخل بلوق كيف يتم عرضها. لأن العميل والخادم رمز متشابكة ، قد تميل إلى أن تكون المطور للتحكم في رمز الملقم. ومع ذلك ، الملقم ينشئ ثلاث صيغ مختلفة ، وعليك أن أتساءل عما إذا كان القرص سيتعين إضافة إلى اثنين من الأشكال الأخرى. استخدام الأعلاف واحد التي يتم التحقق من صحة والمبرمجين العميل لا خيار لها سوى أن يعدل مدونة خاصة. المبرمجين عميل لا يمكن أن تمس رمز للخادم ، وبالتالي لا يمكن ادخال البق غير مقصودة. أشرت إلى أن التجارب واجهة يتطلب وجود مجموعة شاملة واسعة من التجارب المدقق تغذية يوفر ذلك تماما. ولكن ليس جميع خدمات الويب تندرج ضمن فئة من تطبيق بلوق ، ويكون لديك لتنفيذ البنية التحتية الاختبار الخاصة بك. من الناحية المثالية ، كنت ترغب في الهندسة المعمارية مثل المصادقة على إطعام ، لأنه يجعل اختبار مبكرة. لكن المدقق تغذية هو تطبيق كبيرة ، وربما كنت لا تملك ما يكفي من الوقت لكتابة مثل هذه قطعة من رمز تعقيدا. التجربة علمتني أن أسهل طريقة لكتابة التجارب بسرعة ونظيفة هو استخدام لغة البرمجة التي تحظى بدعم لاختبار تقنيات يحركها التنمية (على سبيل المثال ، NUnit أو JUnit). يمكنك أيضا استخدام لغة ديناميكية مثل بايثون او روبي. شيء آخر التجربة علمتني أن لا يتم إعادة اختراع العجلة. إذا كان البروتوكول ، إكس إم إل النحوي ، أو تنفيذ موجود بالفعل ، ثم استخدام ذلك. لا في محاولة للتوصل إلى طرق جديدة لعمل الشيء نفسه القديم الذي لن يؤدي إلا إلى تعقيد حياتك. أنه قد يكون أكثر تعقيدا نوعا ما في البداية على الانضمام إلى معيار ، ولكن في المدى الطويل ، سيكون لديك أقل من الشواغل. على سبيل المثال ، عن طريق التمسك تغذية اتوم في العمارة بلوق ، يمكنك استخدام أداة متاحة للجمهور لاختبار التطبيق. فهو لا يحتاج لكتابة أي رمز الاختبار ؛ عليك فقط لكتابة البرامج النصية اختبار عدد قليل من استدعاء تغذية المصادقة على الشبكة العنكبوتية. تنفيذ عميلتنفيذ عميل في سياق اياكس دائما خطوتين : تحميل المستند وتنفيذ الوثيقة. وفي حالة تطبيق بلوق ، ليست هناك حاجة للعميل أن يتدخل ، لذلك ينبغي أن تكون الوثيقة أعدم بعد أن يكون قد تم تحميلها. في جافا سكريبت ، وهذا الحدث هو body.onload النار مرة واحدة في الوثيقة قد تم تحميلها بالكامل. فمن المهم جدا أن تستخدم الحدث body.onload وليس بعض السيناريو الذي يتم تنفيذه في حين أن وثيقة يتم تحميلها. ورغم أن وثيقة يتم تحميلها ، فإنه يعتبر غير مكتملة ، وبالتالي الرجوع إلى عناصر أتش تي أم أل على الوثيقة قد تكون ناجحة ، ولكن أنه قد لا. عند استخدام هذا الحدث body.onload ، يمكنك أن تكون على يقين من أن الوثيقة قد تم تحميلها بالكامل وعلى كل العناصر التي يحتاج المراجع المتوفرة. عند هذا الحدث هو body.onload النار ويتم تحميل المحتوى ، يمكن معالجة المحتوى ويمكن حقنه في الوثيقة أتش تي أم أل. للمستخدم ، هذه عملية من خطوتين يبدو وكأنه تحميل صفحة واحدة بدلا من أن تكون عملية من خطوتين (إذا كان كل من العميل والخادم لديك ما يكفي من عرض النطاق الترددي). إذا كان من خطوتين التحميل لا يتم تنفيذ سريع بما فيه الكفاية ، ستلاحظ وميض طفيفة ، مشيرا إلى أن بعض محتوى تم تحميل وترتيبها. والنتيجة النهائية هي نفسها ، والعميل هو قدم مع وثيقة واحدة أن تقدم نفسها على طلب واحد ، وفي النهاية ، فإن هذه العملية لا تختلف عن بناء التقليدية العميل / الخادم أو ن تطبيق الطبقة ، باستثناء والمعايير المفتوحة دينامية بيئة لغة البرمجة المستخدمة. مع العميل الشاملة التي تتناول الجانب العمارة ، دعونا حفر أعمق قليلا في كل خطوة من الخطوات. تحميل المستندكما ذكر سابقا ، فإن الخطوة الأولى هي تحميل المستند. إذا قارنا تحميل وثيقة مع تحميل تطبيق التقليدية ، ما يحدث هو أن المتصفح هو مثل نظام التشغيل إعداد الذاكرة ، ونماذج ، والأساس لهذا البرنامج لتنفيذه. وهكذا ، على سبيل المثال ، إذا أردنا تحميل المستند ، البرمجية التالية سوف مثيل الكائن XMLHttpRequest : getTransport : الدالة () (عودة Try.these (وظيفة)) (عودة جديدة ActiveXObject ( 'Msxml2.XMLHTTP')) ، وظيفة () (عودة جديدة ActiveXObject ( 'Microsoft.XMLHTTP')) ، وظيفة () (عودة XMLHttpRequest جديدة ())) | | كاذبة ؛) ، مصدر رمز ليست مهمة لأن العديد من المكتبات اياكس تفعل الشيء نفسه. بالضرورة ، عندما يتم تنفيذ التعليمات البرمجية ، فإنه يحاول معرفة أي متصفح انها تتعامل مع ذلك يمكن العودة إليها في وقت الطريقة الصحيحة لإنشاء الكائن XMLHttpRequest. وأنا أزعم أن هذا هو نهج خاطئ ، وأنه يستخدم لتحميل التقليدي القابل للتنفيذ وتشغيل عقلية. عند تحميل نظام التشغيل برنامج التقليدية ، والمتغيرات ، ونماذج ، وهكذا دواليك يتم تهيئة قبل تنفيذ البرنامج. في حين أن المتصفح بتحميل شفرة المصدر ، والمتصفح لديه القدرة على تنفيذ شفرة جافا سكريبت. مع هذا الأمر في الاعتبار ، هل يمكن كتابة التوليف التالي : إذا كان (window.ActiveXObject) (FactoryXMLHttpRequest = الدالة () (عودة ActiveXObject الجديدة ( "Microsoft.XMLHTTP") ؛)) والا اذا (window.XMLHttpRequest) (FactoryXMLHttpRequest = الدالة () (عودة جديدة XMLHttpRequest () ؛)) على سبيل المثال ، لا يوجد أي وظيفة ، مجرد قرار. هذا القرار هو إذا كان المتصفح تحميل المستند هو إنترنت إكسبلورر ، ثم تحديد مهمة FactoryXMLHttpRequest لActiveXObject مثيل. إذا كان المتصفح ليس إنترنت إكسبلورر ، ثم تحديد مهمة FactoryXMLHttpRequest إلى إنشاء الكائن XMLHttpRequest مباشرة. ثاني مصدر رمز التهيئة سبيل المثال ليست مرنة خلال وقت لأن وظيفة محددة FactoryXMLHttpRequest لا يمكن إلا أن إنشاء الكائن XMLHttpRequest كما تم تعريفه عند المستند تم تحميلها. حتى وإن كان هذا يبدو وكأنه عيب ، يجب عليك أن تسأل نفسك ما هي احتمالات أن الوثيقة التي حملت سيتم نقل بايت بايت من نوع آخر للمتصفح. الجواب هو أنه لا يوجد أي احتمال أن يحدث هذا ، كما هو غير ممكن. الميزة الثانية من شفرة المصدر مثال على ذلك هو أن وظيفة يمكن ضبطها لمتصفح فإنه يتم تنفيذها في حين أن وثيقة يتم تحميلها. على سبيل المثال ، كان يستند على ضبط على المتصفح. هناك طرق أخرى لضبط وأسباب ضبط التطبيق الخاص بك ، مثل معرفة اللغة أو أبعاد للمتصفح. ضبط لديه ميزة التي لا تحتاج لحمل الأمتعة القابل للتنفيذ في جميع أنحاء مقترن القرارات التي اتخذت في وقت التشغيل. هذا هو العامل المهم أن نتذكر ، كما يمكنك تقليل أثر وقت من الشفرة الخاصة بك عن طريق preconfiguring التطبيق أثناء تحميل الوثيقة. ولكن هناك عيب واحد كبير لاستخدام وثيقة الشحن المولدة التكوين التي لها علاقة مع التسلسل. مقالات سابقة بينت كيفية استخدام التسلسل جافا سكريبت لتوليد وكلاء أو mixins. إذا كانت وثيقة محملة التكوين هو تسلسل وتخزينها على خادم المتشعب ، ثم انها حملت في مرحلة لاحقة في الوقت المناسب باستخدام متصفح مختلف ، وسوف يتم إنشاء خطأ. وبحكم التجربة هو أنه عندما تكون هناك ميزة من حيث الأداء أو الموارد ، واستخدام وثيقة محملة التكوين. استخدام عامة وقت النهج ، الذي يتضمن قرارا وقت عملية صنع ، إذا كان هناك فرصة ضئيلة بأن القانون سيتم المتسلسلة. وبالنسبة لتلك الحالات حيث أنه حقا لا يهم طريقة واحدة أو استخدام الآخر ، أيا كان من المنطقي بالنسبة لك. تنفيذ وثيقةبعد وثيقة تم تحميل ، الحدث body.onload يتم تشغيلها ورمز المرتبطة يتم تنفيذه. أتش تي أم أل في شروط رمز تبدو على النحو التالي. علما بأن رمز تم اختصار لوضوح. المصدر : / العميل / index.html LoadAtomFeed الدالة () ( فار تزامني = متزامنة جديدة () ؛ asynchronous.settings = ( onComplete : وظيفة (xmlhttp) ( parseAtom (xmlhttp.responseXML) ؛ flexbox.update () ؛ ) ) asynchronous.get ( "/ الخدمات / بلوق / نشرة / الحالي") ؛ )InitializePage الدالة () (/ / رمز تهيئة إضافية قطع المتصلة LoadAtomFeed () ؛ ) onload= "InitializePage ()"> النظر في مدونة جريئة. عندما يتم تحميل المستند ، هذا الحدث هو body.onload النار ، وهذا يستدعي الدالة InitializePage ، وهذا بدوره يستدعي الدالة LoadAtomFeed. في تنفيذ LoadAtomFeed ، الطبقة غير متزامن مثيل ، والتي بدورها instantiates الكائن XMLHttpRequest. مقال مقدم من سونيا Lande تنويه :موقعنا على الانترنت ليست مسؤولة عن محتوى هذه المادة. Webarticles هو حر للمعلومات. المهم : هذه المادة "اختبار خدمة ويب" وقد ترجم من قبل البرمجيات التلقائي. نشعر بالاسف من اجل أي الأخطاء الإملائية التي قد حدث. شكرا لتفهمكم.
|
|||||
| Online: 522 users browsing the articles directory |
|
|