شروع کنید تا ببینید چیه تست نویسی؟: تست نویسی مثل اینه که وقتی یه بازی میسازید، قبلش یه نقشه کشیدید که چی باید بسازید و بعداً ازش برای مطمئن شدن که همه چیز درست کار میکنه، استفاده میکنید.
از ابزارهای خوب استفاده کنید: مثل برنامههایی که برای تست نویسی در اندروید وجود دارند. مثل JUnit برای تست واحدها یا Espresso برای تست رابط کاربری.
یاد بگیرید تستها چطوری نوشته میشن: برای هر قسمت از برنامه که میخواین تست بنویسید، باید بدونید که چکار میخواین انجام بدید و اونو بنویسید.
تمرین کنید، تمرین و دوباره تمرین!: بهترین راه یادگیری تست نویسی، تمرینه. پس بیاین بنویسید و تستها رو اجرا کنید و ببینید چیزایی که مینویسید چطوری کار میکنند.
سوال بپرسید و از منابع آموزشی استفاده کنید: اگر چیزی رو نمیفهمید یا گیر کردید، سوال بپرسید. اینترنت پر از منابع آموزشیه که بهتون کمک میکنه تا تست نویسی رو بیشتر یاد بگیرید.
همیشه به تغییرات و باگها پا پیش بگیرید: یادتون نره که گاهی وقتا برنامهها تغییر میکنند و باگهایی دارند. پس تستها رو همیشه بروز نگه دارید.
مطمئنا! برای تست نویسی در برنامه نویسی اندروید، میتوانید از چندین ابزار مختلف استفاده کنید که به شما کمک میکنند تا تستهای واحدها، تستهای رابط کاربری (UI) و تستهای ادغام را انجام دهید. در ادامه به معرفی این ابزارها میپردازم:
معرفی JUnit: JUnit یکی از محبوبترین چارچوبهای تست برای تست واحدها در جاوا و اندروید است. این چارچوب به شما امکان میدهد تا تستهای واحدها را به راحتی بنویسید و اجرا کنید. در واقع، تست واحدها مربوط به بخشهای کوچک و مستقلی از برنامه است که میتوانید آنها را جداگانه اجرا کنید و از صحت عملکرد آنها مطمئن شوید. این بخشها معمولاً توابع، کلاسها، یا قسمتهایی از کد هستند که مستقل از سایر بخشهای برنامه قابل تست و ارزیابی هستند.به طور مثال، فرض کنید یک تابع دارید که محاسبهی میانگین اعداد یک لیست را انجام میدهد. شما میتوانید یک تست واحد برای این تابع بنویسید که لیستی از اعداد را به عنوان ورودی میگیرد و میانگین را محاسبه کرده و سپس از صحت محاسبات خود مطمئن شود. این تست تنها روی این تابع خاص تمرکز دارد و باعث میشود که از عملکرد صحیح آن اطمینان حاصل کنید.
ابزار Espresso: Espresso یک چارچوب تست رابط کاربری (UI) است که برای تست کردن رفتار واقعی کاربر در برنامههای اندروید استفاده میشود. با استفاده از Espresso میتوانید تستهای UI را به صورت اتوماتیک انجام دهید.
ابزار Mockito: Mockito یک چارچوب موکینگ است که برای ایجاد شیء مجازی (mock object) در تستهای واحدها استفاده میشود. این ابزار به شما امکان میدهد تا تعاملاتی که برنامه شما با سایر قسمتهای آنلاین دارد را شبیهسازی کنید.
ابزار Robolectric: Robolectric یک چارچوب تست است که اجازه میدهد تا تستهای واحدها و تستهای ادغام را در محیط JVM اجرا کنید بدون اینکه به یک دستگاه واقعی نیاز داشته باشید. این ابزار به شما امکان میدهد تا تستهای سریعتری انجام دهید.
ابزار UI Automator: این ابزار توسط گوگل ارائه شده و برای تست کردن عملکرد رابط کاربری در سطح سیستم عامل اندروید استفاده میشود. با استفاده از UI Automator میتوانید تستهایی برای بررسی عملکرد رابط کاربری در سراسر برنامه اندروید خود ایجاد کنید.
این ابزارها فقط چند نمونه از ابزارهایی هستند که برای تست نویسی در برنامه نویسی اندروید مورد استفاده قرار میگیرند. انتخاب ابزارهای مناسب بستگی به نیازهای خاص شما و نوع تستهایی که قصد دارید انجام دهید دارد.
بیایید با یک مثال ساده و یک مثال پیشرفته از استفاده از JUnit در برنامه نویسی اندروید آشنا شویم:
مثال ساده: فرض کنید که یک کلاس ساده به نام Calculator داریم که دو عدد را جمع و تفریق میکند. برای تست این کلاس با استفاده از JUnit، میتوانیم یک تست واحد برای هر یک از عملیات جمع و تفریق بنویسیم.
در این مثال، ما دو تست ایجاد کردیم؛ یکی برای تابع جمع و دیگری برای تابع تفریق. ما از assertEquals برای اطمینان از اینکه نتیجهی بازگشتی از تابع، مورد انتظار ما استفاده کردهایم.
در واقع assertEquals یک تابع است که برای اطمینان از صحت نتیجهی بازگشتی از یک تابع استفاده میشود. آرگومان اول آن، مقدار مورد انتظار است و آرگومان دوم مقدار بازگشتی از تابع است که میخواهیم آن را با مقدار مورد انتظار مقایسه کنیم. اگر این دو مقدار برابر نباشند، تست ناموفق خواهد بود و خطای مربوطه نمایش داده خواهد شد. در اینجا، ما از تابع subtract کلاس Calculator استفاده میکنیم تا 3 را از 5 کم کند. مقدار بازگشتی این تابع انتظار داریم که 2 باشد. بنابراین، این تست بررسی میکند که آیا تابع subtract به درستی عملیات تفریق را انجام میدهد و نتیجهی آن، همان مقدار 2 است یا خیر.