জাভাস্ক্রিপ্টে কি পরীক্ষা করা উচিত?


12

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

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

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

সুতরাং, জাভাস্ক্রিপ্টে ইউনিট পরীক্ষা করা উচিত কী?


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

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

1
@ নাথানহোড আপনি ইউনিট পরীক্ষাগুলি লিখুন যা ব্রাউজারেই চালিত হয়, নোডুনিট, কুনিট এবং জুঁই বুদ্ধিমান সরঞ্জাম। ব্রাউজারে চলার সময় আপনার ডিওএম থাকে। আপনি ব্রাউজার পরীক্ষার স্বয়ংক্রিয় করতে টেস্টিংয়ের মতো একটি সরঞ্জাম ব্যবহার করতে পারেন।
রায়নস

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

উত্তর:


4

আপনি যা কিছু করতে পারেন পরীক্ষা করুন।

খাঁটি যুক্তি সহজেই পরীক্ষা করা যায়।

যদি আপনার কোডটি ডিওএম বা নেটওয়ার্কের সাথে যোগাযোগ করে তবে এটি আরও শক্ত much

আপনি যদি কোনও নির্দিষ্টটির পরিবর্তে একটি স্বেচ্ছাসেবী ডোম উপাদানটিতে কাজ করার জন্য কোডের একটি অংশকে বিমূর্ত করতে পারেন, তবে আপনি এটি আরও সহজে পরীক্ষা করতে পারেন। (উপাদানটিকে একটি প্যারামিটারে কাজ করার জন্য তৈরি করুন)।

এজ্যাক্স ব্যবহার করে এমন কোডগুলি কেবল স্থির ডেটার সাথে কলব্যাক ফাংশনটিতে কল করে পরীক্ষা করা যেতে পারে। আমি কিছু পরীক্ষা করেছি যেখানে আমি $.ajaxআমার নিজের ফাংশনটি দিয়ে ওভারর্ট করেছি। আপনার কাজ শেষ হয়ে গেলে আপনি আসলটিকে পিছনে ফেলেছেন তা নিশ্চিত করুন!

আপনি যা খুঁজে পাবেন তা হ'ল "পৃষ্ঠার স্তরের জাভাস্ক্রিপ্ট" এর অর্থ হ'ল "শক্তভাবে সংযুক্ত কোড" এবং যদি আপনি কোডটির অংশগুলি ডিকুয়াল করেন তবে আপনি সেগুলি স্বাধীনভাবে পরীক্ষা করতে পারেন।

(সেলেনিয়াম কোনও একক পরীক্ষার সরঞ্জাম নয় high এটি উচ্চ-স্তরের দৃশ্যের জন্য দুর্দান্ত, তবে আপনি এটির সাথে পরীক্ষা চালাতে পারবেন না এবং এটি কোনও বিচ্ছিন্ন পরিবেশে কাজ করে না))


জুঁই ফাংশন কল এবং প্রতিক্রিয়া ডেটা উপহাস করতে পারে, আপনি ওভাররাইডিং ফাংশনগুলির পরিবর্তে এটি সন্ধান করতে পারেন।
স্টিভ

আমার স্পষ্ট করা উচিত - আমাদের প্রতিটি পৃষ্ঠায় ফাংশন এবং এগুলি রয়েছে। আমি কোডটি যা অভ্যন্তরে কার্যকর করে তা পরীক্ষা করার বিষয়ে আরও কথা বলছিলাম $(document).ready(...)
নাথান হোড

1
এটি সবই বড় ...বিষয়। :-) আমি মনে করি আপনার পরীক্ষা করা একটি একক নামকরণের ফাংশনে নামাতে সক্ষম হওয়া উচিত। তারপরে আপনার অরক্ষিত কোডটি একটি একক লাইন। (এখন এটি একটি লক্ষ্য, কোনও প্রদত্ত নয় practice বাস্তবে আমি সর্বদা অনির্ধারিত কোডের একাধিক লাইন রেখেছি))
সান ম্যাকমিলান

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

@ ভিসিএনসি: আপনি এটি পরীক্ষা করে দেখতে পারেন যে, একটি ক্লিক হ্যান্ডলারটি খুব সহজেই প্রদত্ত ডিওএম উপাদানটির সাথে সংযুক্ত ছিল। আমি মনে করি না যে 'ক্লিক' ডান হ্যান্ডলার এবং আপনি এটি সঠিক উপাদানটির সাথে সংযুক্ত করেছেন তা পরীক্ষা করা সম্ভব নয় possible
শান ম্যাকমিলান 21

5

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

আপনার কোডটিতে অবশ্যই কোডের বিচ্ছিন্ন অংশ হিসাবে অবশ্যই অ্যালগরিদম থাকতে হবে, যদি তা না হয় তবে ইউনিট টেস্টিং প্রায় অসম্ভব।

jquery প্লাগইনস, বিটিডাব্লু, সহজ ইউনিট-পরীক্ষামূলক নয়।


সব ভাল পয়েন্ট! আমি সম্মত হই যে তারা কীভাবে লিখিত হয়েছে তার উপর নির্ভর করে তারা পাশাপাশি পরীক্ষার যোগ্য ইউনিটও নয়।
নাথান হোড

-1

আমি জাভা দিয়ে কাজ করতাম এবং যা দেখছি ইউনিট টেস্টিং জাভা থেকে ইউনিট টেস্ট করা জাভাস্ক্রিপ্টের চেয়ে সহজ কারণ জাভা আরও কঠোর।

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

আমি যা পাচ্ছি তা হ'ল আমার কাছে মনে হয় যা পরীক্ষা করা উচিত তা হ'ল যুক্তিটি স্পষ্টভাবে। উদাহরণস্বরূপ, আপনি ইউনিট পরীক্ষা চালানোর সময় আপনি AJAX কল করতে চান না কারণ (ক) আপনার সার্ভারটি চলমান থাকা দরকার এবং (খ) এটি ধীর এবং ইউনিট পরীক্ষার দিকনির্দেশগুলির একটি হ'ল এটি হওয়া দরকার সুপার দ্রুত যাতে বিকাশকারীরা প্রতি মিনিটের মতো এগুলি চালাবেন না।

আরেকটি গাইডলাইন হ'ল ক্রমাগত ইন্টিগ্রেশন প্রক্রিয়াটি এমন কোনও ইমেল প্রেরণের জন্য যে এটি একটি ইউনিট পরীক্ষাটি ব্যর্থ হয়েছিল তা খুঁজে পেয়েছিল।

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