GTAC 2013: উপস্থাপনা দিন 2

ওপেনিং কিনোট - টেস্টেবল জাভাস্ক্রিপ্ট - টেস্টিবিলিটির জন্য আপনার অ্যাপ্লিকেশন আর্কিটেক্ট করা

মার্ক ট্রসলার (গুগল)

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

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

কি নিদর্শন কোড পরীক্ষাযোগ্য করে তোলে? কোন বিরোধী নিদর্শন পরীক্ষায় বাধা দেয়? আমাদের কোডের পরীক্ষাযোগ্যতা পরিমাপ করতে কোন মেট্রিক এবং সাধারণ জ্ঞান গাইডপোস্ট ব্যবহার করা যেতে পারে? একবার পরীক্ষাযোগ্য কোড তৈরির প্রক্রিয়া শুরু হয়েছে এখন কি?

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

ব্রেকিং দ্য ম্যাট্রিক্স - স্কেলে অ্যান্ড্রয়েড টেস্টিং

টমাস নাইচ (গুগল), স্টেফান রামসাউয়ার (গুগল) এবং ভ্যালেরা জাখারভ (গুগল)

আপনি কি রেড পিল নিতে প্রস্তুত?

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

"আমি তোমার মন মুক্ত করার চেষ্টা করছি, নিও। কিন্তু আমি তোমাকে শুধু দরজাটা দেখাতে পারি। তোমাকেই এর মধ্য দিয়ে যেতে হবে।"

অ্যান্ড্রয়েড UI অটোমেশন

গুয়াং ঝু (朱光) (গুগল) এবং অ্যাডাম মমতাজ (গুগল)

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

অ্যাপিয়াম: মোবাইল অ্যাপের জন্য অটোমেশন

জোনাথন লিপস (সস ল্যাবস)

Appium হল একটি Node.js সার্ভার যা নেটিভ এবং হাইব্রিড মোবাইল অ্যাপ্লিকেশন (আইওএস এবং অ্যান্ড্রয়েড উভয়ই) স্বয়ংক্রিয় করে। অ্যাপিয়ামের দর্শন নির্দেশ করে যে অ্যাপগুলিকে স্বয়ংক্রিয় হওয়ার জন্য সংশোধন করা উচিত নয় এবং আপনি যে কোনও ভাষা বা কাঠামোতে আপনার পরীক্ষার কোড লিখতে সক্ষম হবেন। ফলাফল হল একটি সেলেনিয়াম ওয়েবড্রাইভার সার্ভার যা একটি নেটিভের মতো মোবাইলে কথা বলে৷ Appium বাস্তব ডিভাইস এবং এমুলেটরগুলিতে চলে এবং এটি সম্পূর্ণরূপে ওপেন সোর্স, এটি মোবাইল টেস্ট অটোমেশনের সাথে শুরু করার জন্য এটি একটি চমৎকার বন্ধুত্বপূর্ণ উপায় করে তোলে। এই আলোচনায় আমি সেই নীতিগুলির রূপরেখা দেব যা অ্যাপিয়ামের নকশাকে অবহিত করবে, অন্যান্য মোবাইল অটোমেশন ফ্রেমওয়ার্কের জায়গায় অ্যাপিয়াম সম্পর্কে কথা বলব এবং যাদুটিকে ঘটতে পারে এমন স্থাপত্যের পরিচয় করিয়ে দেব। অবশেষে, আমি একটি একেবারে নতুন মোবাইল অ্যাপের একটি সাধারণ পরীক্ষার জন্য কোডটি খনন করব, এবং অ্যাপিয়ামটি আইফোন এবং অ্যান্ড্রয়েডে এই পরীক্ষাটি চালাতে দেখাব।

Google+ মোবাইলের জন্য পরিমাপযোগ্য মোবাইল টেস্ট পরিকাঠামো তৈরি করা

এডুয়ার্ডো ব্রাভো (গুগল)

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

এসপ্রেসো: অ্যান্ড্রয়েড ইউআই পরীক্ষায় নতুন সূচনা

ভ্যালেরা জাখারভ (গুগল)

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

WebDriver এর সাথে ওয়েব পারফরম্যান্স টেস্টিং

মাইকেল ক্লেপিকভ (গুগল)

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

আমি নতুন-প্রজন্মের ChromeDriver (Chromium ব্রাউজারের জন্য WebDriver) দিয়ে এটি প্রদর্শন করব।

ক্রমাগত মানচিত্র ডেটা পরীক্ষা

ইভেট নেমেথ (গুগল) এবং ব্রেন্ডন ধেইন (গুগল)

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

ব্যর্থ বিল্ডে স্বয়ংক্রিয়ভাবে অপরাধীদের খুঁজে বের করা - অর্থাৎ কে বিল্ড ভেঙেছে?

সেলাল জিফটসি (ইউসিএসডি) এবং বিবেক রামাভাজ্জলা (ইউসিএসডি)

ক্রমাগত নির্মাণ Google-এর অন্যতম প্রধান পরিকাঠামো। যখন একটি বিল্ড ব্যর্থ হয়, তখন অপরাধী চেঞ্জলিস্ট (সিএল)/পরিবর্তকদের দ্রুত চিহ্নিত করা অত্যাবশ্যক, যাতে বিল্ডটিকে সবুজে ফিরিয়ে আনার জন্য এটি ঠিক করা যায়।

অপরাধী সনাক্তকরণ সমাধানগুলি ছোট এবং মাঝারি আকারের বিল্ডগুলির জন্য বিদ্যমান, তবে বড় ইন্টিগ্রেশন বিল্ডগুলির জন্য নয়।

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

সফ্টওয়্যার পণ্য লাইন গুণমান পরীক্ষামূলক তদন্ত

কাতেরিনা গোসেভা-পপস্টোজানোভা (ওয়েস্ট ভার্জিনিয়া বিশ্ববিদ্যালয়)

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

অ্যাড্রেস স্যানিটাইজার, থ্রেড স্যানিটাইজার এবং মেমরি স্যানিটাইজার -- C++ এর জন্য ডায়নামিক টেস্টিং টুল

কোস্ট্যা সেরেব্রায়নি (গুগল)

অ্যাড্রেস স্যানিটাইজার (ASan) হল একটি টুল যা C/C++ প্রোগ্রামগুলিতে বাফার ওভারফ্লো (স্ট্যাক, হিপ এবং গ্লোবালগুলিতে) এবং ব্যবহারের পরে-মুক্ত বাগগুলি খুঁজে পায়। থ্রেড স্যানিটাইজার (TSan) C/C++ এবং Go প্রোগ্রামগুলিতে ডেটা রেস খুঁজে পায়। মেমরি স্যানিটাইজার (MSan) একটি কাজ-প্রগতিশীল টুল যা অপ্রচলিত মেমরির (C++) ব্যবহার খুঁজে পায়। এই টুলগুলি কম্পাইলার ইন্সট্রুমেন্টেশন (LLVM এবং GCC) এর উপর ভিত্তি করে তৈরি করা হয়েছে, যা তাদের খুব দ্রুত করে তোলে (যেমন ASan মাত্র 2x স্লোডাউন করে)। আমরা এই সরঞ্জামগুলি ব্যবহার করে বিশাল স্কেল পরীক্ষার আমাদের অভিজ্ঞতা ভাগ করব।

ক্লোজিং কিনোট - ড্রিংকিং দ্য ওশান - গুগল স্কেলে XSS খোঁজা৷

ক্লাউডিও ক্রিসিয়েন (গুগল)

ক্রস সাইট স্ক্রিপ্টিং, বা XSS, ওয়েব অ্যাপ্লিকেশন জগতে মধ্যযুগের কালো প্লেগের সমতুল্য: এটি ব্যাপক, এটি খারাপ এবং খুব দেরি না হওয়া পর্যন্ত এটি সনাক্ত করার জন্য খুব কম বা কোনও প্রযুক্তিগত উপায় নেই৷ DOM XSS হল সেগুলির একটি বিশেষভাবে বাজে রূপ, কারণ এটি সনাক্ত করার জন্য একটি বাস্তব ব্রাউজার বা সমতুল্য প্রয়োজন: সামান্য স্বয়ংক্রিয় সমাধান উপলব্ধ একটি কঠিন সমস্যা।

বিকাশের জীবনচক্রের প্রথম দিকে DOM XSS শনাক্ত করার জন্য আমাদের শক্তিশালী, স্ব-ড্রাইভিং সরঞ্জামগুলির প্রয়োজন ছিল, যা নিরাপত্তা দলের বাইরের প্রকৌশলীদের দ্বারা ব্যবহারযোগ্য: আমরা যা চেয়েছিলাম তা হল এমন একটি পণ্য যা আমাদের বিশাল, দ্রুত চলমান, অত্যন্ত জটিল এবং অত্যাধুনিক অ্যাপ্লিকেশনগুলির স্ক্যান করতে পারে। .. এবং অবশ্যই, আমরা কেউ খুঁজে পাইনি. তাই আমরা আমাদের নিজস্ব তৈরি করেছি: একটি ওয়েব অ্যাপ্লিকেশন স্ক্যানার যা DOM XSS কে লক্ষ্য করে আদর্শ Google প্রযুক্তির উপরে ডিজাইন করা হয়েছে। এটি অ্যাপ ইঞ্জিনে চলে এবং একটি নিরাপত্তা স্ক্যানিং প্ল্যাটফর্ম হিসাবে শক্তিশালী ক্রোম ব্রাউজার এবং কয়েকশত CPU-এর সুবিধা দেয়।

এটি Google-এ পরীক্ষার অস্ত্রাগারেরও একজন চমৎকার নাগরিক: এটি নিরাপত্তা দলের যন্ত্র হওয়ার পরিবর্তে আমাদের পরীক্ষার পরিকাঠামোর মধ্যেই থাকে৷

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