কীভাবে পেয়ারা ইউনিট পরীক্ষা স্বয়ংক্রিয়ভাবে উত্পন্ন হয়েছে?


31

পেয়ারা ইউনিট পরীক্ষার কেস স্বয়ংক্রিয়ভাবে উত্পন্ন :

পেয়ারাটিতে ইউনিট পরীক্ষার বিস্ময়কর সংখ্যা রয়েছে: জুলাই ২০১২ পর্যন্ত, পেয়ারা পরীক্ষাগুলিতে ২৮6,০০০ এরও বেশি স্বতন্ত্র পরীক্ষার মামলা রয়েছে। এগুলির বেশিরভাগ স্বয়ংক্রিয়ভাবে উত্পন্ন হয়, হাতে লেখা নয়, তবে পেয়ারা পরীক্ষার কভারেজ অত্যন্ত বিশদভাবে বিশেষত com.google.common.collect এর জন্য।

এগুলি কীভাবে উত্পন্ন হয়েছিল? সেগুলি ডিজাইন এবং তৈরি করতে কোন কৌশল এবং প্রযুক্তি ব্যবহার করা হয়েছিল?


আমার মনে আছে কিছু গুগল ডুডের একটি বক্তব্য যা এই বিষয়টিকে স্পর্শ করেছে। যদিও নামটি সম্পর্কে কোনও ধারণা পাওয়া
যায়নি

3
প্যাকেজ com.google.common.collect.testing এর নামে "জেনারেটর" সহ প্রচুর ক্লাস রয়েছে - এটি পরীক্ষার প্রজন্মের কাঠামোর মতো দেখায়। পরীক্ষার জন্য "কঙ্কাল" বা "বেস ক্লাস" হিসাবে নথিভুক্ত ক্লাসগুলির সাথে উপ-প্যাকেজগুলিও রয়েছে ...
gnat

1
@ জাগ্রত হ্যাঁ, আমি নিশ্চিত যে আমি এটি কোথাও দেখেছি seen com.google.common.collect.testing.features উদাহরণস্বরূপ দেখায় যে কোনও সংগ্রহ শ্রেণি সন্তুষ্ট হওয়া উচিত / বাছাই করে এবং পরীক্ষার কেসটি তাদের সংমিশ্রণ। এইভাবে তারা পরীক্ষার প্যারামিট্রাইজ করতে পারে
dzieciou


প্রশ্নটি সম্প্রদায়ের কাছ থেকে খুব বেশি মনোযোগ পেয়েছে তবে এখন পর্যন্ত এর কোন যুক্তিযুক্ত উত্তর নেই, তাই আমি মার্টিনের পরামর্শ অনুসরণ করেছি এবং এখানে এগুলি রেখেছি : sqa.stackexchange.com/questions/5214/…
dzieciou

উত্তর:


8

পরীক্ষার এই ভরগুলির একটি বড় অংশটি পেয়ারা সংগ্রহ বাস্তবায়নের জন্য। তারা জেনেরিক পরীক্ষাগুলি লিখেছেন যা সংগ্রহের ইন্টারফেসগুলিকে নিখুঁতভাবে পরীক্ষা করে এবং এটি প্রয়োগের ক্ষেত্রে স্যুট তৈরি করে। উদাহরণস্বরূপ বলা শ্রেণীর জন্য দেখ, , ।CollectionAddAllTesterListIndexOfTester

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

এটি 4 জুন নয়, 4 জুনে 3 ভিত্তিক, সাধারণত আপনার একটি TestCaseপদ্ধতি রয়েছে যার নাম পুরোপুরি প্রসারিত রয়েছে testSomething(), এবং জুনিত তাদের প্রতিফলিত করে চালায়। টেস্টলিব লাইব্রেরি এই পরীক্ষাগুলি চলার দিকে নজর রাখে যাতে জীবনচক্রটি দেখতে এই রকম হয়:

  • প্রতিটি বাস্তবায়নের জন্য আপনি পরীক্ষা করতে চান
  • প্রতিটি (প্রযোজ্য) পরীক্ষা পদ্ধতি জন্য
  • TestCaseউদাহরণ তৈরি করুন
  • সূচনা করুন TestSubjectGenerator- এটি সেই টেস্টলিব ইন্টারফেস যা আপনি প্রসারিত করেন যেখানে আপনি প্রকৃতপক্ষে পরীক্ষার বিষয় তৈরি করেন
  • প্রতিফলিতভাবে পরীক্ষা পদ্ধতি চালান। এই পদ্ধতির সময়, getSubjectGenerator()পরীক্ষার বিষয়টিতে অ্যাক্সেস দেয়

মূল বিটি হ'ল অতিরিক্ত সূচনা পদক্ষেপ যা তাদের জেনেরিক পরীক্ষার ক্ষেত্রে একটি নির্দিষ্ট পরীক্ষার বিষয় ইনজেক্ট করতে দেয়।

আমি নিজের ইন্টারফেসের জন্য টেস্টলিব জেনারেট স্যুট কীভাবে লিখব সে বিষয়ে একটি পোস্ট লিখেছিলাম

( স্কোয়া সাইটে একই প্রশ্নে পোস্ট করাও ))


6

ইউনিট পরীক্ষা জেনারেটর রয়েছে। উদাহরণস্বরূপ, .NET বিশ্বে মাইক্রোসফ্ট পেক্সের মতো কিছু এটি করতে পারে।

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


2
এটি কেবলমাত্র নেতিবাচক পাথ পরীক্ষার জন্য ব্যতিক্রমী পরীক্ষামূলক (ব্যতিক্রম, অবৈধ ইনপুট, ক্রাশ-এস, সময়সীমা) কার্যকর। আমি বিশ্বাস করি যে তারা সুখী পথের জন্য পরীক্ষাও করেছে এবং এর জন্য আরও স্থিতিশীলতার প্রয়োজন, কেবল স্থিতিশীল বিশ্লেষণ সরঞ্জাম চালু করা নয়।
dzieciou

এবং আমি জানি যে সুখী পথের পরীক্ষার উত্পন্ন করার জন্য উপায় এবং সরঞ্জাম রয়েছে (উদাহরণস্বরূপ, এই উত্তরটি দেখুন ), তবে আমি আগ্রহী যে
পেয়ারার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.