این آموزش به شما یاد میدهد که یک Functional test ساده با TestComplete ایجاد کنید. شما در این آموزش موارد زیر را خواهید آموخت:
- چگونه تستها را ضبط(Record) کرده و اجرا(Run) کنید
- نحوه ایجاد Checkpointها
- چگونگی انجام تست
- وچیزی که شما میتوانید در نتایج تست(Test Result) ببینید
در بخش آشنایی
- یک مرور کلی روی TestComplete و تست خودکار خواهیم داشت. این قسمت را برای کاربران مبتدی(فارق از نوع اپلیکیشن تحت تست) توصیه میکنیم.
- آموزش گام به گام برای تست برنامه های دسکتاپ، وب و تلفن همراه.
- یادگیری این موضوع که شما میتوانید اطلاعاتی روی Taskهای عمومی و خاص در TestComplete بیابید.
ارائه بخش آشنایی این بخش طی چند پست که “قسمت سوم: مقدمهای بر تست اتوماتیک” صرفا یکی از قطعات آن است طی قسمتهای آتی تکمیل میشود
چگونه می توانم شروع کنم؟
این آموزش انواع مختلف برنامههای پشتیبانی شده توسط ماژولهای مختلف TestComplete را پوشش میدهد. برای شروع با TestComplete، باید ابتدا بدانید که میخواهید کدام یک از انواع برنامههای زیر را تست کنید:
- برنامه دسکتاپ: اپلیکیشنهایی که روی کامپیوترهای رومیزی اجرا میشوند.
- برنامه وب: اپلیکیشنهایی که در مرورگرهای وب اجرا میشوند(از جمله مرورگرهای تعبیه شده در برنامههای دسکتاپ).
- برنامه موبایلی(Android و iOS): اپلیکیشنهایی که در گوشیها و تبلتهای iOS و Android اجرا میشوند.
مقدمهای بر تست اتوماتیک
مباحث ارائه شده در این پست عبارتند از:
- تست اتوماتیک
- انواع تست
- پروژههای TestComplete و آیتمهای پروژه
- TestComplete User Interface
- TestComplete Test Object Model
- Checkpointها و Storeها
تست اتوماتیک
تست نرمافزار روند بررسی یک اپلیکیشن و پیدا کردن خطاها(Error) در آن است. تفاوت بین تست کردن و یک Exploration ساده این است که تست شامل مقایسه خروجی برنامه با یک استاندارد مورد انتظار و تعیین این موضوع است که آیا Application Functionها آنچنانکه انتظار میرود عمل میکنند یا خیر. به عبارت دیگر، ممکن است تستر صرفا مسئولیت تائید ارائه یک لیست از مقادیر توسط اپلیکیشن را عهده دارد نباشد، بلکه تائید مناسب بودن یا نبودن این اطلاعات نیز بر عهده وی است.
بنابراین، یک ترتیب و دنباله برای تست پایه عبارتند از:
- تعریف خروجی مورد انتظار(Expected Output)
- انجام Test Actionها(تغذیه ورودی مناسب)
- جمعآوری خروجی برنامه و مقایسه آن با نتیجه مورد انتظار یا Expected Result(دادههای مبنایی یا Baseline Data)
- در صورت شکست یا Fail شدن این مقایسه، توسعهدهندگان یا مدیران از این موضوع مطلع شوند.
تست اتوماتیک به معنی اجرای خودکار تست نرمافزار توسط یک اپلیکیشن خاص است که با تعامل اندک و یا بدون تعامل با انسان صورت میپذیرد. اجرای خودکار تضمین میکند که هیچ Test Actionای فراموش نخواهد شد؛ چنین روشی در تست تسترها را از تکرار مراحل خستهکننده و مکرر در تست خلاص میکند.
TestComplete امکانات ویژهای را برای خودکارسازی Test Actionها، ایجاد تستها، تعریف Baseline Data، تستهای در حال اجرا و ثبت نتایج تست فراهم میکند. به عنوان مثال، این ابزار شامل یک امکان خاص برای رکورد کردن تستهاست که به شما اجازه میدهد تستها را به صورت بصری ایجاد نمایید. شما فقط باید رکورد کردن را آغاز نموده و تمام Actionهای مورد نیاز را روی اپلیکیشن در حال تست انجام دهید تا TestComplete به طور خودکار تمام اقدامات رکورد شده را به یک تست تبدیل کند. TestComplete همچنین شامل Dialogها و ویزاردهای خاصیست که به شما در خودکار کردن دستورات مقایسهای(یا Checkpointها) در تستهایتان کمک میکند.
انواع تست
TestComplete از انواع مختلف تست پشتیبانی میکند:
- Unit Testing
- Function Testing و GUI Testing
- Regression Testing
- Distributed Testing(تست توزیع شده)
- و دیگر انواع تست(در آینده بیشتر تشریح خواهند شد)
در این آموزش، ما یک Functional Test ایجاد خواهیم کرد(نوعی از تست که بیشترین استفاده را دارد). تستهای Functional به بررسی UI از یک طرف و باقی سیستم از در طرف دیگر میپردازد. این تستها تأیید میکنند که آیا Application Functionها آنطور که انتظار میرود کار میکنند یا خیر.
یک Functional Test معمول شامل دستورات تست است که اقدامات مختلفی را انجام میدهند، مانند: شبیهسازی کلیکها و فشار دادن کلیدهای کیبورد، اجرای دستورات تست در یک حلقه و بررسی محتوای Object.
در TestComplete، تستهای Functional میتوانند به صورت Keyword Test و یا اسکریپتها ایجاد شوند. هر دو تست را میتوان از ابتدا با استفاده از ویرایشگرهای داخلی خود ابزار رکورد کرده و یا ایجاد کرد. ایجاد Keyword Testهای بصری، آسان بوده و به پسزمینه برنامهنویسی نیاز ندارد. اما نوع اسکریپتی نیاز به درک دستورات اسکریپت دارد، در عوض به شما این امکان را میدهد تا تستهای قویتر و منعطفتری ایجاد کنید. TestComplete از اسکریپتهای جاوا اسکریپت، JScript، Python، VBScript، DelphiScript، C#Script و C++Script پشتیبانی میکند. بنابراین شما میتوانید اسکریپتها را به زبانی که از آن سررشته دارید ایجاد کنید.
در این آموزش، ما از امکان Keyword Testing استفاده خواهیم کرد.
پروژههای TestComplete و آیتمهای پروژه
TestComplete با پروژههای تستی و سوئیتهای پروژه کار میکند. یک پروژه نقطه شروعی برای ایجاد تست است. این کار شامل تستهای شما، Baseline Data برای Checkpointها، اطلاعاتی در مورد اپلیکیشنهای تست شده و موارد دیگر آیتمهای مورد نیاز برای انجام تست است. این پروژه همچنین دنباله اجراییِ تستهای چندگانه را تعریف کرده و شامل یک مجموع Log از تمام Test Runها از زمان آغاز پروژه است.
یک پروژه میتواند شامل تمام تستها برای اپلیکیشن شما باشد. برای اپلیکیشنهای پیچیده، ممکن است شما تصمیم بگیرید که یک پروژه را فقط به یک بخش از اپلیکیشن اختصاص داده و پروژههای دیگر را معطوف به دیگر قسمتها کنید.
پروژههای مرتبط را میتوان به عنوان یک مجموعه پروژه(Project Suite) که شامل یک یا چند پروژه است، متحد نمود. هنگامی که یک پروژه جدید ایجاد میکنید، TestComplete به طور خودکار Project Suite را تولید میکند. شما همچنین میتوانید یک Project Suite خالی ایجاد کرده و از TestComplete Dialogها استفاده نمایید تا بعدا سوییت را با Project Fileهای دلخواه پر کنید.
آیتمهای پروژه عناصر پروژه(Project Element) هستند که در اجرای عملیات تستهای مختلف وارد عمل شده و یا کمک میکنند. علاوه بر آیتمهای پروژه، پروژههای شما میتوانند شامل Helper Fileهایی مانند اکسل و یا فایلهای CSV به همراه Test Data باشند.
شما میتوانید پروژهها، Project Suiteها و آیتمهای پروژه را در پنل TestComplete Project Explorer مشاهده و مدیریت کنید:
TestComplete User Interface
در اینجا یک تصویر نمونه از پنجره اصلی TestComplete ارائه شده است:
همانطور که میبینید، TestComplete UI در تعدادی پنل سازماندهی شده است:
- پنل Project Explorer(در سمت چپ پنجره) محتویات پروژهها و Project Suite را نمایش میدهد. بعلاوه این بخش لینکهایی را به Nodeهای Test Log فراهم میکند.
- پنل Workspace دسکتاپ کار شماست: این قسمت پروژه ویرایشگرهای آیتم پروژه را نمایش میدهد، که شما میتوانید در آن تستها را ایجاد کرده، اصلاح کنید، و در نهایت نتایج تست را مشاهده نمایید. به عنوان مثال، در تصویر بالا میتوانید ویرایشگر Keyword Test را در Workspace باز کنید.
- در زیر ویرایشگر، یک پنل Test Visualizer وجود دارد که در طول رکورد کردن Test Commandها، تصاویر Capture شده توسط موتور تست را نمایش میدهد. این تصاویر به شما کمک میکنند تا Actionهایی را که Test Commandها انجام میدهند را درک کنید.
علاوه بر Project Explorer، Workspace و Test Visualizer، ابزار TestComplete پنلهای دیگری هم دارد. برای مثال:
- پنلهای Watch List، Local، Breakpoint و Call Stack برای Test Debugging استفاده میشوند.
- پنل To Do، یک لیست از وظایفی که باید انجام شود را مدیریت میکند.
- پنل Code Explorer نیز یک راه مناسب برای کشف محتویات اسکریپت و حرکت از طریق Script Unitها را فراهم میکند.
- پنل Object Browser دارای یک Major TestComplete Function است که به یک پروژه خاص تعلق ندارد: این پنل لیستی از تمام فرآیندها و پنجرههای موجود در ماشین را نشان میدهد. بعلاوه اگر دستگاه موبایل متصل باشد، و برنامه به شیوه خاصی آماده شده باشد، این پنل فرآیندهای برنامههای موبایلی را لیست میکند. برای هر فرآیند و پنجره، این پنل متدها و Propertyهای دسترسپذیر خارجی از طریق امکانات TestComplete را نشان میدهد. به عبارت دیگر، Object Browser به شما میگوید کدام Objectها، متدها، و Propertyها برای تست در دسترس بودده، و چگونه باید آنها را تحصیل نمود.
برای یادگیری در مورد یک پنل، در داخل پنل مورد نظر کلیک کرده و سپس F1 را فشار دهید. این کار توضیحات مربوط به پنل را باز میکند.
شما از منوها و نوارهای ابزار استفاده میکنید تا برای اجرای Actionهای معینی به TestComplete دستور دهید. زیرسیستم منوی آن به منوها و نوارهای ابزار در ویژوال استودیو و سایر برنامههای محبوب ویندوز شباهت دارد. شما میتوانید مکان نوار ابزار را تغییر دهید، آیتمها را از یک منو یا نوار ابزار به سمت دیگر انتقال دهید، آیتمها را مخفی کنید، اقلام پنهان را اضافه کنید، و کارهای مختلف زیادی را انجام دهید. این امکانات در آینده تشریح خواهند شد.
TestComplete Test Object Model
ساختار شی(Object Structure) در پنل Object Browser نشان داده شده است:
نکته: تصاویری که در ادامه میآیند، Object Model را برای Desktop Application نمایش میدهند. Object Model برای اپلیکیشنهای وب و موبایل نیز مشابه است.
TestComplete از یک مدل درخت برای Test Objectها استفاده میکند. برای اپلیکیشنهای دسکتاپ و وب، Root Node درخت، Sys است، در حالی که برای اپلیکیشنهای موبایل، Root Node درخت Mobile است.
Processes Objectها مربوط به برنامههای در حال اجرا در سیستم عامل میباشند. ما از واژه فرآیند به جای اپلیکیشن استفاده میکنیم، چرا که به مفهوم فرآیندها در مستندات ویندوز مربوط میشود.
یک Processes Object Name شامل نام فرآیند اجرایی و شاخص(Index) آن میشود(این شاخص تنها در صورتی استفاده میشود که چند Application Instance اجرا شوند):
این فرآیندها دارای Child Objectهایی(Windows) هستند که به پنجرههای سطح بالا(Top-Level Windows) مربوط میشوند. این Objectها به نوبه خود دارای Child Window Object دیگری هستند که به مربوط به Controlها هستند. نام Window و Control بستگی به این دارد که آیا موتور تست(Test Engine) به متدها و Propertyهای داخلی اپلیکیشن تحت تست دسترسی دارد یا خیر. TestComplete با هر دو نوع اپلیکیشن کار میکند، اما Windowها و Controlهای آنها به روشهای مختلف نامگذاری میشوند.
- اپلیکیشنهای Black Box
اپلیکیشنهایی که به متدها و Propertyهای داخلی خود دسترسی ارائه نمیدهند، اپلیکیشنهای Black Box نامیده میشوند. نام هر پنجرهای در چنین اپلیکیشنهایی شامل نام Window Class، متن(Text) یا عنوان(Title) یا Caption و Index(شاخص) آن است. Controlها به همان شیوهWindowها نامگذاری میشوند، زیرا از لحاظ سیستم عامل، یک کنترل نوع دیگری از یک Window است:
- اپلیکیشنهای White Box
اپلیکیشنهایی که Objectهای درونی خود، متدها و Propertyهای داخلی خود را به TestComplete نمایش میدهند، اپلیکیشنهای White-Box یا Open Application نامیده میشوند. آنها با نماد در Object Browser مشخص شدهاند (تصویر زیر را ببینید).
برای مشخص کردن Windowها و Controlهای Open Applications، ابزار TestComplete از نامهایی استفاده می کند که منعکس کننده نوع کنترل یا Window و نام مشخص شده در منابع اپلیکیشن باشند. به عنوان مثال، اگر شما با Microsoft WinForms Library یک فرم به نام MainForm در یک برنامه #C ایجاد کردهاید، TestComplete به این فرم به صورت زیر مشخص خواهد کرد:
WinFormsObject(“MainForm”)
در آینده در مورد نامگذاری Processها، Windowها و Controlها، و Objectها صحبت خواهیم کرد.
نکته: توصیه میشود که، هر زمان که ممکن بود، تستهای شما به جای Black-Box Applicationها با Open Applicationها کار کند. این کار، Test Engine را برای دسترسی به متدها و Propertyهای داخلی اپلیکیشن توانمند کرده و به شما اجازه میدهد تستهای منعطفتر و قدرتمندتریایجاد نماید.
برخی از اپلیکیشنها مانند NET، .WPF. ، ویژوال بیسیک، جاوا یا وب همیشه برای TestComplete باز یا Open هستند. دیگران ممکن است موارد دیگر ممکن است نیاز به کامپایل شدن به یک روش خاص داشته باشند. بعدها در مورد Open Applicationها صحبت خواهیم کرد.
Checkpointها و Stores
یک تست معمول، مقایسات زیادی را انجام میدهد. به عنوان مثال، اگر یک تست Actionهای کاربر را برای Export کردن دادههای برنامه به یک فایل شبیهسازی کند، باید بررسی کنید که در نهایت آیا فایل با اطلاعات معتبر پر خواهد شد یا خیر. برای انجام این بررسی، شما فایل نتیجه شده را با یک کپی Baseline مقایسه کنید. این فقط یک نمونه از مقایسهایست که ممکن است شما نیاز به انجام آن داشته باشید. تستهای واقعی شامل صدها مقایسه(اگر هزاران نباشد) است. هر نوع تست(رگرسیون، Unit، Functional و غیره) در طول اتوماسیون نیاز به مرجع معتبر(Validated Reference) دارد.
با استفاده از TestComplete به راحتی میتوانید دستورات مقایسهای(یا Checkpointها) را به تستهای خود اضافه کنید. شما میتوانید Checkpointها را در حین رکورد کردن تست و در زمان طراحی ایجاد کنید. TestComplete این Checkpointها را برای مقایسه انواع دادهها فراهم کرده است، مانند: تصاویر، فایلها،Propertyها و متن Object، اسناد XML، جداول پایگاه داده و غیره. TestComplete شامل Stores Project Item میباشد که به منظور ذخیره Baseline Data برای این Checkpointها استفاده میشود. این آیتم پروژه یک Container برای تصاویر، فایلها و سایر عناصر است که در کنار پروژه برای مقاصد مقایسهای ذخیره میشوند. تنها استثنا در این میان، Checkpointهایی هستند که Object Property را بررسی میکنند. Baseline Data در تستها برای آنها مشخص شده است.
در آینده به صورت مفصل در مورد Checkpoints صحبت خواهیم کرد.
این یک آموزش طولانی مدت است. بنابراین قسمتهای بعدی به محض آماده شدن علاوه بر اینکه در صفحه Home وبسایت اطلاعرسانی خواهد شد، به صورت دستهبندی شده از اینجا نیز در دسترس است.