SlideShare a Scribd company logo
1 of 15
Download to read offline
‫الرحیم‬ ‫الرحمن‬ ‫اهلل‬ ‫بسم‬
‫اندروید‬ ‫در‬ ‫تست‬ ‫مبحث‬ ‫خالصه‬
‫صابری‬ ‫صادق‬ ‫محمد‬
‫پائیز‬95
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫قبل‬‫باره‬ ‫در‬ ‫مختصری‬ ‫توضیح‬ ‫به‬ ‫مبحث‬ ‫شروع‬ ‫از‬gradle‫در‬ ‫آن‬ ‫تنظیمات‬ ‫و‬android studio‫پردازیم‬ ‫می‬
‫نصب‬ ‫قصد‬ ‫بار‬ ‫نخستین‬ ‫برای‬ ‫صورتیکه‬ ‫در‬gradle‫دارید‬ ‫استدیو‬ ‫اندروید‬ ‫در‬ ‫را‬‫کنید‬ ‫دنبال‬ ‫را‬ ‫زیر‬ ‫های‬ ‫راه‬ ‫از‬ ‫یکی‬:
‫گزینه‬ ، ‫دارید‬ ‫جدید‬ ‫پروژه‬ ‫یک‬ ‫ایجاد‬ ‫قصد‬ ‫صورتیکه‬ ‫در‬create New Project‫و‬ ‫نمائید‬ ‫انتخاب‬ ‫را‬
‫یا‬‫مسیر‬ ‫از‬File | New Project‫نمائید‬ ‫اقدام‬.
‫گزینه‬ ، ‫دارید‬ ‫را‬ ‫موجود‬ ‫پروژه‬ ‫به‬ ‫ماژول‬ ‫افزودن‬ ‫قصد‬ ‫صورتیکه‬ ‫در‬File | New Module‫نمائید‬ ‫انتخاب‬ ‫را‬.
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫گزینه‬ ‫چپ‬ ‫سمت‬ ‫در‬ ‫شده‬ ‫باز‬ ‫صفحه‬ ‫در‬Gradle، ‫صفحه‬ ‫راست‬ ‫بخش‬ ‫در‬ ‫و‬ ‫کنید‬ ‫انتخاب‬ ‫را‬SDK‫نمائید‬ ‫انتخاب‬ ‫را‬.‫که‬ ‫هایی‬ ‫گزینه‬ ‫سایر‬
‫است‬ ‫زیر‬ ‫شرح‬ ‫به‬ ‫شود‬ ‫می‬ ‫مشاهده‬:
Use auto-import:‫ازای‬ ‫به‬ ‫را‬ ‫شده‬ ‫ایجاد‬ ‫تغییرات‬ ‫همه‬ ‫باکس‬ ‫چک‬ ‫این‬refresh‫پروژه‬ ‫در‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫پروژه‬ ‫شدن‬gradle
‫کند‬ ‫می‬ ‫اعمال‬.
Use default graddle wrapper (recommended):‫از‬ ‫استفاده‬ ‫برای‬gradle wrapper‫انتخاب‬ ‫را‬ ‫گزینه‬ ‫این‬
‫کنید‬.gradle wrapper‫ایجاد‬ ‫برای‬ ‫که‬ ‫دهد‬ ‫می‬ ‫را‬ ‫امکان‬ ‫این‬(build)، ‫پروژه‬gradle‫شود‬ ‫دانلود‬ ‫اینترنت‬ ‫از‬ ‫خودکار‬ ‫صورت‬ ‫به‬.
‫نسخه‬ ‫ترین‬ ‫بروز‬ ‫از‬ ‫همواره‬ ‫همچنین‬gradle‫کند‬ ‫می‬ ‫استفاده‬.
Use local gradle distribution:‫کردن‬ ‫اجرا‬ ‫برای‬gradle‫گزینه‬ ‫این‬ ، ‫سیستم‬ ‫در‬ ‫موجود‬ ‫فایل‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫آفالین‬ ‫صورت‬ ‫به‬
‫گردد‬ ‫می‬ ‫انتخاب‬.
Gradle home:‫کامل‬ ‫آدرس‬gradle‫گردد‬ ‫می‬ ‫وارد‬ ‫محل‬ ‫این‬ ‫در‬ ‫است‬ ‫شده‬ ‫نصب‬ ‫سیستم‬ ‫روی‬ ‫بر‬ ‫که‬.‫نصب‬ ‫محل‬ ‫اگر‬gradle‫در‬
Environment Variable‫عنوان‬ ‫با‬GRADLE_HOME‫در‬ ‫یا‬ ‫و‬PATH،‫گردد‬ ‫تعریف‬
Android studio‫گیرد‬ ‫می‬ ‫نظر‬ ‫در‬ ‫فرض‬ ‫پیش‬ ‫مسیر‬ ‫عنوان‬ ‫به‬ ‫و‬ ‫کند‬ ‫می‬ ‫دریافت‬ ‫را‬ ‫مسیر‬ ‫این‬.
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫تنظیم‬ ‫برای‬gradle‫آدرس‬ ‫به‬ ، ‫موجود‬ ‫پروژه‬ ‫در‬File | Settings | Build , Execution , Development | Build Tools |
Gradle‫پردازیم‬ ‫می‬ ‫آن‬ ‫به‬ ‫ادامه‬ ‫در‬ ‫که‬ ‫است‬ ‫مشاهده‬ ‫قابل‬ ‫آیتم‬ ‫چند‬ ‫صفحه‬ ‫این‬ ‫در‬ ‫رفته‬:
Linked Gradle Project:‫های‬ ‫پروژه‬ ‫از‬ ‫لیستی‬gradle‫در‬android studio‫دهد‬ ‫می‬ ‫نمایش‬ ‫را‬.
Project-level Settings:‫پروژه‬ ‫تنظیمات‬ ‫شامل‬ ‫قسمت‬ ‫این‬gradle‫موارد‬ ‫شامل‬ ‫که‬ ‫باشد‬ ‫می‬ ‫شما‬Use auto-import،Use default
graddle wrapper (recommended)،Use local gradle distribution‫و‬Gradle home‫قبال‬ ‫آن‬ ‫شرح‬ ‫که‬ ‫باشد‬ ‫می‬
‫شد‬ ‫بیان‬.
Global Gradle Settings:‫عمومی‬ ‫تنظیمات‬ ‫شامل‬gradle‫است‬ ‫زیر‬ ‫شرح‬ ‫به‬ ‫که‬ ‫باشد‬ ‫می‬:
Offline work:‫نیست‬ ‫برقرار‬ ‫اینترنت‬ ‫با‬ ‫ارتباط‬ ‫که‬ ‫حالتی‬ ‫در‬(offline)‫کنیم‬ ‫می‬ ‫انتخاب‬ ‫را‬ ‫گزینه‬ ‫این‬.‫حالت‬ ‫این‬ ‫در‬Gradle‫از‬dependency
‫داخلی‬ ‫حافظه‬ ‫های‬(cache)‫کند‬ ‫می‬ ‫استفاده‬.‫اینکه‬ ‫دلیل‬ ‫به‬gradle‫نشدن‬ ‫یافت‬ ‫صورت‬ ‫در‬ ‫تواند‬ ‫نمی‬dependency‫و‬ ‫پیدا‬ ‫اینترنت‬ ‫از‬ ‫آنرا‬
‫فرآیند‬ ، ‫کند‬ ‫دانلود‬build‫شود‬ ‫می‬ ‫روبرو‬ ‫خطا‬ ‫با‬ ‫شدن‬.
Service Directory Path:‫مکان‬gradle‫داد‬ ‫تغییر‬ ‫فیلد‬ ‫این‬ ‫در‬ ‫توان‬ ‫می‬ ‫است‬ ‫گرفته‬ ‫قرار‬ ‫پیشفرض‬ ‫صورت‬ ‫به‬ ‫که‬ ‫را‬.‫د‬ ‫که‬ ‫است‬ ‫ذکر‬ ‫به‬ ‫الزم‬‫ر‬
‫ابتدا‬ ‫بایستی‬ ‫آفالین‬ ‫حالت‬gradle‫سایت‬ ‫از‬https://gradle.org‫گیرد‬ ‫قرار‬ ‫تنظیمات‬ ‫در‬ ‫آن‬ ‫سازی‬ ‫ذخیره‬ ‫مسیر‬ ‫و‬ ‫گردد‬ ‫دانلود‬.
Gradle VM Options:‫تنظیمات‬VM‫پروژه‬ ‫در‬gradle‫باشد‬ ‫می‬ ‫ویرایش‬ ‫قابل‬ ‫قسمت‬ ‫این‬ ‫در‬ ‫شما‬.
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫پایه‬ ‫بر‬ ‫اندروید‬ ‫تست‬JUnit‫صورت‬ ‫به‬ ‫تواند‬ ‫می‬ ‫و‬ ‫باشد‬ ‫می‬local‫در‬JVM‫تست‬ ‫نوع‬ ‫در‬ ‫یا‬ ‫و‬ ‫شود‬ ‫اجرا‬instrumented‫شود‬ ‫اجرا‬ ‫اندرویدی‬ ‫های‬ ‫دستگاه‬ ‫روی‬ ‫بر‬.
‫متدهای‬ ‫از‬ ‫تست‬ ‫فرآیند‬ ‫در‬assertion‫خطا‬ ‫صورت‬ ‫در‬ ‫و‬ ‫مقایسه‬ ‫انتظار‬ ‫قابل‬ ‫داده‬ ‫با‬ ‫را‬ ‫ورودی‬ ‫داده‬ ‫که‬ ‫شود‬ ‫می‬ ‫استفاده‬AssertionException‫گرداند‬ ‫می‬ ‫بر‬.
‫تست‬ ‫انواع‬:
‫کنید‬ ‫وارد‬ ‫را‬ ‫تست‬ ‫کد‬ ‫شده‬ ‫تعریف‬ ‫های‬ ‫بندی‬ ‫دسته‬ ‫از‬ ‫یکی‬ ‫در‬ ‫باید‬ ‫کنید‬ ‫می‬ ‫استفاده‬ ‫تست‬ ‫برای‬ ‫استدیو‬ ‫اندروید‬ ‫از‬ ‫که‬ ‫زمانی‬:
•Local Unit Test
‫آدرس‬ ‫در‬module-name/src/test/java/‫در‬ ‫ها‬ ‫تست‬ ‫از‬ ‫دسته‬ ‫این‬ ‫که‬ ‫است‬ ‫ذکر‬ ‫به‬ ‫الزم‬ ‫و‬ ‫دارد‬ ‫وجود‬ ‫دسته‬ ‫این‬ ‫کالس‬JVM‫به‬ ‫دسترسی‬ ‫و‬ ‫شده‬ ‫اجرا‬API‫فریم‬ ‫های‬
‫ندارد‬ ‫اندروید‬ ‫ورک‬.
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫گردد‬ ‫می‬ ‫بررسی‬ ‫جمع‬ ‫عملیات‬ ‫نتیجه‬ ‫صحت‬ ‫فرآیند‬ ‫باال‬ ‫نمونه‬ ‫در‬.
‫نکته‬:‫کالس‬JUnit‫که‬ ‫باشد‬ ‫می‬ ‫تست‬ ‫برای‬ ‫متد‬ ‫چندین‬ ‫شامل‬@Test‫باشد‬ ‫می‬ ‫آنها‬ ‫از‬ ‫یکی‬.
‫کنید‬ ‫مشاهده‬ ‫را‬ ‫زیر‬ ‫کد‬ ‫مثال‬ ‫عنوان‬ ‫به‬:
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
•Instrumented Test
‫آدرس‬ ‫در‬module-name/src/androidTest/java/‫روی‬ ‫باید‬ ‫ها‬ ‫تست‬ ‫از‬ ‫دسته‬ ‫این‬ ‫و‬ ‫دارد‬ ‫وجود‬ ‫دسته‬ ‫این‬ ‫کالس‬android device‫یا‬ ‫و‬ ‫ها‬emulator‫اجرا‬ ‫ها‬
‫گردند‬.
‫اینکه‬ ‫دلیل‬ ‫به‬Instrumented Test‫فایل‬ ‫یک‬ ‫صورت‬ ‫به‬ ‫ها‬APK‫باشند‬ ‫داشته‬ ‫دسترسی‬ ‫برنامه‬ ‫توابع‬ ‫به‬ ‫توانند‬ ‫می‬ ‫گردند‬ ‫می‬ ‫ایجاد‬.
‫مثال‬:‫است‬ ‫شده‬ ‫نوشته‬ ‫ذیل‬ ‫شرایط‬ ‫با‬ ‫ورودی‬ ‫تاریخ‬ ‫سنجی‬ ‫صحت‬ ‫جهت‬ ‫برنامه‬ ‫در‬ ‫متدی‬ ‫یک‬ ‫مثال‬ ‫عنوان‬ ‫به‬:‫از‬ ‫بیشتر‬ ‫شمسی‬ ‫تاریخ‬ ‫طول‬6‫نباشد‬ ‫کاراکتر‬
‫تا‬ ‫ها‬ ‫روز‬ ، ‫سال‬ ‫اول‬ ‫نیمه‬ ‫در‬ ‫نیز‬ ‫و‬ ‫باشند‬ ‫مجاز‬ ‫محدوده‬ ‫در‬ ‫روز‬ ‫و‬ ‫ماه‬ ‫و‬ ‫سال‬ ‫های‬ ‫رقم‬ ‫دو‬ ‫و‬31‫تا‬ ‫سال‬ ‫دوم‬ ‫نیمه‬ ‫در‬ ‫و‬ ‫روز‬30‫باشند‬ ‫روز‬.
‫کالس‬ ‫یک‬ ‫پروژه‬ ‫پکیج‬ ‫،در‬ ‫استدیو‬ ‫ویژوال‬ ‫افزار‬ ‫نرم‬ ‫در‬Work‫متد‬ ‫آن‬ ‫درون‬ ‫و‬dateValidation‫گردد‬ ‫می‬ ‫ایجاد‬ ‫ها‬ ‫کالس‬ ‫سایر‬ ‫از‬ ‫دسترسی‬ ‫برای‬ ‫استاتیک‬ ‫نوع‬ ‫از‬.
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫کالس‬ ‫در‬ApplicationTest‫شود‬ ‫می‬ ‫وارد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫تست‬ ‫کد‬ ،:
‫گرداند‬ ‫می‬ ‫باز‬ ‫خطا‬ ‫پیغام‬ ‫سیستم‬ ، ‫اشتباهی‬ ‫داده‬ ‫گونه‬ ‫هر‬ ‫صورت‬ ‫در‬.
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫تست‬ ‫دسته‬ ‫دو‬ ‫این‬ ‫معماری‬ ‫تفاوت‬ ‫زیر‬ ‫شکل‬:
‫که‬ ‫دارد‬ ‫وجود‬ ‫نیز‬ ‫اندروید‬ ‫های‬ ‫برنامه‬ ‫در‬ ‫تست‬ ‫از‬ ‫دیگری‬ ‫نوع‬Integration Tests‫دارد‬ ‫نام‬.
Integration Tests‫دسته‬ ‫دو‬ ‫به‬"‫اندروید‬ ‫برنامه‬ ‫های‬ ‫کامپوننت‬ ‫تست‬"‫و‬"‫اندروید‬ ‫برنامه‬ ‫های‬ ‫کامپوننت‬ ‫تقابلی‬ ‫رفتار‬ ‫تست‬"‫ب‬ ‫تقسیم‬‫شوند‬ ‫می‬ ‫ندی‬.
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫اندروید‬ ‫برنامه‬ ‫های‬ ‫کامپوننت‬ ‫تست‬(Components within your app only)
‫بین‬ ‫پیش‬ ‫که‬ ‫همانطور‬ ‫اکتیویتی‬ ‫در‬ ‫خاص‬ ‫های‬ ‫ورودی‬ ‫یا‬ ‫و‬ ‫کاربر‬ ‫مختلف‬ ‫های‬ ‫عملکرد‬ ‫ازای‬ ‫به‬ ‫افزار‬ ‫نرم‬ ‫رفتار‬ ‫آیا‬ ‫کند‬ ‫می‬ ‫بررسی‬ ‫تست‬ ‫نوع‬ ‫این‬‫ش‬ ‫ی‬‫انجام‬ ‫است‬ ‫ده‬‫خیر‬ ‫یا‬ ‫گردد‬ ‫می‬
‫خیر‬ ‫یا‬ ‫گردد‬ ‫می‬ ‫ایجاد‬ ‫افزار‬ ‫نرم‬ ‫توسط‬ ‫کاربر‬ ‫مختلف‬ ‫تعامالت‬ ‫ازای‬ ‫به‬ ‫مناسب‬ ‫خروجی‬ ‫آیا‬ ‫و‬.
‫ورک‬ ‫فریم‬ ‫تست‬ ‫نوع‬ ‫این‬ ‫در‬Espresso‫کند‬ ‫می‬ ‫سنجی‬ ‫صحت‬ ‫را‬ ‫افزار‬ ‫نرم‬ ‫عملکرد‬ ، ‫پیچیده‬ ‫های‬ ‫افزار‬ ‫نرم‬ ‫در‬ ‫کاربر‬ ‫رفتار‬ ‫سازی‬ ‫شبیه‬ ‫با‬ ‫که‬ ‫گردد‬ ‫می‬ ‫معرفی‬.
‫ورک‬ ‫فریم‬Espresso‫تست‬ ‫جهت‬UI‫رود‬ ‫می‬ ‫کار‬ ‫به‬ ‫تست‬ ‫جهت‬ ‫شده‬ ‫سازی‬ ‫شبیه‬ ‫محیط‬ ‫ایجاد‬ ‫و‬ ‫برنامه‬ ‫یک‬ ‫در‬.‫اندروید‬ ‫روی‬ ‫بر‬ ‫ورک‬ ‫فریم‬ ‫این‬2.2(API 8)‫کاربرد‬ ‫باال‬ ‫به‬
‫در‬ ‫شده‬ ‫اجرا‬ ‫های‬ ‫اکتیویتی‬ ‫همه‬ ‫تا‬ ‫شود‬ ‫می‬ ‫منتظر‬ ‫هوشمند‬ ‫صورت‬ ‫به‬ ‫و‬ ‫شود‬ ‫می‬ ‫مطمئن‬ ‫افزار‬ ‫نرم‬ ‫شدن‬ ‫اجرا‬ ‫از‬ ‫اجرا‬ ‫زمان‬ ‫در‬ ‫نیز‬ ‫و‬ ‫دارد‬background‫پایان‬ ‫خود‬ ‫کار‬ ‫به‬
‫گردد‬ ‫می‬ ‫اجرا‬ ‫سپس‬ ‫و‬ ‫دهند‬.
Espresso‫شود‬ ‫می‬ ‫تشکیل‬ ‫اصلی‬ ‫کامپوننت‬ ‫سه‬ ‫از‬:
viewMatchers:‫یافتن‬view‫نظر‬ ‫مورد‬
viewActions:‫روی‬ ‫عملی‬ ‫انجام‬view
viewAssertions:‫وضعیت‬ ‫بررسی‬view
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫دهد‬ ‫می‬ ‫نمایش‬ ‫را‬ ‫مجاز‬ ‫متدهای‬ ‫تمامی‬ ‫زیر‬ ‫شکل‬:
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫نصب‬Espresso:
‫ورک‬ ‫فریم‬ ‫ابتدا‬Espresso 2.2.1 core‫عنوان‬ ‫به‬ ‫را‬dependency‫کنیم‬ ‫می‬ ‫اضافه‬ ‫پروژه‬ ‫به‬.
‫های‬ ‫کتابخانه‬ ‫افزودن‬ ‫تست‬ ‫این‬ ‫نیازمندیهای‬runner‫و‬rules
‫تست‬ ‫جهت‬UI‫در‬ ‫این‬ ‫بر‬ ‫بنا‬ ‫گردد‬ ‫می‬ ‫تست‬ ‫در‬ ‫اختالل‬ ‫ایجاد‬ ‫باعث‬ ‫زیرا‬ ‫نمائیم‬ ‫فعال‬ ‫غیر‬ ‫برنامه‬ ‫در‬ ‫را‬ ‫انیمیشن‬ ‫الزماست‬
setting > developing options‫موارد‬ ،Window animation scale،Transition animation scale‫و‬
Animator duration scale‫کنیم‬ ‫می‬ ‫فعال‬ ‫غیر‬ ‫را‬.
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫مثال‬:‫ورک‬ ‫فریم‬ ‫با‬ ‫تست‬ ‫از‬ ‫نمونه‬ ‫برای‬Espresso‫نیازمند‬‫باشیم‬ ‫می‬ ‫زیر‬ ‫موارد‬:
‫کامپوننت‬ ‫داخل‬ ‫متن‬ ‫بررسی‬ ‫تست‬ ‫این‬ ‫هدف‬textView‫باشد‬ ‫می‬ ‫برنامه‬ ‫اصلی‬ ‫فرم‬ ‫در‬.
‫کامپونندت‬ ‫یدک‬ ، ‫اندرویدد‬ ‫پدروژه‬ ‫در‬ ‫ابتددا‬textView‫بدا‬‫مدتن‬“Hello World!"‫کندیم‬ ‫مدی‬ ‫ایجداد‬.‫کدالس‬‫هدای‬runner،rules‫و‬espresso 2.2‫عندوان‬ ‫بده‬ ‫را‬
dependency‫پروژه‬‫با‬ ‫و‬TestCompile‫به‬‫فایل‬ ‫در‬ ‫که‬ ‫کنیم‬ ‫می‬ ‫اضافه‬ ‫پروژه‬bradle.build‫باید‬‫به‬‫عنوان‬
dependency‫توسط‬ ‫خورکار‬ ‫صورت‬ ‫به‬gradle‫افزوده‬‫شود‬.
‫دایرکتوری‬ ‫در‬ ‫سپس‬androidTest‫در‬‫به‬ ‫جدیدی‬ ‫کالس‬ ، ‫پروژه‬ ‫پکیج‬‫نام‬
NotesScreenTest‫و‬ ‫میکنیم‬ ‫ایجاد‬‫مانند‬‫کد‬ ‫تصویر‬‫کنیم‬ ‫می‬ ‫وارد‬ ‫آن‬ ‫در‬ ‫را‬ ‫تست‬:
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫کالس‬NotesScreenTest‫باشد‬ ‫می‬ ‫تست‬ ‫مسئول‬.@RunWith‫که‬‫کالس‬ ‫های‬ ‫متد‬ ‫از‬JUnit‫انوتیشن‬ ‫این‬ ‫پارامتر‬ ‫عنوان‬ ‫به‬ ‫کالسی‬ ‫زمانیکه‬ ، ‫باشد‬ ‫می‬
، ‫شود‬ ‫می‬ ‫تعریف‬Junit‫آن‬‫کند‬ ‫می‬ ‫فراخوانی‬ ‫تست‬ ‫زمان‬ ‫در‬ ‫را‬ ‫کالس‬.‫کالس‬ ‫از‬ ‫تست‬ ‫جهت‬ ‫ما‬ ، ‫مثال‬ ‫این‬ ‫در‬AndroidJUnit4
‫ایم‬ ‫کرده‬ ‫استفاده‬.
@Rule‫اکتیویتی‬‫و‬ ‫کند‬ ‫می‬ ‫فراخوانی‬ ‫را‬ ‫گردد‬ ‫می‬ ‫اعمال‬ ‫آن‬ ‫های‬ ‫کامپوننت‬ ‫روی‬ ‫بر‬ ‫تست‬ ‫که‬ ‫پروژه‬ ‫اصلی‬@Test‫حاوی‬‫سناریوی‬
‫باشد‬ ‫می‬ ‫تست‬.
‫از‬ ‫عبارتند‬ ‫فوق‬ ‫تست‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫کتابخانه‬:
.Exposed 1-instrumentation-api-publish-0.3
.Espresso 2-core-2.2
.Junit 34.12
.Rules 4-0.3
.Runner 5-0.3
.Hamcrest 6-library-1.3
.Hamcrest 7-core-1.3
.Javax 8-inject-1
.Guava 9-18.0
‫برای‬‫و‬ ‫کلیک‬ ‫راست‬ ‫کالس‬ ‫نام‬ ‫روی‬ ‫فوق‬ ‫تست‬ ‫اجرای‬run‫را‬‫گردد‬ ‫می‬ ‫آغاز‬ ‫تست‬ ‫فرآیند‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫انتخاب‬.
‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬
‫تست‬‫اندروید‬ ‫برنامه‬ ‫های‬ ‫کامپوننت‬ ‫تقابلی‬ ‫رفتار‬(Cross-app Components)
‫گیرد‬ ‫می‬ ‫انجام‬ ‫دسته‬ ‫این‬ ‫در‬ ‫سیستم‬ ‫و‬ ‫ها‬ ‫افزار‬ ‫نرم‬ ‫بین‬ ‫یا‬ ‫و‬ ‫کاربر‬ ‫مختلف‬ ‫های‬ ‫افزار‬ ‫نرم‬ ‫بین‬ ‫تعاملی‬ ‫رفتار‬ ‫سنجی‬ ‫صحت‬.
‫گردد‬ ‫تست‬ ‫اندروید‬ ‫عامل‬ ‫سیستم‬ ‫تنظیمات‬ ‫در‬ ‫تغییر‬ ‫ازای‬ ‫به‬ ‫برنامه‬ ‫کارکرد‬ ‫باید‬ ‫که‬ ‫زمانی‬ ‫مثال‬ ‫عنوان‬ ‫به‬.
‫ورک‬ ‫فریم‬UIAutomator‫در‬‫دارد‬ ‫کاربرد‬ ‫تست‬ ‫نوع‬ ‫این‬.
‫پایان‬

More Related Content

Viewers also liked (7)

Anexo 12-practica-1
Anexo 12-practica-1Anexo 12-practica-1
Anexo 12-practica-1
 
NEASC Overview 2017
NEASC Overview 2017NEASC Overview 2017
NEASC Overview 2017
 
Postmodernism in captain america
Postmodernism in captain americaPostmodernism in captain america
Postmodernism in captain america
 
Formas de expresion escrita
Formas de expresion escritaFormas de expresion escrita
Formas de expresion escrita
 
Novel Laser Anlyzers for Natural Gas Leaks Detection
Novel Laser Anlyzers for Natural Gas Leaks DetectionNovel Laser Anlyzers for Natural Gas Leaks Detection
Novel Laser Anlyzers for Natural Gas Leaks Detection
 
Guide til LinkedIn og det nye design
Guide til LinkedIn og det nye designGuide til LinkedIn og det nye design
Guide til LinkedIn og det nye design
 
8 tallerpractico10 maria aliria parra
8 tallerpractico10 maria aliria parra8 tallerpractico10 maria aliria parra
8 tallerpractico10 maria aliria parra
 

Similar to android_test_approach

اسلاید های شروع برنامه نویسی اندروید با جاوا - مهندس سید وحید هاشمی
اسلاید های شروع برنامه نویسی اندروید با جاوا - مهندس سید وحید هاشمیاسلاید های شروع برنامه نویسی اندروید با جاوا - مهندس سید وحید هاشمی
اسلاید های شروع برنامه نویسی اندروید با جاوا - مهندس سید وحید هاشمی
Vahid Hashemi
 

Similar to android_test_approach (20)

Scrum Presentation
Scrum PresentationScrum Presentation
Scrum Presentation
 
Scrum doc
Scrum docScrum doc
Scrum doc
 
اسلاید های شروع برنامه نویسی اندروید با جاوا - مهندس سید وحید هاشمی
اسلاید های شروع برنامه نویسی اندروید با جاوا - مهندس سید وحید هاشمیاسلاید های شروع برنامه نویسی اندروید با جاوا - مهندس سید وحید هاشمی
اسلاید های شروع برنامه نویسی اندروید با جاوا - مهندس سید وحید هاشمی
 
Kotlin
KotlinKotlin
Kotlin
 
Kunagi سیستم مدیریت پروژه آنلاین
Kunagi  سیستم مدیریت پروژه آنلاینKunagi  سیستم مدیریت پروژه آنلاین
Kunagi سیستم مدیریت پروژه آنلاین
 
آشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندرویدآشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندروید
 
Docker
DockerDocker
Docker
 
قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis
قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 
Root android device using kingo root
Root android device using kingo rootRoot android device using kingo root
Root android device using kingo root
 
AngularJS
AngularJSAngularJS
AngularJS
 
دوره آموزش ساخت اپلیکیشن فروشگاهی اندرویدی
دوره آموزش ساخت اپلیکیشن فروشگاهی اندرویدیدوره آموزش ساخت اپلیکیشن فروشگاهی اندرویدی
دوره آموزش ساخت اپلیکیشن فروشگاهی اندرویدی
 
How to root any android device with kingroot
How to root any android device with kingrootHow to root any android device with kingroot
How to root any android device with kingroot
 
Security tools - ابزارهای امنیتی
Security tools - ابزارهای امنیتیSecurity tools - ابزارهای امنیتی
Security tools - ابزارهای امنیتی
 
Design Patterns چیست و به چه دردی می خورد؟ (persian)
Design Patterns  چیست و به چه دردی می خورد؟ (persian)Design Patterns  چیست و به چه دردی می خورد؟ (persian)
Design Patterns چیست و به چه دردی می خورد؟ (persian)
 
مهاجرت به متن باز در شرکت توزیع برق مشهد
مهاجرت به متن باز در شرکت توزیع برق مشهدمهاجرت به متن باز در شرکت توزیع برق مشهد
مهاجرت به متن باز در شرکت توزیع برق مشهد
 
برنامه نویسی ماژول دروپال در 5 مرحله
برنامه نویسی ماژول دروپال در 5 مرحلهبرنامه نویسی ماژول دروپال در 5 مرحله
برنامه نویسی ماژول دروپال در 5 مرحله
 
Az Micro
Az MicroAz Micro
Az Micro
 
طرح چارچوب متن باز تولید نرم افزار
طرح چارچوب  متن باز تولید نرم افزار طرح چارچوب  متن باز تولید نرم افزار
طرح چارچوب متن باز تولید نرم افزار
 
آموزش برنامه نویسی اندروید از صفر تا صد به صورت پروژه محور برای ورود به بازار...
آموزش برنامه نویسی اندروید از صفر تا صد به صورت پروژه محور برای ورود به بازار...آموزش برنامه نویسی اندروید از صفر تا صد به صورت پروژه محور برای ورود به بازار...
آموزش برنامه نویسی اندروید از صفر تا صد به صورت پروژه محور برای ورود به بازار...
 
News
NewsNews
News
 

android_test_approach

  • 1. ‫الرحیم‬ ‫الرحمن‬ ‫اهلل‬ ‫بسم‬ ‫اندروید‬ ‫در‬ ‫تست‬ ‫مبحث‬ ‫خالصه‬ ‫صابری‬ ‫صادق‬ ‫محمد‬ ‫پائیز‬95
  • 2. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫قبل‬‫باره‬ ‫در‬ ‫مختصری‬ ‫توضیح‬ ‫به‬ ‫مبحث‬ ‫شروع‬ ‫از‬gradle‫در‬ ‫آن‬ ‫تنظیمات‬ ‫و‬android studio‫پردازیم‬ ‫می‬ ‫نصب‬ ‫قصد‬ ‫بار‬ ‫نخستین‬ ‫برای‬ ‫صورتیکه‬ ‫در‬gradle‫دارید‬ ‫استدیو‬ ‫اندروید‬ ‫در‬ ‫را‬‫کنید‬ ‫دنبال‬ ‫را‬ ‫زیر‬ ‫های‬ ‫راه‬ ‫از‬ ‫یکی‬: ‫گزینه‬ ، ‫دارید‬ ‫جدید‬ ‫پروژه‬ ‫یک‬ ‫ایجاد‬ ‫قصد‬ ‫صورتیکه‬ ‫در‬create New Project‫و‬ ‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫یا‬‫مسیر‬ ‫از‬File | New Project‫نمائید‬ ‫اقدام‬. ‫گزینه‬ ، ‫دارید‬ ‫را‬ ‫موجود‬ ‫پروژه‬ ‫به‬ ‫ماژول‬ ‫افزودن‬ ‫قصد‬ ‫صورتیکه‬ ‫در‬File | New Module‫نمائید‬ ‫انتخاب‬ ‫را‬.
  • 3. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫گزینه‬ ‫چپ‬ ‫سمت‬ ‫در‬ ‫شده‬ ‫باز‬ ‫صفحه‬ ‫در‬Gradle، ‫صفحه‬ ‫راست‬ ‫بخش‬ ‫در‬ ‫و‬ ‫کنید‬ ‫انتخاب‬ ‫را‬SDK‫نمائید‬ ‫انتخاب‬ ‫را‬.‫که‬ ‫هایی‬ ‫گزینه‬ ‫سایر‬ ‫است‬ ‫زیر‬ ‫شرح‬ ‫به‬ ‫شود‬ ‫می‬ ‫مشاهده‬: Use auto-import:‫ازای‬ ‫به‬ ‫را‬ ‫شده‬ ‫ایجاد‬ ‫تغییرات‬ ‫همه‬ ‫باکس‬ ‫چک‬ ‫این‬refresh‫پروژه‬ ‫در‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫پروژه‬ ‫شدن‬gradle ‫کند‬ ‫می‬ ‫اعمال‬. Use default graddle wrapper (recommended):‫از‬ ‫استفاده‬ ‫برای‬gradle wrapper‫انتخاب‬ ‫را‬ ‫گزینه‬ ‫این‬ ‫کنید‬.gradle wrapper‫ایجاد‬ ‫برای‬ ‫که‬ ‫دهد‬ ‫می‬ ‫را‬ ‫امکان‬ ‫این‬(build)، ‫پروژه‬gradle‫شود‬ ‫دانلود‬ ‫اینترنت‬ ‫از‬ ‫خودکار‬ ‫صورت‬ ‫به‬. ‫نسخه‬ ‫ترین‬ ‫بروز‬ ‫از‬ ‫همواره‬ ‫همچنین‬gradle‫کند‬ ‫می‬ ‫استفاده‬. Use local gradle distribution:‫کردن‬ ‫اجرا‬ ‫برای‬gradle‫گزینه‬ ‫این‬ ، ‫سیستم‬ ‫در‬ ‫موجود‬ ‫فایل‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫آفالین‬ ‫صورت‬ ‫به‬ ‫گردد‬ ‫می‬ ‫انتخاب‬. Gradle home:‫کامل‬ ‫آدرس‬gradle‫گردد‬ ‫می‬ ‫وارد‬ ‫محل‬ ‫این‬ ‫در‬ ‫است‬ ‫شده‬ ‫نصب‬ ‫سیستم‬ ‫روی‬ ‫بر‬ ‫که‬.‫نصب‬ ‫محل‬ ‫اگر‬gradle‫در‬ Environment Variable‫عنوان‬ ‫با‬GRADLE_HOME‫در‬ ‫یا‬ ‫و‬PATH،‫گردد‬ ‫تعریف‬ Android studio‫گیرد‬ ‫می‬ ‫نظر‬ ‫در‬ ‫فرض‬ ‫پیش‬ ‫مسیر‬ ‫عنوان‬ ‫به‬ ‫و‬ ‫کند‬ ‫می‬ ‫دریافت‬ ‫را‬ ‫مسیر‬ ‫این‬.
  • 4. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫تنظیم‬ ‫برای‬gradle‫آدرس‬ ‫به‬ ، ‫موجود‬ ‫پروژه‬ ‫در‬File | Settings | Build , Execution , Development | Build Tools | Gradle‫پردازیم‬ ‫می‬ ‫آن‬ ‫به‬ ‫ادامه‬ ‫در‬ ‫که‬ ‫است‬ ‫مشاهده‬ ‫قابل‬ ‫آیتم‬ ‫چند‬ ‫صفحه‬ ‫این‬ ‫در‬ ‫رفته‬: Linked Gradle Project:‫های‬ ‫پروژه‬ ‫از‬ ‫لیستی‬gradle‫در‬android studio‫دهد‬ ‫می‬ ‫نمایش‬ ‫را‬. Project-level Settings:‫پروژه‬ ‫تنظیمات‬ ‫شامل‬ ‫قسمت‬ ‫این‬gradle‫موارد‬ ‫شامل‬ ‫که‬ ‫باشد‬ ‫می‬ ‫شما‬Use auto-import،Use default graddle wrapper (recommended)،Use local gradle distribution‫و‬Gradle home‫قبال‬ ‫آن‬ ‫شرح‬ ‫که‬ ‫باشد‬ ‫می‬ ‫شد‬ ‫بیان‬. Global Gradle Settings:‫عمومی‬ ‫تنظیمات‬ ‫شامل‬gradle‫است‬ ‫زیر‬ ‫شرح‬ ‫به‬ ‫که‬ ‫باشد‬ ‫می‬: Offline work:‫نیست‬ ‫برقرار‬ ‫اینترنت‬ ‫با‬ ‫ارتباط‬ ‫که‬ ‫حالتی‬ ‫در‬(offline)‫کنیم‬ ‫می‬ ‫انتخاب‬ ‫را‬ ‫گزینه‬ ‫این‬.‫حالت‬ ‫این‬ ‫در‬Gradle‫از‬dependency ‫داخلی‬ ‫حافظه‬ ‫های‬(cache)‫کند‬ ‫می‬ ‫استفاده‬.‫اینکه‬ ‫دلیل‬ ‫به‬gradle‫نشدن‬ ‫یافت‬ ‫صورت‬ ‫در‬ ‫تواند‬ ‫نمی‬dependency‫و‬ ‫پیدا‬ ‫اینترنت‬ ‫از‬ ‫آنرا‬ ‫فرآیند‬ ، ‫کند‬ ‫دانلود‬build‫شود‬ ‫می‬ ‫روبرو‬ ‫خطا‬ ‫با‬ ‫شدن‬. Service Directory Path:‫مکان‬gradle‫داد‬ ‫تغییر‬ ‫فیلد‬ ‫این‬ ‫در‬ ‫توان‬ ‫می‬ ‫است‬ ‫گرفته‬ ‫قرار‬ ‫پیشفرض‬ ‫صورت‬ ‫به‬ ‫که‬ ‫را‬.‫د‬ ‫که‬ ‫است‬ ‫ذکر‬ ‫به‬ ‫الزم‬‫ر‬ ‫ابتدا‬ ‫بایستی‬ ‫آفالین‬ ‫حالت‬gradle‫سایت‬ ‫از‬https://gradle.org‫گیرد‬ ‫قرار‬ ‫تنظیمات‬ ‫در‬ ‫آن‬ ‫سازی‬ ‫ذخیره‬ ‫مسیر‬ ‫و‬ ‫گردد‬ ‫دانلود‬. Gradle VM Options:‫تنظیمات‬VM‫پروژه‬ ‫در‬gradle‫باشد‬ ‫می‬ ‫ویرایش‬ ‫قابل‬ ‫قسمت‬ ‫این‬ ‫در‬ ‫شما‬.
  • 5. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫پایه‬ ‫بر‬ ‫اندروید‬ ‫تست‬JUnit‫صورت‬ ‫به‬ ‫تواند‬ ‫می‬ ‫و‬ ‫باشد‬ ‫می‬local‫در‬JVM‫تست‬ ‫نوع‬ ‫در‬ ‫یا‬ ‫و‬ ‫شود‬ ‫اجرا‬instrumented‫شود‬ ‫اجرا‬ ‫اندرویدی‬ ‫های‬ ‫دستگاه‬ ‫روی‬ ‫بر‬. ‫متدهای‬ ‫از‬ ‫تست‬ ‫فرآیند‬ ‫در‬assertion‫خطا‬ ‫صورت‬ ‫در‬ ‫و‬ ‫مقایسه‬ ‫انتظار‬ ‫قابل‬ ‫داده‬ ‫با‬ ‫را‬ ‫ورودی‬ ‫داده‬ ‫که‬ ‫شود‬ ‫می‬ ‫استفاده‬AssertionException‫گرداند‬ ‫می‬ ‫بر‬. ‫تست‬ ‫انواع‬: ‫کنید‬ ‫وارد‬ ‫را‬ ‫تست‬ ‫کد‬ ‫شده‬ ‫تعریف‬ ‫های‬ ‫بندی‬ ‫دسته‬ ‫از‬ ‫یکی‬ ‫در‬ ‫باید‬ ‫کنید‬ ‫می‬ ‫استفاده‬ ‫تست‬ ‫برای‬ ‫استدیو‬ ‫اندروید‬ ‫از‬ ‫که‬ ‫زمانی‬: •Local Unit Test ‫آدرس‬ ‫در‬module-name/src/test/java/‫در‬ ‫ها‬ ‫تست‬ ‫از‬ ‫دسته‬ ‫این‬ ‫که‬ ‫است‬ ‫ذکر‬ ‫به‬ ‫الزم‬ ‫و‬ ‫دارد‬ ‫وجود‬ ‫دسته‬ ‫این‬ ‫کالس‬JVM‫به‬ ‫دسترسی‬ ‫و‬ ‫شده‬ ‫اجرا‬API‫فریم‬ ‫های‬ ‫ندارد‬ ‫اندروید‬ ‫ورک‬.
  • 6. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫گردد‬ ‫می‬ ‫بررسی‬ ‫جمع‬ ‫عملیات‬ ‫نتیجه‬ ‫صحت‬ ‫فرآیند‬ ‫باال‬ ‫نمونه‬ ‫در‬. ‫نکته‬:‫کالس‬JUnit‫که‬ ‫باشد‬ ‫می‬ ‫تست‬ ‫برای‬ ‫متد‬ ‫چندین‬ ‫شامل‬@Test‫باشد‬ ‫می‬ ‫آنها‬ ‫از‬ ‫یکی‬. ‫کنید‬ ‫مشاهده‬ ‫را‬ ‫زیر‬ ‫کد‬ ‫مثال‬ ‫عنوان‬ ‫به‬:
  • 7. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ •Instrumented Test ‫آدرس‬ ‫در‬module-name/src/androidTest/java/‫روی‬ ‫باید‬ ‫ها‬ ‫تست‬ ‫از‬ ‫دسته‬ ‫این‬ ‫و‬ ‫دارد‬ ‫وجود‬ ‫دسته‬ ‫این‬ ‫کالس‬android device‫یا‬ ‫و‬ ‫ها‬emulator‫اجرا‬ ‫ها‬ ‫گردند‬. ‫اینکه‬ ‫دلیل‬ ‫به‬Instrumented Test‫فایل‬ ‫یک‬ ‫صورت‬ ‫به‬ ‫ها‬APK‫باشند‬ ‫داشته‬ ‫دسترسی‬ ‫برنامه‬ ‫توابع‬ ‫به‬ ‫توانند‬ ‫می‬ ‫گردند‬ ‫می‬ ‫ایجاد‬. ‫مثال‬:‫است‬ ‫شده‬ ‫نوشته‬ ‫ذیل‬ ‫شرایط‬ ‫با‬ ‫ورودی‬ ‫تاریخ‬ ‫سنجی‬ ‫صحت‬ ‫جهت‬ ‫برنامه‬ ‫در‬ ‫متدی‬ ‫یک‬ ‫مثال‬ ‫عنوان‬ ‫به‬:‫از‬ ‫بیشتر‬ ‫شمسی‬ ‫تاریخ‬ ‫طول‬6‫نباشد‬ ‫کاراکتر‬ ‫تا‬ ‫ها‬ ‫روز‬ ، ‫سال‬ ‫اول‬ ‫نیمه‬ ‫در‬ ‫نیز‬ ‫و‬ ‫باشند‬ ‫مجاز‬ ‫محدوده‬ ‫در‬ ‫روز‬ ‫و‬ ‫ماه‬ ‫و‬ ‫سال‬ ‫های‬ ‫رقم‬ ‫دو‬ ‫و‬31‫تا‬ ‫سال‬ ‫دوم‬ ‫نیمه‬ ‫در‬ ‫و‬ ‫روز‬30‫باشند‬ ‫روز‬. ‫کالس‬ ‫یک‬ ‫پروژه‬ ‫پکیج‬ ‫،در‬ ‫استدیو‬ ‫ویژوال‬ ‫افزار‬ ‫نرم‬ ‫در‬Work‫متد‬ ‫آن‬ ‫درون‬ ‫و‬dateValidation‫گردد‬ ‫می‬ ‫ایجاد‬ ‫ها‬ ‫کالس‬ ‫سایر‬ ‫از‬ ‫دسترسی‬ ‫برای‬ ‫استاتیک‬ ‫نوع‬ ‫از‬.
  • 8. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫کالس‬ ‫در‬ApplicationTest‫شود‬ ‫می‬ ‫وارد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫تست‬ ‫کد‬ ،: ‫گرداند‬ ‫می‬ ‫باز‬ ‫خطا‬ ‫پیغام‬ ‫سیستم‬ ، ‫اشتباهی‬ ‫داده‬ ‫گونه‬ ‫هر‬ ‫صورت‬ ‫در‬.
  • 9. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫تست‬ ‫دسته‬ ‫دو‬ ‫این‬ ‫معماری‬ ‫تفاوت‬ ‫زیر‬ ‫شکل‬: ‫که‬ ‫دارد‬ ‫وجود‬ ‫نیز‬ ‫اندروید‬ ‫های‬ ‫برنامه‬ ‫در‬ ‫تست‬ ‫از‬ ‫دیگری‬ ‫نوع‬Integration Tests‫دارد‬ ‫نام‬. Integration Tests‫دسته‬ ‫دو‬ ‫به‬"‫اندروید‬ ‫برنامه‬ ‫های‬ ‫کامپوننت‬ ‫تست‬"‫و‬"‫اندروید‬ ‫برنامه‬ ‫های‬ ‫کامپوننت‬ ‫تقابلی‬ ‫رفتار‬ ‫تست‬"‫ب‬ ‫تقسیم‬‫شوند‬ ‫می‬ ‫ندی‬.
  • 10. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫اندروید‬ ‫برنامه‬ ‫های‬ ‫کامپوننت‬ ‫تست‬(Components within your app only) ‫بین‬ ‫پیش‬ ‫که‬ ‫همانطور‬ ‫اکتیویتی‬ ‫در‬ ‫خاص‬ ‫های‬ ‫ورودی‬ ‫یا‬ ‫و‬ ‫کاربر‬ ‫مختلف‬ ‫های‬ ‫عملکرد‬ ‫ازای‬ ‫به‬ ‫افزار‬ ‫نرم‬ ‫رفتار‬ ‫آیا‬ ‫کند‬ ‫می‬ ‫بررسی‬ ‫تست‬ ‫نوع‬ ‫این‬‫ش‬ ‫ی‬‫انجام‬ ‫است‬ ‫ده‬‫خیر‬ ‫یا‬ ‫گردد‬ ‫می‬ ‫خیر‬ ‫یا‬ ‫گردد‬ ‫می‬ ‫ایجاد‬ ‫افزار‬ ‫نرم‬ ‫توسط‬ ‫کاربر‬ ‫مختلف‬ ‫تعامالت‬ ‫ازای‬ ‫به‬ ‫مناسب‬ ‫خروجی‬ ‫آیا‬ ‫و‬. ‫ورک‬ ‫فریم‬ ‫تست‬ ‫نوع‬ ‫این‬ ‫در‬Espresso‫کند‬ ‫می‬ ‫سنجی‬ ‫صحت‬ ‫را‬ ‫افزار‬ ‫نرم‬ ‫عملکرد‬ ، ‫پیچیده‬ ‫های‬ ‫افزار‬ ‫نرم‬ ‫در‬ ‫کاربر‬ ‫رفتار‬ ‫سازی‬ ‫شبیه‬ ‫با‬ ‫که‬ ‫گردد‬ ‫می‬ ‫معرفی‬. ‫ورک‬ ‫فریم‬Espresso‫تست‬ ‫جهت‬UI‫رود‬ ‫می‬ ‫کار‬ ‫به‬ ‫تست‬ ‫جهت‬ ‫شده‬ ‫سازی‬ ‫شبیه‬ ‫محیط‬ ‫ایجاد‬ ‫و‬ ‫برنامه‬ ‫یک‬ ‫در‬.‫اندروید‬ ‫روی‬ ‫بر‬ ‫ورک‬ ‫فریم‬ ‫این‬2.2(API 8)‫کاربرد‬ ‫باال‬ ‫به‬ ‫در‬ ‫شده‬ ‫اجرا‬ ‫های‬ ‫اکتیویتی‬ ‫همه‬ ‫تا‬ ‫شود‬ ‫می‬ ‫منتظر‬ ‫هوشمند‬ ‫صورت‬ ‫به‬ ‫و‬ ‫شود‬ ‫می‬ ‫مطمئن‬ ‫افزار‬ ‫نرم‬ ‫شدن‬ ‫اجرا‬ ‫از‬ ‫اجرا‬ ‫زمان‬ ‫در‬ ‫نیز‬ ‫و‬ ‫دارد‬background‫پایان‬ ‫خود‬ ‫کار‬ ‫به‬ ‫گردد‬ ‫می‬ ‫اجرا‬ ‫سپس‬ ‫و‬ ‫دهند‬. Espresso‫شود‬ ‫می‬ ‫تشکیل‬ ‫اصلی‬ ‫کامپوننت‬ ‫سه‬ ‫از‬: viewMatchers:‫یافتن‬view‫نظر‬ ‫مورد‬ viewActions:‫روی‬ ‫عملی‬ ‫انجام‬view viewAssertions:‫وضعیت‬ ‫بررسی‬view
  • 11. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫دهد‬ ‫می‬ ‫نمایش‬ ‫را‬ ‫مجاز‬ ‫متدهای‬ ‫تمامی‬ ‫زیر‬ ‫شکل‬:
  • 12. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫نصب‬Espresso: ‫ورک‬ ‫فریم‬ ‫ابتدا‬Espresso 2.2.1 core‫عنوان‬ ‫به‬ ‫را‬dependency‫کنیم‬ ‫می‬ ‫اضافه‬ ‫پروژه‬ ‫به‬. ‫های‬ ‫کتابخانه‬ ‫افزودن‬ ‫تست‬ ‫این‬ ‫نیازمندیهای‬runner‫و‬rules ‫تست‬ ‫جهت‬UI‫در‬ ‫این‬ ‫بر‬ ‫بنا‬ ‫گردد‬ ‫می‬ ‫تست‬ ‫در‬ ‫اختالل‬ ‫ایجاد‬ ‫باعث‬ ‫زیرا‬ ‫نمائیم‬ ‫فعال‬ ‫غیر‬ ‫برنامه‬ ‫در‬ ‫را‬ ‫انیمیشن‬ ‫الزماست‬ setting > developing options‫موارد‬ ،Window animation scale،Transition animation scale‫و‬ Animator duration scale‫کنیم‬ ‫می‬ ‫فعال‬ ‫غیر‬ ‫را‬.
  • 13. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫مثال‬:‫ورک‬ ‫فریم‬ ‫با‬ ‫تست‬ ‫از‬ ‫نمونه‬ ‫برای‬Espresso‫نیازمند‬‫باشیم‬ ‫می‬ ‫زیر‬ ‫موارد‬: ‫کامپوننت‬ ‫داخل‬ ‫متن‬ ‫بررسی‬ ‫تست‬ ‫این‬ ‫هدف‬textView‫باشد‬ ‫می‬ ‫برنامه‬ ‫اصلی‬ ‫فرم‬ ‫در‬. ‫کامپونندت‬ ‫یدک‬ ، ‫اندرویدد‬ ‫پدروژه‬ ‫در‬ ‫ابتددا‬textView‫بدا‬‫مدتن‬“Hello World!"‫کندیم‬ ‫مدی‬ ‫ایجداد‬.‫کدالس‬‫هدای‬runner،rules‫و‬espresso 2.2‫عندوان‬ ‫بده‬ ‫را‬ dependency‫پروژه‬‫با‬ ‫و‬TestCompile‫به‬‫فایل‬ ‫در‬ ‫که‬ ‫کنیم‬ ‫می‬ ‫اضافه‬ ‫پروژه‬bradle.build‫باید‬‫به‬‫عنوان‬ dependency‫توسط‬ ‫خورکار‬ ‫صورت‬ ‫به‬gradle‫افزوده‬‫شود‬. ‫دایرکتوری‬ ‫در‬ ‫سپس‬androidTest‫در‬‫به‬ ‫جدیدی‬ ‫کالس‬ ، ‫پروژه‬ ‫پکیج‬‫نام‬ NotesScreenTest‫و‬ ‫میکنیم‬ ‫ایجاد‬‫مانند‬‫کد‬ ‫تصویر‬‫کنیم‬ ‫می‬ ‫وارد‬ ‫آن‬ ‫در‬ ‫را‬ ‫تست‬:
  • 14. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫کالس‬NotesScreenTest‫باشد‬ ‫می‬ ‫تست‬ ‫مسئول‬.@RunWith‫که‬‫کالس‬ ‫های‬ ‫متد‬ ‫از‬JUnit‫انوتیشن‬ ‫این‬ ‫پارامتر‬ ‫عنوان‬ ‫به‬ ‫کالسی‬ ‫زمانیکه‬ ، ‫باشد‬ ‫می‬ ، ‫شود‬ ‫می‬ ‫تعریف‬Junit‫آن‬‫کند‬ ‫می‬ ‫فراخوانی‬ ‫تست‬ ‫زمان‬ ‫در‬ ‫را‬ ‫کالس‬.‫کالس‬ ‫از‬ ‫تست‬ ‫جهت‬ ‫ما‬ ، ‫مثال‬ ‫این‬ ‫در‬AndroidJUnit4 ‫ایم‬ ‫کرده‬ ‫استفاده‬. @Rule‫اکتیویتی‬‫و‬ ‫کند‬ ‫می‬ ‫فراخوانی‬ ‫را‬ ‫گردد‬ ‫می‬ ‫اعمال‬ ‫آن‬ ‫های‬ ‫کامپوننت‬ ‫روی‬ ‫بر‬ ‫تست‬ ‫که‬ ‫پروژه‬ ‫اصلی‬@Test‫حاوی‬‫سناریوی‬ ‫باشد‬ ‫می‬ ‫تست‬. ‫از‬ ‫عبارتند‬ ‫فوق‬ ‫تست‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫کتابخانه‬: .Exposed 1-instrumentation-api-publish-0.3 .Espresso 2-core-2.2 .Junit 34.12 .Rules 4-0.3 .Runner 5-0.3 .Hamcrest 6-library-1.3 .Hamcrest 7-core-1.3 .Javax 8-inject-1 .Guava 9-18.0 ‫برای‬‫و‬ ‫کلیک‬ ‫راست‬ ‫کالس‬ ‫نام‬ ‫روی‬ ‫فوق‬ ‫تست‬ ‫اجرای‬run‫را‬‫گردد‬ ‫می‬ ‫آغاز‬ ‫تست‬ ‫فرآیند‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫انتخاب‬.
  • 15. ‫اندروید‬ ‫افزار‬ ‫نرم‬ ‫تست‬ ‫تست‬‫اندروید‬ ‫برنامه‬ ‫های‬ ‫کامپوننت‬ ‫تقابلی‬ ‫رفتار‬(Cross-app Components) ‫گیرد‬ ‫می‬ ‫انجام‬ ‫دسته‬ ‫این‬ ‫در‬ ‫سیستم‬ ‫و‬ ‫ها‬ ‫افزار‬ ‫نرم‬ ‫بین‬ ‫یا‬ ‫و‬ ‫کاربر‬ ‫مختلف‬ ‫های‬ ‫افزار‬ ‫نرم‬ ‫بین‬ ‫تعاملی‬ ‫رفتار‬ ‫سنجی‬ ‫صحت‬. ‫گردد‬ ‫تست‬ ‫اندروید‬ ‫عامل‬ ‫سیستم‬ ‫تنظیمات‬ ‫در‬ ‫تغییر‬ ‫ازای‬ ‫به‬ ‫برنامه‬ ‫کارکرد‬ ‫باید‬ ‫که‬ ‫زمانی‬ ‫مثال‬ ‫عنوان‬ ‫به‬. ‫ورک‬ ‫فریم‬UIAutomator‫در‬‫دارد‬ ‫کاربرد‬ ‫تست‬ ‫نوع‬ ‫این‬. ‫پایان‬