আমি কীভাবে পিএইচপিউইনাইটের সাথে কোনও কাজের উদ্ধৃতি দিব?


9

আমি 15 বছর ধরে ওয়েবসাইট প্রোগ্রামিং এবং পিএইচপি গত 5 বছর বা তার বেশি সময় ধরে করছি। আমি সবসময় কঠিন কোড লিখেছি। তবুও, আমার একটি ক্লায়েন্ট রয়েছে যা ইউনিট পরীক্ষিত হওয়ার 80% কোডের উপর জোর দিচ্ছে। যেহেতু ক্লায়েন্ট সর্বদাই সঠিক, আমি আমার কোডটি সঠিক দেখাচ্ছে এবং PHPUnit আমার ইউনিট পরীক্ষা করার জন্য PHP_CodeSniffer ব্যবহার করার পরিকল্পনা করছি। আমি এই অভিজ্ঞতার মাধ্যমে কিছু শেখার আশা করছি।

এই কি সঠিক সরঞ্জাম ব্যবহার করতে হয়? পিএইচপিউনিট স্থাপন এবং অতিরিক্ত কোড লেখার জন্য কত সময় জড়িত? আমি অতীতে যেমন করেছিলাম ওয়েবপৃষ্ঠাগুলি এবং স্ব-পরীক্ষা লিখতে আমার প্রায় 8 সপ্তাহ লাগবে। আমি যদি ইউনিট পরীক্ষার জন্য (পিএইচপিউনিট) 4 দিনের অতিরিক্ত (10%) যোগ করি তবে তা কি যথেষ্ট? থটস? পরামর্শ? ধন্যবাদ।


2
ইউনিট টেস্টিং উন্নয়ন সময় দ্বিগুণ করতে পারে।

আপনি পিএইচপি 2.0 সঙ্গে কাজ করেছেন? নিস! সংক্ষিপ্তভাবে আমার ইনপুট কোনও উত্তরের জন্য যোগ্যতা অর্জন করে না: সরঞ্জামগুলির নির্বাচনের জন্য আপনি ঠিক ইমোতে আছেন। দেখুন পিএইচপি পরীক্ষামূলক অবকাঠামো আমার নিন এবং phpcs জন্য আমি এমনকি জানি না কোন বিকল্প। যোগ করার সময়টির জন্য: কিছু সময় টিডিডি করার পরে আমি এগুলি ছাড়াই সাধারণত ধীর হয়ে থাকি তবে আমি কিছু জিনিস খুব দীর্ঘায়িত করতে শুরু করি (+ 50%)। আপনি যদি এমন একটি কাঠামো ব্যবহার করেন যা পরীক্ষার জন্য কঠোর করে তোলে (প্রচুর স্ট্যাটিক স্টাফ) আরও বেশি যোগ করে।
এডোরিয়ান

1
এটি প্রাথমিক আপ ফ্রন্টের বিকাশ বাড়িয়ে তুলবে, তবে 8 সপ্তাহের একটি প্রকল্পের মধ্যে, আপনি দেখতে পাবেন এটি কম পার্থক্যের কারণ ইউনিট পরীক্ষাগুলি আপনাকে আগে এবং সহজ বাগগুলি আবিষ্কার করতে সহায়তা করবে।
ফেন্টন 21

1
@ ড্রাগন, কিন্ডা, তবে ইউনিট টেস্টিংও বিকাশের গতি বাড়িয়েছে [সেখানে মোতায়েন / পরীক্ষা /
সন্ধানের

উত্তর:


7

এক লাইনে: এটি নির্ভর করে আপনি কীভাবে কাজ করেন। আমি বিনীতভাবে মনে করি যে 10% খুব কম। এটি কমপক্ষে 25% হওয়া উচিত, 40% না হলে, 60% না হলে, বেশি না।

প্রথমত, আমি সেখানে আপনার ক্লায়েন্টের সাথে খুব সম্মত। ইউনিট টেস্টগুলি শক্ত, বজায় রাখা সহজ, ডিবাগ করা সহজ পণ্য an

আমি যা জানি তা থেকে কথা বলব। আমি বেশিরভাগ প্রকল্পের জন্য টিডিডি (টেস্ট-চালিত বিকাশ) ব্যবহার করি। টিডিডি মূলত আপনাকে আসল কোডের আগে পরীক্ষাগুলি লিখতে বাধ্য করে। তারা গ্রহণযোগ্যতার মানদণ্ডের একটি সেট স্থাপন করে যা শেষ পণ্যটির পূরণ করা প্রয়োজন। সাধারণত, আপনি আপনার লেখার পরীক্ষার 50% থেকে 70% পর্যন্ত সময় ব্যয় করবেন এবং কোডগুলি তাদের পাস করার জন্য প্রয়োগ করতে হবে।

যদিও এটি অযৌক্তিক এবং / বা প্রচণ্ড মনে হতে পারে, আমি আপনাকে নিশ্চিত করতে পারি যে এটি তা নয়। কারণটা এখানে:

  • পরীক্ষাগুলি লেখার সময় আপনি কীভাবে ব্যবহার করতে পারেন সেরা আর্কিটেকচারাল প্যাটার্নগুলি (তা) বের করতে সক্ষম হবেন। এইভাবে, আপনি কোডিং শুরু করার পরে, অ্যাপ্লিকেশন আর্কিটেকচারটি ন্যূনতমভাবে পরিবর্তিত হবে (কারণ আমরা সকলেই জানি কোনও অ্যাপ্লিকেশন আর্কিটেকচারটি পুনরায় করা কত ব্যয়বহুল।
  • আপনি কেবল পরীক্ষাগুলি পাস করার জন্য কোড করেন (অতএব শেষের পণ্যটি গ্রহণযোগ্য করে তোলা)। আপনি প্রোগ্রামহীন / আউট-স্কোপ বৈশিষ্ট্যগুলির প্রোগ্রামিংয়ে সময় ব্যয় করবেন না।
  • কম কোড থাকার ফলে (যেমন: কেবলমাত্র কোড যা আপনার আসলে প্রয়োজন) এটি কম ত্রুটি-প্রবণ। (কম কোড = কম ত্রুটি)।
  • আপনি যদি কোনও ভুল করে থাকেন এবং আপনিও করেন তবে সমস্যা কেন আছে এবং সমস্যাটি কোথায় তা নির্ধারণ করতে খুব কম সময় লাগবে। পরীক্ষাগুলি যদি সঠিকভাবে লেখা থাকে তবে এর অর্থ হ'ল একক ভুলের ফলে চেইন বিক্রিয়া নয়, একক ব্যর্থতা ঘটবে। এভাবে আপনি কয়েক সেকেন্ড না হলেও কয়েক মিনিটের মধ্যে সহজেই সমস্যার উত্সটি চিহ্নিত করতে পারেন।
  • ইউনিট পরীক্ষাগুলি সহ আসল কোডটি বাস্তবায়নে অনেক কম সময় লাগবে। পরীক্ষা ব্যর্থ হওয়ার সাথে সাথেই আপনি জানেন যে কিছু ভুল হয়েছে। বাগগুলি ঠিক করতে আপনাকে ক্লায়েন্টের সাথে পিছনে পিছনে কিছু করতে হবে না।
  • বাগ সংশোধন করার জন্য ক্লায়েন্টের সাথে আপনাকে শেষ পর্যন্ত পিছিয়ে যেতে হবে কারণ কোনও কিছুই 100% ত্রুটি ধরতে পারে না। যাইহোক, আপনি আরও বেশি না হলে 95% সহজেই ধরতে পারবেন।

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


5

আপনি এই অভিজ্ঞতা থেকে কিছু শিখতে হবে যে মনোভাব থাকার জন্য আপনার কাছে প্রপস। আমি নিশ্চিত তুমি পারবেই.

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

বিল ভেনারস: আপনি আপনার বইটি রিফ্যাক্টরিংয়ে বলেছেন: "আপনি যদি রিফ্যাক্টর করতে চান তবে প্রয়োজনীয় পূর্বশর্তটির কঠোর পরীক্ষা হচ্ছে" " এর অর্থ কি যদি আপনার পরীক্ষা না করে থাকে তবে আপনার চুল্লিটি ব্যবহার করা উচিত নয়?

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

Http://www.artima.com/intv/refactorP.html থেকে

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

আপনি যখন একটি বিড করছেন তখন কি আপনাকে পরীক্ষা করার সময়টিতে ফ্যাক্টর তৈরি করতে হবে? হ্যাঁ । এটি আরও বেশি সময় নেবে এমন স্বজ্ঞাত বলে মনে হচ্ছে ? হ্যাঁ, আবার । আপনি সম্ভবত, অন্য কিছু উত্তর হিসাবে মোটামুটি অনুমান করেছেন, ইউনিট পরীক্ষা না করে 50-100% বেশি অনুমান করা দরকার ।

যাহোক!...

  • আপনি স্পেসিফিকেশন গর্তগুলি আগে ধরা এবং সম্বোধন করবেন
  • যার অর্থ আপনি একটি ক্লিনার এবং আরও শক্ত স্পেসিফিকেশন বিকাশ করা হবে
  • আপনি নির্দিষ্ট পরিবর্তনগুলির জন্য দ্রুত এবং আত্মবিশ্বাসের সাথে প্রতিক্রিয়া জানাতে সক্ষম হবেন
  • আপনার কম বাগ থাকবে
  • আপনার বাগগুলি তাড়াতাড়ি এবং ঠিক করা সহজ হবে

এবং ফলস্বরূপ, আপনার অনুমানগুলি আরও নির্ভুল হবে । আপনি যদি ঘন্টাখানেক চার্জ করেন, আপনি আপনার ক্লায়েন্টদের আরও বেশি প্রভাবিত করবেন এবং আপনার হারগুলি বাড়িয়ে তুলতে সক্ষম হবেন। আপনি যদি ফ্ল্যাট-রেট চার্জ করেন তবে আপনি প্রতি ঘন্টা আরও বেশি অর্থ উপার্জন করতে পারবেন।

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


3

এটি আপনাকে কতটা সময় নেবে সে সম্পর্কে সহজ উত্তর নেই।

তবে গ্রাউন্ড রুল হিসাবে এটি যদি একটি সংক্ষিপ্ত প্রকল্প: আমি বলব যে ভাল ইউনিট পরীক্ষার সাথে একত্রে উন্নয়ন একক পরীক্ষা ছাড়াই বিকাশের ক্ষেত্রে ১.75 times-২ গুণ সময় নিতে পারে। দীর্ঘ প্রকল্পের জন্য সম্ভবত 25-30%?

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

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

আমি এখানে যোগাযোগ করতে চাই এমন একটি জিনিস যদি এখানে থাকে তবে: দয়া করে আপনার প্রকল্পের শেষে ইউনিট পরীক্ষাকে নিছক আনুষ্ঠানিকতা হিসাবে দেখবেন না। আমার মতে এটাই যদি হয় তবে তা মূল্যহীন।


3

উত্তরগুলি এখনও পর্যন্ত পুরোপুরি পুরোপুরি তাই আমি কেবল একটি পয়েন্ট যুক্ত করব না যা কাভার করা হয়নি: পিএইচপিউনিট ব্যবহারের কারণে অতিরিক্ত সময় হবে

  1. আপনি এটি শিখার পরে প্রথমে উচ্চতর এবং
  2. আপনি এটির সাথে আত্মবিশ্বাস অর্জন করার সাথে সাথে অ-পরীক্ষা বিকাশের সময় কমিয়ে দিন।

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

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

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