آزمایش بخشی جداییناپذیر از فرایند توسعه برنامه است. معمولاً برنامهها را در شبیهساز یا دستگاه اجرا میکنید تا بهصورت دستی تأیید کنید که کدتان مطابق انتظار کار میکند. بااینحال، آزمایش دستی زمانبر است، مستعد خطا است، و اغلب برای برنامههایی که در صفحهنمایشها و دستگاههای با اندازههای مختلف اجرا میشوند غیرقابلمدیریت است. مشکلات آزمایش دستی اغلب نتیجه استفاده از یک دستگاه واحد برای توسعه است. درنتیجه، خطاها در دستگاههای دیگر با عوامل شکل متفاوت ممکن است نادیده گرفته شوند.
برای شناسایی پسرفتها در اندازههای مختلف پنجره و صفحهنمایش، آزمایشهای خودکارسازیشدهای را پیادهسازی کنید تا تأیید کنید که رفتار و ظاهر برنامهتان در عوامل شکل مختلف یکسان است. آزمایشهای خودکار مشکلات را در مراحل اولیه شناسایی میکنند و خطر بروز مشکلاتی که بر تجربه کاربر تأثیر میگذارند را کاهش میدهند.
آنچه باید آزمایش شود
هنگام توسعه دادن میاناهای کاربر ساختهشده برای اندازههای مختلف صفحهنمایش و پنجره، به دو جنبه توجه ویژه داشته باشید:
- تفاوت ویژگیهای دیداری عناصر و چیدمانها در پنجرههای با اندازههای مختلف
- نحوه حفظ وضعیت در تغییرات پیکربندی
مشخصههای دیداری
چه میاناهای کاربر را برای اندازههای مختلف پنجره سفارشیسازی کنید چه نکنید، باید درستی نمایش میاناهای کاربر را تأیید کنید. عرضها و ارتفاعهای فشرده، متوسط، و گسترده را درنظر بگیرید. برای نقطههای شکست توصیهشده، کلاسهای اندازه پنجره را ببینید.
همچنین، ممکن است برنامه شما برخیاز عناصر سیستم طراحیتان را وقتی محدودیتهای اندازه آنها کشیده میشود، آنطور که انتظار میرود ارائه نکند.
اگر برنامه شما چیدمانهای تطبیقی برای اندازههای مختلف پنجره دارد، باید آزمایشهای خودکارسازیشدهای برای جلوگیری از پسرفت داشته باشید. برای مثال، اصلاح حاشیه در تلفن میتواند منجر به ناسازگاریهای چیدمان در رایانه لوحی شود. آزمایشهای میانای کاربر ایجاد کنید تا عملکرد چیدمانها و عناصرتان را درستیسنجی کنید، یا آزمایشهای نماگرفت بسازید تا چیدمانها را بهصورت دیداری درستیسنجی کنید.
مرمت وضعیت
برنامههایی که در دستگاههایی مثل رایانههای لوحی اجرا میشوند، خیلی بیشتر از برنامههای تلفن چرخانده و تغییر اندازه داده میشوند. همچنین، دستگاههای تاشو قابلیتهای نمایش جدیدی مانند تا شدن و باز شدن را معرفی میکنند که میتوانند باعث تغییرات پیکربندی شوند. برنامه شما باید بتواند وضعیت را هنگام وقوع این تغییرات پیکربندی بازیابی کند. همچنین باید آزمایشهایی بنویسید که تأیید کند برنامه شما وضعیت را بهدرستی بازیابی میکند.
ابتدا آزمایش کنید که برنامه شما هنگام تغییر پیکربندی ازکار نیفتد. مطمئن شوید که هر میانای کاربری در برنامه شما میتواند هر ترکیبی از چرخش، تغییر اندازه، یا تاشدن را مدیریت کند. ازآنجاییکه تغییرات پیکربندی بهطور پیشفرض فعالیت را بازآفرینی میکند، برخیاز خرابیها بهدلیل فرضهای مربوط به ماندگاری فعالیت رخ میدهد.
روشهای متعددی برای آزمایش تغییرات پیکربندی وجود دارد، اما در اکثر موارد، دو روش برای آزمایش وجود دارد:
- در «نوشتن»، از
StateRestorationTesterبرای شبیهسازی تغییر پیکربندی بهشیوهای کارآمد بدون راهاندازی مجدد فعالیت استفاده کنید. برای اطلاعات بیشتر، بخشهای زیر را ببینید. - در هر آزمون واسط کاربر مثل Espresso یا Compose، با فراخواندن
Activity.recreate()، تغییر پیکربندی را شبیهسازی کنید.
بهطورکلی، برای آزمایش بازیابی وضعیت در پاسخ به تغییرات پیکربندی، نیازی به استفاده از دستگاههای مختلف ندارید. دلیلش این است که همه تغییرات پیکربندی که فعالیت را بازآفرینی میکنند پیامدهای مشابهی دارند. بااینحال، برخیاز تغییرات پیکربندی ممکن است باعث راهاندازی سازوکارهای مختلف بازگرداندن وضعیت در دستگاههای خاص شود.
برای مثال، وقتی کاربر درحال مشاهده واسط کاربر فهرست-جزئیات در دستگاه تاشو باز است و دستگاه را تا میکند تا به نمایشگر جلو برود، واسط کاربر معمولاً به صفحه جزئیات میرود. آزمایش خودکار باید این بازیابی وضعیت واسط کاربر، ازجمله وضعیت پیمایش را پوشش دهد.
برای آزمایش تغییرات پیکربندی که در دستگاههایی که از یک نمایشگر به نمایشگر دیگر میروند یا وارد حالت چندپنجرهای میشوند، چندین گزینه دارید:
- بااستفاده از هر دستگاهی، اندازه صفحه را درطول آزمایش تغییر دهید. در اکثر موارد، این کار باعث راهاندازی همه سازوکارهای بازیابی وضعیت میشود که باید درستیسنجی کنید. بااینحال، این آزمایش برای منطقی که وضعیتهای خاص در دستگاههای تاشو را تشخیص میدهد کار نمیکند، زیرا تغییر وضعیت باعث تغییر پیکربندی نمیشود.
- بااستفاده از دستگاه یا شبیهسازی که از ویژگیهای مدنظرتان برای آزمایش پشتیبانی میکند، تغییرات پیکرببندی مربوطه را راهاندازی کنید. برای مثال، یک دستگاه تاشو یا تبلت را میتوان بااستفاده از «دستگاه اسپرسو» کنترل کرد تا از حالت تاشده به حالت باز و افقی برود. برای مثال، بخش دستگاه Espresso در کتابخانهها و ابزارهای آزمایش اندازههای مختلف صفحهنمایش را ببینید.
انواع آزمایشها برای اندازههای مختلف صفحهنمایش و پنجره
برای هر مورد استفاده، از نوع مناسب آزمایش استفاده کنید تا مطمئن شوید آزمایش در انواع مختلف عاملهای فرم بهدرستی کار میکند:
آزمایشهای رفتار میانای کاربر بخشی از میانای کاربر برنامه، مثل نمایش فعالیت، راهاندازی میکنند. آزمایشها وجود عناصر خاص یا داشتن ویژگیهای خاص را درستیسنجی میکنند . آزمایشها ممکن است بهصورت اختیاری کنشهای کاربر شبیهسازیشده را انجام دهند. برای نماها، از Espresso استفاده کنید. Jetpack Compose واسطهای برنامهنویسی کاربردی آزمایش مخصوص به خود را دارد. آزمایشهای رفتار واسط کاربر میتواند ابزاری یا محلی باشد. آزمایشهای ابزاری در دستگاهها یا شبیهسازها اجرا میشوند، درحالیکه آزمایشهای واسط کاربر محلی در Robolectric در JVM اجرا میشوند.
از آزمونهای رفتار «میانای کاربر» برای تأیید اینکه پیادهسازی ناوبری برنامه صحیح است استفاده کنید. آزمایشها کنشهایی مثل کلیک کردن و تند کشیدن انجام میدهند. آزمایشهای رفتار «میانای کاربر» وجود عناصر یا داراییهای خاص را نیز بررسی میکنند. برای کسب اطلاعات بیشتر، خودکارسازی آزمایشهای واسط کاربر را ببینید.
آزمایشهای نماگرفت از رابط کاربری یا عنصر نماگرفت میگیرند و تصویر را با نماگرفت قبلاً تأییدشده مقایسه میکنند. این روش بسیار مؤثری برای محافظت دربرابر پسرفتها است، زیرا یک نماگرفت میتواند تعداد زیادی عنصر و ویژگیهای دیداری آن را پوشش دهد. میتوانید آزمایشهای نماگرفت را در JVM یا در دستگاهها اجرا کنید. چندین چارچوب آزمایش نماگرفت دردسترس است. برای اطلاعات بیشتر، به آزمایشهای نماگرفت مراجعه کنید.
درنهایت، ممکن است برای آزمایش عملکرد واحدهای منطقی که بسته به نوع دستگاه یا اندازه پنجره رفتار متفاوتی دارند به آزمایشهای واحد نیاز داشته باشید، اما آزمایشهای واحد در این زمینه کمتر رایج است.
مراحل بعدی
برای اطلاعات بیشتر درباره نحوه اجرای بررسیهای موجود در این سند، به کتابخانهها و ابزارها مراجعه کنید.