একটি CSV পার্সার জন্য ইউনিট পরীক্ষা


14

সিএসভি পার্সার ইউনিট পরীক্ষার জন্য আমার কোন পরীক্ষাগুলি ব্যবহার করা উচিত?

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


5
আপনি বিভিন্ন টেস্ট ফাইল তৈরির জন্য জেনারেটেটা ডট কম পরীক্ষা করেছেন?
অ্যারন ম্যাকআইভার

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

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

লেখক পরীক্ষার ডেটা নয়, পরীক্ষার মামলাগুলির সন্ধান করছেন। আমি চাই যে আমিও জানতে চাই যে বিভিন্ন কিছুর জন্য সর্বজনীন পরীক্ষাগুলি কোথায় খুঁজে পাব।
ProdigySim

উত্তর:


6

আমি সবেমাত্র https://github.com/maxogden/csv-spectrum পেয়েছি :

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

এই সংগ্রহস্থলের লক্ষ্যটি পুরো সিএসভি বর্ণালীকে উপস্থাপন করার জন্য পরীক্ষার কেসগুলি ক্যাপচার করা।


এটি আকর্ষণীয় যে গিথহাবের নিজস্ব সিএসভি পার্সার যখন CSVs ( github.com/maxogden/csv-spectrum/blob/master/csvs/… ) দেখানোর চেষ্টা করার সময় পরীক্ষাগুলিতে ব্যর্থ হয়েছিল
ইয়ান বয়ড

16

এখানে কয়েকটি সীমানা মামলা রয়েছে যাগুলির জন্য আপনার ভেবে দেখার এবং পরীক্ষা করা উচিত ছিল cases

  1. বেসিক ফিল্ড। ,foo,
  2. বেসিক উদ্ধৃত ক্ষেত্র। ,"foo",
  3. এম্বেড করা নতুনলাইন সহ উদ্ধৃত ক্ষেত্র। ,"foo\nbar"
  4. এম্বেড থাকা কমা সহ উদ্ধৃত ক্ষেত্র। ,"foo,bar"
  5. এম্বেড করা উক্তি সহ উদ্ধৃত ক্ষেত্র। ,"foo""bar"
  6. আপনি খালি স্ট্রিং এবং নালগুলির মধ্যে পার্থক্য করেন? আপনি যদি তা করেন তবে ,,এটি নাল ,"",হওয়া উচিত এবং খালি স্ট্রিং দেওয়া উচিত।
  7. আপনি কি ডেটা ধরণের সনাক্ত করতে এবং সঠিক কাজটি করার চেষ্টা করছেন? সিএসভি প্রায়শই সংখ্যার উপাত্তের জন্য ব্যবহৃত হয়। আপনি এটির জন্য উপযুক্ত মনে করেন এমন পরীক্ষাগুলি যুক্ত করুন।
  8. আপনি যদি ডেটা লিখেন তবে আপনার উপরের সমস্তগুলি কভার করা উচিত।
  9. আপনি বিভিন্ন সংখ্যক ক্ষেত্রের লাইনের সাথে কী করবেন? (এটা পরীক্ষা করো.)
  10. ফাঁকা লাইনের পিছনে আপনি কী করবেন? (এটা পরীক্ষা করো.)
  11. বড় ফাইলের পারফরম্যান্স কেমন হয়? (এটি পরীক্ষা করে দেখুন I've

10

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

বিভাগ 2 এর তালিকা থেকে কিছু পরীক্ষার মামলা উত্পন্ন করা শুরু করা মোটামুটি সোজা বলে মনে হচ্ছে:

  1. প্রতিটি রেকর্ড একটি পৃথক লাইনে অবস্থিত, একটি লাইন ব্রেক (সিআরএলএফ) দ্বারা বিসীমাবদ্ধ। উদাহরণ স্বরূপ:

    এএএ, বিবিবি, সিসিসি সিআরএলএফ zZ, হ্যাঁ, এক্সএক্সএক্সএক্স সিআরএলএফ

  2. ফাইলের সর্বশেষ রেকর্ডটিতে শেষ পংক্তি বিরতি থাকতে পারে বা নাও থাকতে পারে। উদাহরণ স্বরূপ:

    এএএ, বিবিবি, সিসিসি সিআরএলএফ zZ, হ্যাঁ, এক্সএক্সএক্সএক্স

  3. স্বাভাবিক রেকর্ড লাইনের মতো একই ফর্ম্যাট সহ ফাইলের প্রথম লাইন হিসাবে উপস্থিত হতে পারে optionচ্ছিক শিরোনাম লাইন। এই শিরোনামটিতে ফাইলের ক্ষেত্রগুলির সাথে সম্পর্কিত নামগুলি থাকবে এবং ফাইলের বাকী রেকর্ডগুলির মতো একই ক্ষেত্র থাকতে হবে (শিরোনামের উপস্থিতি বা অনুপস্থিতি এটির thisচ্ছিক "শিরোনাম" প্যারামিটারের মাধ্যমে নির্দেশ করা উচিত) MIME ধরণ). উদাহরণ স্বরূপ:

    ক্ষেত্রের নাম, ক্ষেত্রের নাম, ক্ষেত্রের নাম CRLF aaa, bbb, ccc CRLF zzz, yy, xxx CRLF

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

    AAA, BBB, CCC

  5. প্রতিটি ক্ষেত্র ডাবল উদ্ধৃতিতে আবদ্ধ থাকতে পারে বা নাও থাকতে পারে (তবে কিছু প্রোগ্রাম, যেমন মাইক্রোসফ্ট এক্সেল, ডাবল উদ্ধৃতি মোটেও ব্যবহার করে না)। ক্ষেত্রগুলি যদি ডাবল উদ্ধৃতি দিয়ে আবদ্ধ না হয়, তবে ক্ষেত্রগুলির ভিতরে ডাবল উদ্ধৃতি উপস্থিত নাও হতে পারে। উদাহরণ স্বরূপ:

    "এএএ", "বিবিবি", "সিসিসি" সিআরএলএফ জেডজেজ, হ্যাঁ, এক্সএক্সএক্সএক্স

  6. লাইন ব্রেক (সিআরএলএফ), ডাবল উদ্ধৃতি এবং কমাগুলি সহ ক্ষেত্রগুলিকে ডাবল-কোটে আবদ্ধ করা উচিত। উদাহরণ স্বরূপ:

    "আআ", "বি সিআরএলএফ বিবি", "সিসিসি" সিআরএলএফ জেডজেজ, হ্যা, এক্সএক্সএক্স

  7. যদি ক্ষেত্রগুলি আবদ্ধ করতে ডাবল-কোট ব্যবহার করা হয়, তবে ক্ষেত্রের অভ্যন্তরে একটি ডাবল-উদ্ধৃতি অবশ্যই অন্য একটি ডাবল উদ্ধৃতি দিয়ে তার আগে পালাতে হবে। উদাহরণ স্বরূপ:

    "AAA", "খ" "BB", "CCC"


8

মার্কিন আদমশুমারির তথ্য সিএসভিতে উপলব্ধ

আমি কিছুক্ষণ ধরে এটিতে কাজ করে যাচ্ছি। এটি অবশ্যই একটি দুর্দান্ত পরীক্ষা হওয়ার পক্ষে যথেষ্ট অদ্ভুত, এবং এটির প্রচুর টন রয়েছে।


আপনি এটি কি করে সে সম্পর্কে আরও ব্যাখ্যা করতে আপত্তি করবেন এবং আপনি কেন জিজ্ঞাসিত প্রশ্নের উত্তর হিসাবে এটি সুপারিশ করবেন? "লিঙ্ক কেবল-উত্তর" বেশ স্ট্যাক এক্সচেঞ্জ এ স্বাগত জানাই হয় না
মশা

4

এই ডিরেক্টরিটি পরীক্ষা করে দেখুন এবং * .t ফাইলগুলিতে কোডটি দেখুন:

http://cpansearch.perl.org/src/MAKAMAKA/Text-CSV-1.32/t/

(সংস্করণ নম্বর -১.৩২ অবশেষে পরিবর্তিত হতে পারে তাই লিঙ্কটি "মৃত" হয়ে উঠতে পারে trial

https://metacpan.org/pod/Text::CSV

এবং নতুন সংস্করণটির উত্স কোডটিতে "ব্রাউজ করুন" এর মাধ্যমে ক্লিক করুন)

পাঠ্য :: সিএসভি_এক্সএস সিএসভি ফাইলগুলি পার্স করার জন্য একটি পরিপক্ক পার্ল মডিউল। * .T ফাইলগুলি পার্ল 5 তে লিখিত আছে, মডিউলের স্ব-পরীক্ষার জন্য এগুলিতে প্রচুর টেস্টকেস রয়েছে, সেগুলি মডিউল ইনস্টলেশনের সময় করা উচিত।

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