স্বয়ংক্রিয় ইউনিট পরীক্ষার সৃষ্টি


11

ইউনিট টেস্ট কেসগুলি তৈরির জন্য স্বয়ংক্রিয়ভাবে ব্যবহৃত হতে পারে এমন কৌশলগুলি কী কী? কমপক্ষে একটি শালীন পরীক্ষার কেস কঙ্কালের উত্পন্ন করতে প্রতিটি শ্রেণিতে আপনার কী দিকগুলি দেখার প্রয়োজন?

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

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


আপনার প্রয়োজন সর্বশেষতম ভিজ্যুয়াল স্টুডিও ...
কাজটি

উত্তর:


5

আপনার কৌশল এবং কঙ্কাল নির্ভর করে যে আপনি কোন ধরণের পরীক্ষাগুলি তৈরি করছেন, কী ধরণের কভারেজ খুঁজছেন এবং আপনি যে ভাষা / পরিবেশের সাথে কাজ করছেন তার উপর নির্ভরযোগ্য নয়।

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

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

সুতরাং, এখানে কয়েকটি উপাদান যা আপনি দেখতে চাইবেন:

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

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


5

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

এই অ্যাপ্লিকেশনগুলি পরীক্ষার কেস উত্পন্ন করতে হিউরিস্টিক্স ব্যবহার করে। আমি নিশ্চিত নই যে এখানে একটি একক কাঠামো রয়েছে যা আপনি কঙ্কাল তৈরি করতে ব্যবহার করতে পারেন, তবে এমন কিছু নির্মাণ রয়েছে যা আপনি সন্ধান করতে পারেন। আমি লুপগুলি, শর্তাধীন বিবৃতিগুলি ( ifব্লকস, switch/ caseস্টেটমেন্টস) এবং ব্যতিক্রমগুলিতে মনোনিবেশ করতে এবং পরীক্ষার কেসগুলি তৈরি করি যা বিভিন্ন মৃত্যুদন্ড কার্যকর করার পথে বাধ্য করে।

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


কেবল আরও কিছু প্রচার দেওয়ার জন্য, ফ্যালকন একটি প্রকল্পে কোডপ্রো চেষ্টা করেছিলেন এবং তার অভিজ্ঞতাগুলি সম্পর্কে একটু ঝাপসা লিখেছিলেন


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

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

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

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

আমি এটি পরের সপ্তাহে একটি মাঝারি আকারের J2EE অ্যাপ্লিকেশন (120 কিলোক) পরীক্ষা করব যা কিছু সত্যিকারের শক্ত ব্যবসায়ের নিয়মকে অন্তর্ভুক্ত করে এবং এখানে আমার অভিজ্ঞতা সম্পর্কে আপনাকে বলব।
ফ্যালকন

1

কয়েক বছর আগে একটি নেট প্রকল্পের জন্য ইউনিট পরীক্ষার গতি বাড়ানোর জন্য আমি একটি জেনারেটর লিখেছিলাম wrote ইউনিট পরীক্ষাবিহীন একটি বৃহত কোডবেস ছিল এবং এটি প্রাথমিক বিকাশ দ্রুত বাড়ানোর লক্ষ্যে ছিল to এখানে কয়েকটি নোট যা সাহায্য করতে পারে:

  • আমার সুযোগটি ছিল যে মূল কাঠামোটি যার উপরে প্রকল্পটি বিকাশ করা হয়েছিল স্ট্যান্ডার্ড ক্রিয়াকলাপ এবং শ্রেণি নামকরণ সরবরাহ করে। আপনি যদি নিজের লেখার কথা ভাবছেন তবে এর মতো একটি মানক কাঠামো ব্যাপকভাবে সহায়তা করবে।
  • data-driven testingযদি আপনার কোডবেস অনুমতি দেয় তবে ব্যবহার করা অনেক সহায়তা করে। পরীক্ষার কাঠামো পরীক্ষার ডেটা সংরক্ষণ করার জন্য প্রতিটি ইউনিট পরীক্ষার জন্য একটি ডাটাবেস টেবিল তৈরি করে, যাতে সেই টেবিলের প্রতিটি সারি পৃথক পরীক্ষা ছিল এবং কোনও অতিরিক্ত কোডের প্রয়োজন হয় না ( প্রতিনিধিত্বের নিয়ম )। এই মুহুর্ত থেকে, আসল পরীক্ষাগুলি সহজেই স্বয়ংক্রিয়ভাবে তৈরি করা যেতে পারে বা ম্যানুয়ালি প্রবেশ করা যেতে পারে।
  • ফলাফল ইউনিট পরীক্ষাগুলি সহজ ছিল তবে তারা smoke testকমপক্ষে সে হিসাবে কাজ করেছিল । উচ্চ ঝুঁকির ক্ষেত্রগুলির জন্য, অতিরিক্ত ম্যানুয়াল পরীক্ষাগুলি লিখিত ছিল were

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

(পার্শ্ব-নোট হিসাবে, পেক্স রয়েছে , তবে এটি নেট।)

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