আমি কীভাবে ফাইল রিডার পরীক্ষা করব?


19

আমি কয়েকটি ফাইল ফর্ম্যাট নিয়ে একটি প্রকল্পে কাজ করছি। কিছু ফর্ম্যাটগুলি .xsds দ্বারা নির্দিষ্ট করা হয়, অন্যরা তাদের নিজ নিজ ওয়েবসাইটে ডকুমেন্টেশন দ্বারা, এবং কিছু কাস্টম ইন হাউস ফর্ম্যাটগুলির কোনও ডকুমেন্টেশন নেই। Mwahahahaha।

সমস্যা কি?

আমি আমার ফাইল পাঠকদের পরীক্ষা করতে চাই, তবে কীভাবে এটি করা যায় তা আমি পুরোপুরি নিশ্চিত নই। প্রয়োগের প্রবাহটি হ'ল:

file.___  ===> read by FileReader.java ===> which creates a Model object

FileReaderইন্টারফেস যেখানে

public interface FileReader {
    public Model read(String filename);
}

Modelচারিত্রিক বৈশিষ্ট্য আছে যেগুলো কখন ফাইলটি পড়া হয় জনবহুল করছে একটি নম্বর আছে। দেখে মনে হচ্ছে এরকম কিছু

public class Model {
    List<String> as;
    List<String> bs;
    boolean isAPain = true;
    // ...
}

আমি কি চেষ্টা করেছি?

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

যদিও এতে কয়েকটি সমস্যা রয়েছে:

  • ফাইল তা উত্পন্ন যে না চেহারা বাস্তব ফাইলের মত। জেনারেটর কোনওভাবেই প্রসঙ্গে সচেতন নয়।
  • জেনারেটর প্রান্তের কেসগুলির জন্য উত্পন্ন হয়েছে কিনা তা সনাক্ত করা শক্ত কারণ আমি নিজেই ভেরিয়েবলগুলি সেট করছি। আমার এক ডজন নমুনা ফাইল তৈরির চেয়ে এই পদ্ধতিটি সবে ভাল।

এটি করার আরও ভাল উপায় আছে?

সম্পাদনা: একত্রে পরিবর্তিত ইউনিট যেহেতু আমি আসলে যা বোঝাতে চাইছি।

সম্পাদনা 2: আমি উল্লেখ করা প্রান্ত মামলাগুলির একটি উদাহরণ এখানে।

প্রতিটি ফাইল শীর্ষে এবং প্রান্তগুলি দিয়ে তৈরি একটি গ্রাফ উপস্থাপন করে। এই শীর্ষে এবং প্রান্তগুলি বিভিন্ন উপায়ে সংযুক্ত করা যেতে পারে, সুতরাং:

v1 -- e1 --> v2 <-- e2 -- v3

এর থেকে আলাদা

v1 -- e1 --> v2 -- e2 --> v3

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


1
ডেটা-চালিত পরীক্ষা মাথায় আসে। আপনি কি প্রান্তের মামলার নিখুঁত উদাহরণ দিতে পারেন (প্রকৃত FileReaderবাস্তবায়নে সম্ভবত ট্রিগার হতে পারে এমন প্রান্তের ক্ষেত্রে ভিত্তিক )? উদাহরণ: প্রতিটি টেবিল এন্ট্রির জন্য, চিত্র ফাইলের ফর্ম্যাটগুলিতে প্রান্তের কেসগুলি প্রদত্ত , যদি বৈশিষ্ট্যের সারি / কলাম সংমিশ্রণ সমর্থন করা হয় তবে সেই সংমিশ্রণটি অন্তত একটি পরীক্ষার কেস (একটি ডেটা ফাইল) থাকা উচিত।
রওয়ং

@ রুং আমি একটি উদাহরণ যুক্ত করেছি তবে আমি নিশ্চিত নই যে এটি আপনাকে ধারণা দেয় কিনা। আমার ধারণা আমার সমস্যাটি এজ প্রান্তের ক্ষেত্রে একটি সাধারণ সমস্যা ie আমি কি কিছু মিস করেছি? যদিও, ডেটা-চালিত পরীক্ষা আকর্ষণীয় দেখায়। ধন্যবাদ!
sdasdadas

7
এছাড়াও, আমি এটি কেবল লক্ষ্য করেছি, তবে আমার প্রান্তের মামলাগুলি আক্ষরিকভাবে প্রান্তের মামলা are
sdasdadas

1
কেন হ্যান্ড ক্র্যাফট টেস্ট ফাইলগুলি না, এবং তারপরে সর্বদা একইগুলির বিরুদ্ধে চলে?
ববসন

@ بابসন এটি জেনারেটর ব্যবহারের চেয়ে কিছুটা খারাপ। সেক্ষেত্রে আমি প্রান্তের মামলাগুলি মিস করতে পারি (যেমন আমি সম্ভবত এখন নিখোঁজ রয়েছি), তবে আমি আমার টাইপিংয়ে ত্রুটিগুলিও প্রবর্তন করতে পারি। এবং বিশাল ফাইল সহ, এগুলি আমার নিজের তৈরি করতে বেশ কিছুটা সময় লাগবে।
sdas دادas

উত্তর:


19

প্রথমে আপনার লক্ষ্যগুলি কী তা নিয়ে কথা বলতে দিন:

  • আপনি অবশ্যই "ফাইল ফর্ম্যাটগুলি" পরীক্ষা করতে চান না - আপনি আপনার বিভিন্ন FileReaderবাস্তবায়ন পরীক্ষা করতে চান

  • আপনি স্বয়ংক্রিয় পরীক্ষার দ্বারা যথাসম্ভব বিভিন্ন ধরণের ত্রুটি খুঁজে পেতে চান

পুরো লক্ষ্যে পৌঁছানোর জন্য, আইএমএইচও আপনাকে বিভিন্ন কৌশল একত্রিত করতে হবে:

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

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

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


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