প্রটেক্টর এবং কর্ম একসাথে ব্যবহার করা যেতে পারে?


104

যদি চাঁদা আমি এখনও সঙ্গে এটি ব্যবহার করতে সক্ষম হবে E2E পরীক্ষার জন্য কৌণিক দৃশ্যপট রানার প্রতিস্থাপন করা হয়, এর মানে কি কর্মফল আমার E2E পরীক্ষামূলক কাঠামো হিসেবে?


IMO আপনি সক্ষম হতে হবে। কর্ম শুধু পরীক্ষার রানার। একবার আপনি প্রোটেক্টারে আপনার পরীক্ষার কেসগুলি লিখতে / তৈরি করার পরে .... যখন জিজ্ঞাসা করা হয় তখন এটি কেবল চালাতে সক্ষম হবে। ঠিক একইভাবে আপনি কর্মকে উপস্থিত E2E পরীক্ষা চালানোর জন্য বলতে পারেন।
চালান

1
@ কিপ ওয়েবড্রাইভার ওয়েবড্রাইভার প্রোটোকলের মাধ্যমে ব্রাউজারগুলিতে স্প্যান করে এবং সংযোগ স্থাপন করে - এমন কোনও কিছু কর্মফল সমর্থন করে না (এটি এর পরিবর্তে ওয়েবসকেট এবং একটি ওয়েব পৃষ্ঠা ব্যবহার করে)। তারা অনুরূপ কাজগুলি খুব ভিন্ন উপায়ে সম্পাদন করে। এখন অবহেলিত কর্ম E2E পরীক্ষাগুলি ওয়েবড্রাইভার ব্যবহার করে না এবং এর জন্য ক্ষতিগ্রস্থ হয় - তাদের অবশ্যই ব্রাউজারের মধ্যে রাষ্ট্র বজায় রাখতে হবে (ওয়েবড্রাইভারের অবস্থা সম্পূর্ণ ব্রাউজার প্রক্রিয়ার বাইরে) outside
অ্যান্ডি

উত্তর:


102

প্রটেক্টর বর্তমান রক্ষণাবেক্ষণকারী দ্বারা প্রস্তাবিত নয়:

https://github.com/angular/protractor/issues/9#issuecomment-19927049

অভিভাবক এবং কর্ম একসাথে ব্যবহার করা উচিত নয়; পরিবর্তে তারা পরীক্ষা চালানোর জন্য পৃথক সিস্টেম সরবরাহ করে। প্রোটেক্টর এবং কর্ম পরীক্ষার বিভিন্ন দিক coverেকে রাখে - কর্ম বেশিরভাগ ইউনিট পরীক্ষার জন্য করা হয়, অন্যদিকে প্রটেক্টর শেষ পরীক্ষার জন্য ব্যবহার করা উচিত।

প্রোটেক্টর ওয়েবড্রাইভারজেএস-এর শীর্ষে নির্মিত, যা ব্রাউজারগুলি সরবরাহ এবং ড্রাইভ পরীক্ষার প্রয়োগের জন্য সেলেনিয়াম / ওয়েবড্রাইভার সার্ভার ব্যবহার করে। খাঁটি WebDriverJS এর ​​উদাহরণগুলি এখানে পাওয়া যাবে: http://code.google.com/p/selenium/wiki/WebDriverJs

এবং

https://github.com/angular/protractor/issues/9#issuecomment-19931154

জর্জিওস - আমি মনে করি প্রটেক্টর এবং কর্মকে আলাদা রাখার জন্য এটি বোধগম্য হয়েছে - শেষের পরীক্ষার শেষের জন্য, আপনি দেশীয় ইভেন্টের ড্রাইভিং এবং ওয়েবড্রাইভারের নমনীয়তা চান, যখন ইউনিট পরীক্ষার জন্য আপনি দ্রুত কার্যকর করতে চান এবং ফাইলগুলি স্বতঃবাহিত করতে চান।


এটি কি এখনও সত্য যে আমাদের কর্ম থেকে প্রটেক্টর চালানো উচিত নয়?
এরিকগ্রিফিন

@ লেট উইজার্ড একেবারে সত্য, কেবল আপনাকেই করা উচিত নয়, আপনিও পারবেন না :)
দিমিত্রি জয়েটসেভ

74

হালনাগাদ. এখানে একটি সাধারণ প্যাকেজ যা আমি তৈরি করেছি একটি একক কমান্ডের সাহায্যে কোনও প্রকল্পে ন্যূনতম কর্মফল সেটআপ করতে npm install min-karma


আমি কর্মপ্রোটেক্টর সম্পর্কে কিছু সম্ভাব্য ভুল ধারণা পরিষ্কার করতে চাই । কর্ম এফএকিউ আসলে প্রকৃতপক্ষে অ্যাঙ্গুলারের সিনারিও রানার জন্য অ্যাডাপ্টারের কথা উল্লেখ করে যা প্রটেক্টরের পরিবর্তে প্রস্তাবিত বলে প্রত্যাখ্যানিত বলে মনে হয় ।


কর্মফল

কর্মফল একটি পরীক্ষা রানার যে চালানো হবে হয় জাভাস্ক্রিপ্ট ফাইল নিদিষ্ট মধ্যে আপনি ফাইল কনফিগারেশন স্পষ্টভাবে বা ব্যবহার নোড-globs । (নন-জাভাস্ক্রিপ্ট বহিরাগত টেম্পলেটগুলির জন্য , কৌণিক ইউনিট পরীক্ষার গাইডটি প্রথমে জাভাস্ক্রিপ্টে সংকলন করতে কর্ম html প্রিপ্রসেসর ব্যবহার করার পরামর্শ দেয়))

এই হতে পারে সব আপনার সোর্স ফাইল, কিছু তাদের, তাদের প্লাস কিছু কিছু অতিরিক্ত ফাইল বা ফাইলগুলি অপ্রাসঙ্গিক আপনার প্রকল্পে, শুধুমাত্র কিছু অতিরিক্ত কনফিগারেশন প্রদানের - আপনি এটির নাম দিন! আপনার কাছে বিভিন্ন উদ্দেশ্যে একাধিক কর্মফল কনফিগারেশন ফাইল থাকতে পারে, যা আপনি সমান্তরাল বা একের পর এক চালাতে পারেন। প্রতিটি কর্ম প্রক্রিয়া ব্রাউজারগুলির নিজস্ব সেট চালু করে (বর্তমানে এটি উপলব্ধ

কেবলমাত্র ফাইলের সেট চালানোর জন্য কর্মের এই বৈশিষ্ট্যটি প্রতিটি উত্স ফাইল সম্পাদনার উপরে পটভূমিতে চলমান দ্রুত পরীক্ষার জন্য নিখুঁত করে তোলে এবং তাত্ক্ষণিক প্রতিক্রিয়া পান যা উজ্জ্বল! একমাত্র নেতিবাচক হ'ল "গোলমাল" ত্রুটি প্রতিবেদন যা আশাবাদী উন্নতি করবে!


কর্মফল কেবল ইউনিট পরীক্ষার জন্য নয়

ইউনিট পরীক্ষাটি আপনার উত্স কোডের একক ইউনিটের জন্য। অ্যাঙ্গুলারের ক্ষেত্রে একটি সাধারণ ইউনিট হয় কৌণিক উপাদান ( Service, Factory, Provider, Controller, Filter, Directiveইত্যাদি)। আপনার Controllersপাতলা রাখতে মনে রাখবেন , পরবর্তীগুলির জন্য অনেকগুলি ইউনিট পরীক্ষাগুলি একটি লাল পতাকা

একটি ইউনিট পরীক্ষায় , কোডের অন্যান্য প্রতিটি ইউনিট, যার উপর এই ইউনিট নির্ভর করে (তথাকথিত ইউনিটের নির্ভরতা) একই সময়ে পরীক্ষা করা উচিত নয়। পরিবর্তে তাদের "উপহাস" করা উচিত, উদাহরণস্বরূপ ডামি উদাহরণগুলির মতো সাধারণ কিছু দ্বারা প্রতিস্থাপন। কৌণিক দুর্দান্ত পরিবেশের সমর্থন সরবরাহ করে । আদর্শভাবে আপনি সরাসরি এই সমস্ত পরীক্ষাগুলি আপনার পরীক্ষার ভিতরে দেখতে চান, সুতরাং আপনাকে কখনই ভাবতে হবে না যে এই সমস্ত নির্ভরতা কোথা থেকে এসেছে।

কর্ম একীকরণ পরীক্ষার জন্য ঠিক ততটাই কার্যকর , যেখানে সোর্স কোড ইউনিটের একটি গোষ্ঠী একসাথে পরীক্ষা করা হয়, কেবলমাত্র তাদের কিছু নির্ভরতা উপহাস করা হয়। এটি মনে রাখা জরুরী যে কোনও নির্ভরতা আপনার উত্স কোড মডিউলগুলি থেকে ডিফল্টরূপে সরবরাহ করা হয় (যতক্ষণ না সেই মডিউলগুলি আপনার পরীক্ষায় সরাসরি ইনজেকশন দেয় , বা সেগুলি ইঞ্জেকশিত অন্যান্য মডিউলগুলির নির্ভরতা হয় (এই ক্ষেত্রে আপনাকে সেগুলি ইনজেকশন দেওয়ার দরকার নেই) are , তবে এটির কোনও ক্ষতি হবে না) The বিদ্রূপযুক্ত নির্ভরতা সরবরাহিতগুলিকে ওভাররাইড করবে।

দ্রুত এবং ঘন ঘন সঞ্চালন কর্মার প্রধান বৈশিষ্ট্য । এর অর্থ আপনি যে কোনও সার্ভারের অনুরোধগুলি, যে কোনও ডাটাবেস অনুসন্ধানগুলি, যে কোনও কিছু সেকেন্ডের ভগ্নাংশের চেয়ে বেশি সময় নিতে পারে তা এড়াতে চান। ( অন্যথায় এটি দ্রুত হবে না! ) এই দীর্ঘ প্রক্রিয়াগুলি হ'ল আপনি বিদ্রূপ করতে চান । এটি $httpআপনার নিয়ন্ত্রকদের সরাসরি বা কোনও জটিল ব্যবসায়িক যুক্তিযুক্ত ইউনিটের মতো কাঁচা নিম্ন স্তরের পরিষেবাগুলি কেন রাখা খারাপ অভ্যাস তা এটিও ব্যাখ্যা করে । সেই নিচু স্তরের যোগাযোগ পরিষেবাদিগুলিকে ছোট উত্সর্গীকৃত পরিষেবাদিগুলিতে মুড়িয়ে দেওয়ার মাধ্যমে আপনি "তাদের উপহাস করা" আরও সহজ করে তুলুন।

কি কর্মফল করে না আপনার সাইট চলমান যেমন যা কি এন্ড-টু-এন্ড (E2E) পরীক্ষামূলক হয়। নীতিগতভাবে, আপনি সাইট বা এর টুকরো পুনরায় তৈরি করতে কৌনিক অভ্যন্তরীণ পদ্ধতি ব্যবহার করতে পারেন। যা ছোট ছোট টুকরো জন্য কার্যকর এবং দ্রুত উপায় যেমন পরীক্ষার দিকনির্দেশনার জন্য।

যাই হোক, তাই উপায় প্রস্তাবিত নয় আপনার পরীক্ষা ভিতরে জটিল কোড নিক্ষেপ করা। আপনি যত বেশি এটি করেন, তত বেশি সুযোগ হ'ল আপনি যে কোডটি পরীক্ষা করছেন তার পরিবর্তে আপনি সেই কোডটিতে ত্রুটি করেছেন ।

এজন্য আমি নিম্ন স্তরের পদ্ধতিগুলি ব্যবহার করে পরীক্ষার পদ্ধতিগুলির প্রায়শই জটিল পদ্ধতিটিকে ব্যক্তিগতভাবে অপছন্দ করি $http। নিম্ন স্তরের পদ্ধতির কোনও রেফারেন্সকে আপনার নিজের ডেডিকেটেড পদ্ধতিগুলিতে বিচ্ছিন্ন করতে এটি আরও পরিশ্রমী কাজ করে , যার একক দায়িত্ব হ'ল HTTP অনুরোধ করা। এই উত্সর্গীকৃত পদ্ধতিগুলি কোনও জাল নয়, আসল ব্যাকএন্ডের সাথে কাজ করতে সক্ষম হওয়া উচিত ! কোনটি আপনি সহজেই পরীক্ষা পারেন - ম্যানুয়ালি বা এমনকি পুরোপুরি জরিমানা কর্মফল দিয়ে চলছে অন্য বিশেষ কনফিগ আপনি এক সাধারণত চালানোর জন্য ব্যবহৃত যে কনফিগ মিশ্রিত না যেমন, যতদিন কর্মফলনিয়মিত এবং দ্রুত এখন, আপনার উত্সর্গীকৃত ছোট পরিষেবাগুলি পরীক্ষা করার পরে, আপনি আপনার অন্যান্য যুক্তি পরীক্ষা করতে নিরাপদে এবং সহজেই তাদের উপহাস করতে পারেন এবং এই নিয়মিত কর্মফলের জন্য এই পরীক্ষাগুলি স্থাপন করতে পারেন।


সংক্ষেপ. জাভাস্ক্রিপ্ট ফাইলের কোনও সেট চালানোর জন্য কর্মফল ব্যবহার করুন । এটি দ্রুত (হওয়া উচিত) আপনি আপনার সম্পূর্ণ অ্যাপ্লিকেশনটি দেখতে পাচ্ছেন না, সুতরাং কার্যকর এবং নির্ভরযোগ্যতার সাথে চূড়ান্ত ফলাফলটি পরীক্ষা করতে পারবেন না । আমি কি এটি প্রটেক্টর দিয়ে চালাতে পারি ? কেন আমি? প্রটেক্টর চালানো আমার পরীক্ষাগুলি ধীর করে দিয়েছিল কর্মের উদ্দেশ্যকে পরাস্ত করে । প্রোটেক্টর আলাদাভাবে চালানো সহজ ।


চাঁদা

প্রটেক্টর হ'ল:

AngularJS অ্যাপ্লিকেশনগুলির জন্য একটি শেষ থেকে শেষের কাঠামো। প্রোটেক্টর একজন বাস্তব ব্রাউজারে চলমান আপনার অ্যাপ্লিকেশনটির বিরুদ্ধে পরীক্ষা চালায়, এটি ব্যবহারকারী হিসাবে তার সাথে যোগাযোগ করে।

সুতরাং প্রোটেক্টর ঠিক তাই করেন যা কর্ম নয় - আপনার আসল চূড়ান্ত অ্যাপ্লিকেশনটি চালান। এটি এর শক্তি এবং সীমাবদ্ধতা উভয়ই প্রকাশ করে:

সম্পূর্ণ অ্যাপ্লিকেশন চালানোই একমাত্র নির্ভরযোগ্য চূড়ান্ত পরীক্ষা যা আপনার অ্যাপ্লিকেশন প্রত্যাশা অনুযায়ী কাজ করে। আপনি সম্পূর্ণ ব্যবহারকারীর গল্পের পরিস্থিতি লিখতে পারেন এবং এগুলি আপনার পরীক্ষায় ফেলতে পারেন!

তবে আপনার উত্স কোডের স্বতন্ত্র ইউনিটকে আলাদা না করে ত্রুটিগুলি ট্র্যাক করা আরও শক্ত is এজন্য প্রথমে আপনার জাভাস্ক্রিপ্ট কোডটি পরীক্ষা করার জন্য আপনার এখনও কারমা প্রয়োজন ।


এখন আমি কি কর্মের সাথে প্রটেক্টর চালাতে চাই ? আমি অবশ্যই এগুলিকে সমান্তরালভাবে পৃথক টার্মিনাল উইন্ডোতে চালাতে পারি। আমি, নীতিগতভাবে, যদি আমার প্রয়োজন হয় তবে তাদের টেস্ট ফাইলগুলি ভাগ করে নিতে পারি, তবে সাধারণত আমি তা না করতাম। কেন? কারণ আমি একক উত্সর্গীকৃত উদ্দেশ্যে আমার পরীক্ষা ছোট রাখতে চাই।

উভয় রানারদের জন্য দরকারী টেস্টিং ম্যাক্রোগুলি সংজ্ঞাযুক্ত একটি ফাইলই ব্যতিক্রম । এটি যাইহোক, কোনও পরীক্ষার ফাইল নয় তবে একটি ম্যাক্রো সংজ্ঞা ফাইল হবে

তা ছাড়া, আমি আমার পরীক্ষার মধ্যে একটি স্পষ্ট বিচ্ছেদ পছন্দ করি। এগুলি প্রায়শই এবং দ্রুত চালানো হয় এবং সম্পূর্ণ অ্যাপ্লিকেশনের জন্য। এটি কার্ম ব্যবহার করার সময় এবং প্রটেক্টর এর মধ্যে স্পষ্ট বিচ্ছেদ তৈরি করে ।


আমি যদি ইউনিট টেস্টিংয়ের পাশাপাশি e2e টেস্টিং চাই তবে আমাকে ইউনি টেস্টিংয়ের জন্য কর্ম পরিবেশের কনফিগার করতে হবে এবং ইউআই টেস্টিং বা ই 2 ই পরীক্ষার জন্য প্রটেক্টর করতে হবে?
সুনীল গার্গ

@ সুনিলগার্গ হ্যাঁ, যদি উভয়ই ব্যবহার করতে চান তবে আমি যেমন লিখেছি, কর্মফল কেবল ইউনিট পরীক্ষার জন্য নয়।
দিমিত্রি জইতসেভ

1

কর্মটি কৌণিক দল দ্বারা সরবরাহ করা একটি পরীক্ষামূলক রানার, কর্ম একাধিক ব্রাউজারগুলিতে আপনার পরীক্ষাগুলি কার্যকর করবে যা আমাদের ব্রাউজারগুলিতে আমাদের অ্যাপ্লিকেশনটি সামঞ্জস্য করে তা নিশ্চিত করবে। কৌণিক জেএসের জন্য ইউনিট টেস্টটি করমা + জুঁই ব্যবহার করা যেতে পারে

জুঁই একটি জাভাস্ক্রিপ্ট ইউনিট পরীক্ষার কাঠামো এবং এটি আমাদের অ্যাপ্লিকেশন পরীক্ষা করার জন্য ইউটিলিটিগুলি সরবরাহ করবে। এটি কৌণিক কাঠামোতে সেরা কাজ করে এবং এইভাবে আমাদের "স্বয়ংক্রিয় ইউনিট পরীক্ষার সরঞ্জাম" পছন্দ করে। https://github.com/shahing/testingangularjs

এবং প্রোটেক্টরটি কৌণিক এবং কৌণিক জেএস অ্যাপ্লিকেশনগুলির জন্য একটি শেষ থেকে শেষের কাঠামো। প্রোটেক্টর আপনার অ্যাপ্লিকেশনটির বিরুদ্ধে সত্যিকারের ব্রাউজারে, হেডলেস ব্রাউজারগুলিতে, ক্রস ব্রাউজারের পরীক্ষার বিরুদ্ধে পরীক্ষা চালায় এবং সসলেবগুলিতে হোস্ট করা যায়।

https://github.com/shahing/Protractor-Web-Automation


1

হ্যাঁ, আপনি একসাথে কর্ম এবং প্রোটেক্টর ব্যবহার করতে পারেন। কর্মফল কৌনিক কমান্ড ব্যবহার করে আপনি যে উপাদান তৈরি করেছিলেন তা ইউনিট পরীক্ষার জন্য ব্যবহার করা হয় আপনি সেই উপাদানগুলি কর্ম ব্যবহার করে পরীক্ষা করতে পারেন। প্রোটেক্টর শেষ থেকে শেষ পরীক্ষার জন্য ব্যবহৃত হয়। এটি মূলত ইউআই পরীক্ষার জন্য ব্যবহৃত হয়।


এটি অর্জনের জন্য আপনাকে উভয় কর্ম ও প্রটেক্টর জন্য কনফিগারেশন যুক্ত করতে হবে
রাহুল সোলঙ্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.