হাস্কেল ওয়ার্কফ্লো পরীক্ষা করছে


101

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

আমি এটি দেখেছি:

যা সমস্ত তাদের ডোমেনগুলিতে খুব ভালভাবে কাজ করছে বলে মনে হচ্ছে তবে আমি পরীক্ষার জন্য একটি বিস্তৃত পদ্ধতির সন্ধান করছি এবং ভাবছিলাম যে অন্যান্য ব্যক্তিদের জন্য কী ভাল কাজ করেছে।

উত্তর:


70

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

  • পরীক্ষা-কাঠামো আপনার সমস্ত HUnit পরীক্ষা-কেস এবং কুইকচেক বৈশিষ্ট্যগুলিকে একটি জোতা থেকে চালানোর জন্য একটি স্টপ শপ সরবরাহ করে ।
  • কোড কভারেজটি এইচপিসি সরঞ্জাম আকারে জিএইচসিতে অন্তর্নির্মিত ।
  • মানদণ্ড কিছু দুর্দান্ত দুর্দান্ত বেঞ্চমার্কিং যন্ত্রপাতি সরবরাহ করে

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

http://github.com/ekmett/speculation

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

http://github.com/ekmett/speculation/blob/master/speculation.cabal

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

http://github.com/ekmett/speculation/blob/master/Setup.lhs

এবং তারপরে আপনি একটি প্রোগ্রামে কুইকচেক এবং হুনিট পরীক্ষাগুলি বান্ডিল করতে পরীক্ষা-কাঠামো ব্যবহার করতে পারেন:

http://github.com/ekmett/speculation/blob/master/Test.hs

সেখানকার ক্যাবলাল ফাইল কোড কভারেজ টেস্টিং সক্ষম করার জন্য -fhpc চালু করার বিষয়ে সতর্কতা অবলম্বন করে, এবং তারপরে সেটআপ.এলএক্সের টেস্টহুকটি ম্যানুয়ালি এইচপিসি চালায় এবং এর আউটপুটটি আপনার ডিসে লিখে দেয়।

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

http://github.com/ekmett/speculation/blob/master/Benchmark.hs

তারপরে আপনি কমান্ড লাইন থেকে আপনার বেনমার্কগুলি চালাতে পারেন এবং বেঞ্চমার্ক ফলাফলগুলি সহ পিপ-আপ কেডি উইন্ডোগুলি পেতে পারেন etc.

যেহেতু অনুশীলনে আপনি হ্যাশেল কোড বিকাশের সময় যে কোনও উপায়ে ক্যাবলে বাস করছেন, তাই আপনার সরঞ্জামচেইনটিকে এটির সাথে একীভূত করার পক্ষে অনেক অর্থ হয়।

সম্পাদনা করুন : ক্যাবল টেস্ট সমর্থন এখন বিদ্যমান। Http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/de વિકાસ ing- packages.html# test-suites দেখুন


2
এবং cabal benchএখন পাশাপাশি আছে।
nh2

6
সত্য। আমি নির্দেশ করবে github.com/ekmett/lens কিভাবে মোকাবেলা করার একটি আরো আধুনিক উদাহরণ হিসাবে cabal testএবং cabal bench, মিক্সিং HUnit, doctestএবং quickcheckসঙ্গে ভিত্তি করে পরীক্ষা criterionbenchmarks। কোড speculationচেয়েও পুরনো cabal testএবং cabal bench
এডওয়ার্ড কেএমইটিটি

2
@ অ্যাডওয়ার্ডকমেট: আমি দেখেছি যে লেন্স প্যাকেজটি কেবল এক্সটিকোড-স্টিডিও -১.০ পরীক্ষা স্যুট ইন্টারফেস ব্যবহার করে। ক্যাবল ব্যবহারকারী নির্দেশিকায় বলা হয়েছে যে, `detailed বিস্তারিত -১.০ ইন্টারফেসের জন্য নতুন পরীক্ষার স্যুট লেখার পক্ষে অগ্রাধিকার দেওয়া হয় ''। তাতে কোন মন্তব্য?
কপটন

9
@ ক্যাপ্টন তারা কখনও এটি প্রয়োগ করেনি। সেই ডকুমেন্টেশনটি আবার বাইরে নিয়ে গিয়ে গুলি করা দরকার।
এডওয়ার্ড কেএমইটিটি

2
দুর্ভাগ্যক্রমে, গিথুবের লিঙ্কগুলি সমস্ত মাস্টার শাখার দিকে নির্দেশ করেছে এবং দেখে মনে হচ্ছে পরীক্ষার সাথে সম্পর্কিত সমস্ত কিছুই ক্যাবল ফাইল থেকে সরানো হয়েছে, সুতরাং লিঙ্কগুলি কার্যকরভাবে নষ্ট হয়ে গেছে।
অ্যান্ড্রু থাডিয়াস মার্টিন

52

পদ্ধতির পক্ষে আরডাব্লুএইচ সিএইচ 11 এবং এক্সমোনাদে আনুমানিক:

একবার আপনার চূড়ান্ত আক্রমণকারীদের কুইকচেকের মাধ্যমে প্রতিষ্ঠিত হয়ে গেলে, আপনি পরীক্ষাগুলি টাইপ ইনভেরেন্টে স্থানান্তরিত করে পুনরায় চুলকানো শুরু করতে পারেন।

আপনার প্রচেষ্টা সমর্থন করার অভ্যাস:

  • প্রতিটি প্রতিশ্রুতিতে সরলিকৃত দ্রুতচেক রিগ্রেশন চালান Run
  • এইচপিসি কভারেজের বিশদ প্রকাশ করুন।

14

পরীক্ষা ফ্রেমওয়ার্ক প্যাকেজ সত্যিই সন্ত্রস্ত হয়। আপনি সহজেই HUnit এবং QuickCheck পরীক্ষাগুলি সংহত করতে পারেন এবং একাধিক আউটপুট লক্ষ্যবস্তু সহ কমান্ড-লাইন পতাকাগুলির উপর ভিত্তি করে নির্ধারিত স্যুটগুলি চালিত এক্সিকিউটেবলগুলি পেতে পারেন।

যদিও টেস্টিং এবং প্রোফাইলিং বিভিন্ন জন্তু। প্রোফাইলিংয়ের জন্য আমি একটি পৃথক এক্সিকিউটেবল সেট আপ করব যা আপনি যে বিভাগটি প্রোফাইল করতে চান তার উপর জোর দিয়েছিল এবং প্রোফাইলিং তৈরি এবং রানের ফলাফলগুলি সাবধানতার সাথে দেখছি (সংকলনের জন্য-প্রফিট-অটো-সব সহ এবং একটি রানটাইমের জন্য + আরটিএস-পি) পতাকা)।


পরীক্ষার কাঠামোর আরও সক্রিয়ভাবে বজায় রাখা উত্তরসূরি সুস্বাদু
sjakobi

10

পরীক্ষার জন্য, আমি HUnit এবং QuickCheck বৈশিষ্ট্যগুলিতে নির্ভর করি এবং সমস্ত ইউনিট পরীক্ষা এবং সমস্ত কুইকচেক বৈশিষ্ট্যগুলি স্বয়ংক্রিয়ভাবে সংগ্রহ করার জন্য হাস্কেল টেস্ট ফ্রেমওয়ার্ক ব্যবহার করি ।

দাবি অস্বীকার: আমি হাস্কেল টেস্ট ফ্রেমওয়ার্কের প্রধান বিকাশকারী।


5
স্টিফান, এই সম্পর্কে খুব কম ডকুমেন্টেশন আছে। আমার ধারণা, এটি অপ্রচলিত থাকার প্রাথমিক কারণ। অবশ্যই এখানে আপনার মনোযোগ দেওয়ার মতো একটি প্রশ্ন রয়েছে: স্ট্যাকওভারফ্লো
নিকিতা ভলকভ

2
এইচটিএফ-র নতুন প্রকাশ 0.9.0.0 এখন বেশ কয়েকটি ডকুমেন্টেশন সহ আসে। এছাড়াও, আমি উন্নয়নকে github.com/skogsbaer/HTF এ স্থানান্তরিত করেছি । আমি আশা করি এটি এইচটিএফ ব্যবহার করা এবং এইচটিএফ সম্পর্কে প্রশ্ন জিজ্ঞাসা করা সহজ করবে। নির্দ্বিধায় এটি করতে!
স্টিফ্যানওয়েয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.