গুগল এসপ্রেসো বা রোবোটিয়াম [বন্ধ]


115

আমাকে অটোমেটেড ইউআই পরীক্ষার সরঞ্জামটি ব্যবহার করতে হবে এবং আমি রোবটিয়াম বনাম গুগল এসপ্রেসো ব্যবহারের মধ্যে বিভ্রান্ত।

দুজনের মধ্যে প্রধান পার্থক্য কী? একটিতে বিদ্যমান এমন বৈশিষ্ট্যগুলি রয়েছে যা অন্যটিতে নেই?


19
লোকেরা কোনও মন্তব্য না লিখে ডাউনটা করলে আমি সত্যই ঘৃণা করি। আমি যদি কোনো ব্যক্তি কেন তিনি / সে কি করছে হিসেবে লেখার কিছু মন্তব্য downvoting কৃতজ্ঞ হবে
Androidme

8
আমি মনে করি প্রশ্নটি খুব সহায়ক। প্রচুর বিকাশকারী নিজেকে এটি জিজ্ঞাসা করছেন। পার্থক্য কি? আমি মনে করি সমস্যাটিই আপনি জিজ্ঞাসা করছেন। আপনার এটি আরও বিশদে জিজ্ঞাসা করা উচিত এবং কোনটি ব্যবহার করবেন তা কেবল জিজ্ঞাসা করা উচিত নয়।
তসোমানিয়াক

8
এটিই আমি সঠিক উত্তর চেয়েছিলাম। পোস্ট করার জন্য ধন্যবাদ
রিচার্ড ফুং

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

উত্তর:


175

সম্পূর্ণ প্রকাশ: আমি এসপ্রেসোর অন্যতম লেখক।

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

গুগলে, আমরা রোবটিয়াম ব্যবহার করে শুরু করেছি কারণ এটি স্টক উপকরণের চেয়ে সুবিধাজনক ছিল (এটি তৈরির জন্য রোবটিয়াম বিকাশকারীদের কাছে টুপি)। তবে এটি এমন একটি কাঠামোর জন্য আমাদের চাহিদা পূরণ করেনি যা বিকাশকারীদের পক্ষে নির্ভরযোগ্য পরীক্ষাগুলি লেখা সহজ করে তোলে ।

রোবটিয়ামের চেয়ে এস্প্রেসোতে বড় অগ্রগতি:

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

  2. API- টি। এসপ্রেসোর একটি ছোট, সু-সংজ্ঞায়িত এবং পূর্বাভাসযোগ্য API রয়েছে, যা কাস্টমাইজেশনের জন্য উন্মুক্ত। আপনি স্ট্যান্ডার্ড হ্যামক্রাস্ট ম্যাচার্স ব্যবহার করে কীভাবে একটি ইউআই উপাদান সনাক্ত করতে হবে এবং তার পরে কোনও ক্রিয়া সম্পাদনের নির্দেশ দিন বা লক্ষ্য উপাদানটির উপর একটি দৃ check়তা পরীক্ষা করে দেখুন framework আপনি এটি রোবটিয়ামের এপিআই এর সাথে বিপরীতে করতে পারেন, যেখানে পরীক্ষার লেখক 30+ ক্লিক পদ্ধতি থেকে বেছে নেবেন বলে আশা করা হচ্ছে। আরও, রোবটিয়াম গেটকন্টরএটিভিটি (বর্তমান যাইহোক কী বোঝায়?) এবং গেটভিউয়ের মতো বিপজ্জনক পদ্ধতিগুলি উন্মোচিত করে যা আপনাকে মূল থ্রেডের বাইরের অবজেক্টগুলিতে পরিচালনা করতে দেয় (উপরের পয়েন্টটি দেখুন)।

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

পূর্ববর্তী উত্তরের বিপরীতে, এস্প্রেসো উল্লেখযোগ্য সংখ্যক ব্যবহারকারী সহ সমস্ত এপিআই সংস্করণে সমর্থিত (দেখুন: http://developer.android.com/about/dashboards/index.html )। এটি কিছু পুরানো সংস্করণে কাজ করে তবে সেগুলির পরীক্ষা করা সম্পদের অপচয় হবে। পরীক্ষার কথা বলছি ... এসপ্রেসো প্রতিটি পরিবর্তনের উপর একটি বিস্তৃত টেস্ট স্যুট (95% এর বেশি কভারেজ সহ) পাশাপাশি গুগল দ্বারা বিকাশ করা বেশিরভাগ অ্যান্ড্রয়েড অ্যাপ্লিকেশন দ্বারা পরীক্ষা করা হয়।


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

1
না - আপনি এএসপ্রেসোর সাথে আপনার প্রক্রিয়ার বাইরে ইউআইয়ের সাথে যোগাযোগ করতে পারবেন না। এটি উপকরণ কাঠামোর একটি সীমাবদ্ধতা।
ভ্যালেরাজাখারভ

1
@ ভালেরাজাখারভ :: হাই ... !! যেমনটি আপনি বলেছেন, এসপ্রেসো ইউআই থ্রেড সিঙ্ক্রোনাইজেশনের যত্ন নেবে এবং স্লিপস লাগানোর দরকার নেই। তবে আমার ক্ষেত্রে, আমি কয়েকটি টেস্টকেস লিখেছি এবং সমস্ত টেস্টকেসগুলি আমার স্থানীয় মেশিনে কাজ করছে (শুরু হিসাবে টেস্টসুইট প্রতি এক ঘুমের সাথে)। কিন্তু আমি যখন স্থানীয় / সার্ভার জেনকিনের সাথে চলি তখন প্রায় 99% টেস্টকেস ব্যর্থ হয়। আমি জেনকিনস এমুলেটরটিতে সমস্ত অ্যানিমেশন অক্ষম করেছি। বেশিরভাগ সময় আমি AppNotIdleException পাচ্ছি। আমি মূল কারণটি বের করতে অক্ষম। আপনি কি আমাকে সাহায্য করতে পারেন?
নরেশ গুন্ডা

@ রাদু এটি করেছে। আপনার মন্তব্য নাল এবং সঠিক ব্যাখ্যা ব্যতীত মনোযোগ আকর্ষণ করার মতো বোকামি প্রচেষ্টা বলে মনে হচ্ছে।
রাকিব

9

এস্প্রেসো রোবোটিয়ামের চেয়ে অনেক দ্রুত, তবে কেবলমাত্র কিছু এসডিকে সংস্করণে কাজ করে।

সুতরাং আপনি যদি এমন কোনও পরীক্ষা চান যা সমস্ত ডিভাইসে কাজ করে তবে রোবইটামে যান। যদি তা না হয় তবে এস্প্রেসোতে যান এবং ভুলে যাবেন না আপনি কিছু সময়ের জন্য বিটা পরীক্ষক হবেন।


একটি আপভোট আমাকে এই ট্যাগটির প্রতিশব্দ তৈরি করতে সহায়তা করবে ..;)
Snicolas

2
উপরের লিঙ্কটি পরিবর্তিত হয়েছে, এটি নতুন: google.github.io/android-testing-support-library/docs/espresso/…
ইভিন 1_
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.