আরএসপেক এবং শসা আসলেই কি মূল্যবান?


12

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

প্রথমত, টেস্টিংটি কি আসলেই মূল্যবান? মানে, পরীক্ষাগুলি লেখার জন্য ব্যয় করা সময়টি কি আসলেই উপযুক্ত?

তারপরে, আমি আরএসপেক ব্যবহার করি, আমি সম্প্রতি শসাটি আবিষ্কার করেছি, এটি কিছু সময়ের জন্য ব্যবহার করেছি তবে আমি জানি না যে এই সমস্ত পদক্ষেপগুলি লিখলে কি আসলেই সমস্যা হয়? আমি জানি আমি পদক্ষেপগুলি পুনরায় ব্যবহার করতে পারি তবে আমি কখনই জানতে পারি না যে এই পদক্ষেপগুলি খুব সম্পূর্ণ কিনা এবং না: উদাহরণস্বরূপ, আমি একটি ব্যবহার করছি Given I am logged in as (.+)তবে আমি তার সংজ্ঞাতে অবশ্যই বলব কিনা তা আমি জানি না Given there's a user called $1কারণ এটি তৈরি করা থাকলে এটি ব্যবহারকারীর সদৃশ হতে পারে তবে এর আগে সর্বদা একটি পদক্ষেপ নেওয়া সার্থক নয় Given I am logged in as (.+)। এটি বেশ কয়েকটি কোড যা সম্ভবত খুব কমই কার্যকর হবে। আমি অনুমান করি যে প্রতিদিন পরীক্ষিত অংশগুলিতে কোনও নতুন বাগ নেই ... তাই আরএসপেকের তুলনায় শসা কি সত্যিই সার্থক?

উত্তর:


13

আমার 'আহ-হা!' রুবি এবং পাগল পরীক্ষার সম্পর্কে মুহূর্ত আসে যখন আমি সত্যিই বসে, বিষয় উপর নির্ধারক সম্পদ পড়া Rspec এবং শসা বই। আমি শশা সম্পর্কে আপনার প্রাথমিক ঘৃণা ভাগ করে নিয়েছি, কিন্তু তখন আমি বুঝতে পারি যে আমি ছবিটি বেশ ভুল কোণ থেকে দেখছি।

মূলত, শসা বিডিডি সম্পর্কে (আচরণ চালিত বিকাশ) - আপনি নিজের বৈশিষ্ট্যগুলি পরিকল্পনা করতে, আপনি পরবর্তী কাজ করতে যাচ্ছেন শসা ব্যবহার করেন। হুম, এর পরে আপনি চান ব্যবহারকারীরা কোনও ফোরামে বা কোনও কিছুতে (যেমন একটি উদাহরণ চুরি করতে;) পোস্ট প্রচার করতে সক্ষম হন তাই আপনি কিছু সহজ লেখেন।

Given I am logged in
And I can see the post "BDD is awesome"
When I vote the post up
Then the post should have one more vote
And the page should show a message thanking me for my vote.

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

এখন প্রতিবার আপনি যখন আপনার শসা বৈশিষ্ট্যটি চালাবেন, আপনি কীভাবে টিডিডি (পরীক্ষিত চালিত বিকাশ) ব্যবহার করে বৈশিষ্ট্যটি পরীক্ষা করতে পারবেন তার নেতৃত্ব দেওয়া হবে। এটি আরএসপেক ব্যবহার করে নিম্ন স্তরে করা হয়।

প্রথম রান - আমার প্রথম পদক্ষেপের সংজ্ঞা অপরিজ্ঞাত। এটিকে ব্যবহারকারী_স্টেপস.আরবি বা এমনকি সেশন_স্টেপস.আরবিতে সংজ্ঞায়িত করতে ব্লকটি অনুলিপি করুন কারণ এটি ব্যবহারকারী এবং তাদের সেশনগুলির সাথে সম্পর্কিত। এখন, আপনি কীভাবে সংজ্ঞা দিন যে কোনও ব্যবহারকারী লগ ইন করেছেন? আপনি তাদের লগইন প্রক্রিয়া মাধ্যমে নিতে পারেন।

Given /^I am logged in$/ do
  visit login_path
  fill_in :name, :with => 'Joe'
  fill_in :password, :with => 'Password'
  click_button 'submit'
end

সব খুশি হওয়া উচিত। দ্বিতীয় ধাপ.

Given /^I can see the post "(.+)"$/ do |name|
  visit post_path(Post.find_by_name(name))
end

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

When /^I vote the post up$/ do
  pending 
end 

এখানে আপনি নতুন কার্যকারিতা সম্পর্কে কথা বলতে শুরু করেছেন তবে এটি কীভাবে কাজ করবে তা আপনি যথেষ্ট জানেন না। আপনি কিভাবে একটি পোস্ট আপ ভোট দিতে? আপনি একটি +1 বা কোনও কিছুর ছবিতে ক্লিক করতে পারেন, যা একটি নিয়ামককে একটি এজাক্স পোস্ট করে, যা জেএসওএন, বা এমন কিছু ফেরত দেয়। সুতরাং এখন আপনি খাঁটি আরএসপেক পরীক্ষায় যেতে পারেন।

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

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

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


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

@ স্কাইড্রেমার: সম্ভবত প্রয়োজনীয় নয়, তবে এটি ভাল অনুশীলন হতে পারে। যতক্ষণ আপনি পরীক্ষা করছেন, আপনি সঠিক পথে আছেন :)
সেভেনসিয়াট

10

আমার মতে টেস্টিং একটি শিল্প। টিডিডি করা (আরএসপেক বা অন্য কোনও কাঠামো ব্যবহার করে) শুরুতে মনে হয় আপনি "আপনার সময় নষ্ট করছেন"। এটি বোধগম্য কারণ আপনি কোনও উত্পাদন কোড লিখছেন না।

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

তদ্ব্যতীত, কোডগুলি পর্যালোচনার জন্য পরীক্ষা করা উপকারী হতে পারে কারণ আপনার পর্যালোচক দেখতে পাবেন যে আপনি কী পরিস্থিতিগুলি পরীক্ষা করছেন এবং আপনার কোডটি কীভাবে ব্যবহার করা হচ্ছে।

আপনি একবার টিডিডির দোলাতে উঠলে অন্য কিছু করা ভুল মনে হয়।


2
+1 যদিও অভিজ্ঞতা থেকে কথা বলছেন, "টিডিডির দোলাতে নামা" হ'ল নিজের মধ্যে এবং এটি বেশিরভাগ বিকাশকারীদের পক্ষে করা খুব কঠিন do
ওয়েইন মোলিনা

@ ওয়াইন এম: একমত TDD- এ-খাঁজ মধ্যে পেয়ে কঠিন, কিন্তু সুবিধা বিশাল আছেন :)।
ডেভিড Weiser

এটা খুব হালকা করে দিচ্ছে .. বছরের পর বছর ধরে আমার মাথাটি পেতে চেষ্টা করছে :)
ওয়েইন মোলিনা

ওহ হ্যাঁ, এটি প্রচেষ্টা ভাল।
সেভেনসিট

2

আমার গ্রহণটি হ'ল আপনি ঠিক শসার সামনে রয়েছেন। ঐ সমস্ত ধাপ লেখা হয় কষ্ট অনেক, এবং বেনিফিট ব্যথা ন্যায্যতা না। আমি এখানে শসা ব্যবহারের ছয়টি অসুবিধাগুলি সম্পর্কে ব্যাপকভাবে লিখেছি: শসা টেস্টিং কেন বিরক্ত করবেন?

ইউনিট টেস্ট এবং নিয়মিত ইন্টিগ্রেশন টেস্টগুলি, হয় আরএসপেক বা টেস্ট :: ইউনিট দিয়ে করা হয়েছে তবে অনেক কিছু বোঝা যায়, তবে ভাগ্যক্রমে এগুলি শসা টেস্টের চেয়ে বেশি দ্রুত লেখা হয়। একজনের জন্য আপনি ঘেরকিনের শব্দযুক্ত এবং বিশ্রী সিনট্যাক্সের সাথে লড়াইয়ের পরিবর্তে খাঁটি রুবি ব্যবহার করতে পারেন।


2
আমি বেশ নিরাপদে বলতে পারি শসা টেস্টিং সম্পর্কে আপনার প্রতিটি পয়েন্টের সাথে আমি একমত নই। * এটি ভাল পাঠ্য সম্পাদককে ভাঙ্গবে না (আমার জৈডিটটি ঠিক ঠিক এটি হাইলাইট করবে এবং স্বতঃপূরণ করবে), * আপনি আপনার বিদ্যমান আরএসপেক সেটআপ থেকে আপনার শসা সেটআপে কোনও পরীক্ষার সেটআপ অনুলিপি করবেন না (পরীক্ষার দুটি সেটটি বিভিন্ন স্তরে চালিত হবে) গ্রানুলারিটির), * যদি আপনি নিজের পৃষ্ঠাগুলির নাম লেখার বিষয়ে সামঞ্জস্য রাখতে না পারেন তবে এটি শসার দোষ নয় (রেলগুলি আপনাকে বিভিন্ন দিনে
রুটগুলিকে

1
* আপনি বলছেন যে স্টেপ ফাইলগুলি সম্পর্কে কনভেনশনটি কী তবে তবে আপনি বলবেন যে কনভেনশনটি অনুসরণ করার জন্য কোথায় সন্ধান করবেন? পোস্টের পদোন্নতি কেন পোস্ট_স্টেপস.আরবি ব্যতীত অন্য কোনও কিছুতে থাকবে? * আপনার বৈশিষ্ট্যগুলি কোড বলে মনে করা হয় না, তাই শব্দবাজি অপ্রাসঙ্গিক - আপনার বৈশিষ্ট্যগুলি আপনার অ্যাপ্লিকেশনটি কীভাবে আচরণ করে তা নথিভুক্ত; * এবং সর্বশেষে, আমি আপনার ভুলটি করায় কেবল 'নিরুৎসাহিত কোড পুনরায় ব্যবহার' সমালোচনা করতে পারি ।
সেভেনসিট

2

আমি ব্যক্তিগতভাবে যা বিশ্বাস করি তা হ'ল RSpec testing is a definite must। উদাহরণস্বরূপ বলা যাক যে আপনি একটি নতুন বৈশিষ্ট্য লিখতে চান, এবং এতে অন্য কোনও বৈশিষ্ট্যের উল্লেখ রয়েছে এবং সেই বৈশিষ্ট্যটি অন্য কোনও মডিউল বা পদ্ধতিগুলির সাথে উল্লেখ করা যেতে পারে reference সুতরাং আপনি কীভাবে নিশ্চিত করতে পারেন যে আপনি যা লিখছেন তা অ্যাপ্লিকেশনটির অন্য কোনও অংশকে ভঙ্গ করছে না?

ধরে নিন যে আপনার কাছে একটি বড় অ্যাপ্লিকেশন রয়েছে এবং সামগ্রিক অ্যাপ্লিকেশনটির তুলনায় আপনি তুচ্ছ কিছু কোড করেছেন, আপনি যখন কোডের একক লাইন পরিবর্তন করেন তখনই আপনি অ্যাপ্লিকেশনটির প্রতিটি লিঙ্কে ক্লিক করে পুরো অ্যাপ্লিকেশনটি পরীক্ষা করে দেখবেন?

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

প্রাক্তন:

শসা ধাপ সংজ্ঞা:

Given /^I am logged in$/ do
  visit login_path
  fill_in :name, :with => 'Joe'
  fill_in :password, :with => 'Password'
  click_button 'submit'
end

আরএসপেক বৈশিষ্ট্য পরীক্ষা:

feature 'Given the user is logged in' do
      visit login_path
      fill_in :name, :with => 'Joe'
      fill_in :password, :with => 'Password'
      click_link_or_button 'submit'
end

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

এটি ছাড়াও এটি নিখুঁতভাবে আপনার নিজের পছন্দ।

আশা করি এটি আপনাকে কিছুটা বুঝতে সহায়তা করবে।


0

আমার মতে অনুশীলন এবং কংক্রিটের কাঠামোর মধ্যে ফারাক করার প্রথম বিষয়টি। শসা এটির বিডিডি নয়, আরএসপেক এটির টিডিডি নয়।

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

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

সংক্ষেপে:

  • আপনি নিজে বা আপনার দল টিডিডি / বিডিডি করতে চাইলে -> আরএসপেক চেষ্টা করে দেখুন
  • আপনি যদি ব্যবহারকারী ইতিহাস এবং সিনারিওয়ের সাথে ব্যবসায়ের সাথে যোগাযোগের আরও ভাল উপায় চান -> শসা চেষ্টা করুন
  • আপনি যদি নিজের সিস্টেমের বৈশিষ্ট্যগুলির লাইভ ডকুমেন্টেশন চান -> শসা চেষ্টা করুন।

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

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

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