Development/UITests/fa

این مستندات اولیه برای چارچوب آزمون رابط گرافیکی با تمرکز ویژه بر پایتون است.

معماری
تست رابط گرافیکی از دو بخش تشکیل شده است، یک قطعه ++C که رابط کاربری لیبره آفیس را در یک کتابخانه درون‌نگری قرار می‌دهد و یک چارچوب پایتون با کد آزمایش واقعی. ارتباط بین دو بخش از طریق یک رابط UNO ساده و عمدتاً بدون نوع انجام می‌شود.

کتابخانه درون‌نگری ++C
کتابخانه درون‌نگری ++C از یک رابط برنامه‌نویسی UNO تشکیل می‌شود که برای ارتباط با بخش پایتون چارچوب و لفافه‌های بسیاری از اشیاء رابط گرافیکی استفاده می‌شود. رابط UNO تنها چند تابع دارد و بیشتر ارتباطات از طریق پارامترهای رشته‌ای انجام می‌شود.

لفافه برای اشیاء رابط گرافیکی تقریباً همان تابع‌های رابط UNO را به علاوه برخی از تابع‌های کمکی ارائه می‌دهد.

نوشتن آزمون
ارائه سیسکو فائولی از FOSDEM 2021، LibreOffice QA - نحوه نوشتن اولین آزمون خود، روند ایجاد آزمون‌ها را طی می‌کند.

ارائه سیسکو از FOSDEM 2022 چیزهایی که می‌توانید در UITest مورد آزمون قرار دهید را نشان می‌دهد.

بخش Makefile
یک فایل ساخت ساده برای آزمایش رابط کاربری شبیه به پرونده نمایشی است. بخش مهم این است که از کلاس آزمون رابط گرافیکی gbuild استفاده کنید و اجازه دهید "gb_UITest_add_module" به دایرکتوری‌های دارای پرونده‌های آزمایشی اشاره کند.

به طور معمول هیچ چیز دیگری مورد نیاز نیست و بیشتر کار در کلاس gbuild UITest مدیریت می‌شود.

پارامتر "range_name" نام هدف آزمون است. «$(SRCDIR/sc/qa/uitest» پوشه پایه است و پارامترها در آن بخش، پوشه‌هایی را برای جستجوی آزمایش‌ها ارائه می‌کند.

به صورت اختیاری، آزمون را می‌توان با یک پرونده registrymodifications.xcu خاص اجرا کرد تا از اجرای با تنظیمات پیکربندی مشخص پشتیبانی کند. هر آزمایش یک نمایه کاربری خاص در «workdir/UITest/test_name/user/» دارد. با قطعه کد makefile زیر می‌توان یک پرونده را در آن پوشه کپی کرد.

با این کار پرونده sc/qa/uitest/range_name/registrymodifications.xcu در نمایه کاربر کپی می‌شود و آزمایش با این تنظیمات اجرا می‌شود.

مدیریت وضعیت اشیاء رابط کاربری
این تابع برای به دست آوردن وضعیت شیء رابط گرافیکی توسط تمام عناصر رابط گرافیکی ارائه می‌شود. این تابع، وضعیت را به عنوان دنباله‌ای از PropertyValue ها برمی‌گرداند.

چارچوب آزمون رابط گرافیکی تابعی را برای تبدیل دنباله برگردانده شده PropertyValue به dictionary پایتون ارائه می‌دهد.

عملیات کلمه کلیدی
نمونه

کدهای کلیدی:



ابزار نوشتن آزمون
بخش دشوار نوشتن یک آزمون این است که بفهمید کدام دستورات UNO ارسال شود و کدام عمل روی یک شی UI فراخوانی شود. خوشبختانه امکان وقایع‌نگاری دستورات UNO وجود دارد.


 * 1) از این خط‌ها در bashrc. یا cshrc. استفاده کنید:
 * 2) لیبره آفیس را با این اجرا کنید
 * 3) کاری را که می‌خواهید با ماوس انجام دهید شبیه‌سازی کنید
 * 4) لیبره آفیس را ببندید
 * 5) پرونده حاصل را از instdir/uitest/test.log باز کنید
 * 6) پوشه وقایع‌نگاری رابط کاربری را با این دستور وارد کنید:
 * 7) مطمئن شوید که پایتون شما textX library را نصب دارد
 * 8) از دستور زیر استفاده کنید   متن  باید با چیزی مانند SourceDirectory/core/instdir/uitest/test.log جایگزین شود و  می‌تواند مکانی به انتخاب شما باشد که می‌خواهید کد تولید شده را ببینید.

شما می توانید تمام مراحل زیر را در این ویدیوی یوتیوب دنبال کنید:

اجرای آزمون
قبل از این‌که آزمون را به شاخه master ارسال کنیم، باید به وضوح بررسی کنیم که آزمون کار می‌کند. یک راه ساده این است که تمام آزمون‌های رابط گرافیکی را در ماژول uitest از طریق make uitest.uicheck اجرا کنید. با این وجود، ما می‌خواهیم رابط گرافیکی را در حین انجام آزمایش ببینیم و آزمون‌ها به طور پیش‌فرض به صورت بدون رابط گرافیکی (headless) اجرا شوند. این با اجرای موارد زیر در پوشه اصلی به دست می‌آید:

همچنین می‌توان از یک «اسکریپت پوسته»» برای شروع آزمایش استفاده کرد.

همچنین ممکن است برای راه انداختن آن به چند متغیر محیطی نیاز داشته باشید، بنابراین اسکریپت کامل به این صورت خواهد بود:

توجه داشته باشید که باید این اسکریپت را از دایرکتوری منبع هسته لیبره آفیس اجرا کنید.

در صورتی که آزمون «get_url_for_data_file» را برای باز کردن یک پرونده فراخوانی می‌کند، متغیر TDOC را بر این اساس تغییر دهید تا به پوشه‌ای که پرونده در آن قرار دارد اشاره کنید. وقتی آزمون را با رابط کاربری قابل مشاهده اجرا می کنید، متوجه می‌شوید که آزمون خیلی سریع است که نمی‌توانید ببینید چه اتفاقی دارد می‌افتد. یک راه‌حل سریع و کثیف اضافه کردن time.sleep پایتون است که اجرا را برای مدتی متوقف می‌کند. راه حل دیگری که واقعاً می‌توانید در کد بگذارید (فقط چند مورد مفید را در یک آزمون باقی بگذارید) در مکان های جالب uitest.debug.sleep است. این تابع نادیده گرفته می‌شود مگر این‌که آزمون در حالت اشکال‌زدایی با ارسال پارامتر debug-- به آزمون شروع شود.

هنگامی که نیاز به اجرای تنها یک آزمون در پرونده اسکریپت آزمون دارید، دستور زیر را اجرا کنید:

برای مثال

اقلام رابط کاربری پشتیبانی نشده

 * پشتیبانی پایه
 * مرتب‌سازی اسلاید در ارائه
 * دوبار کلیک روی فرم‌ها. برای الهام گرفتن به tdf#133641 مراجعه کنید
 * فایل -ساحره‌ها
 * ارائه - حداقل کننده ارائه
 * وقایع‌نگاری (LO_COLLECT_UIINFO) در ویندوز
 * دوبار کلیک
 * وقایع‌نگاری نمودارها
 * نوار ابزار اطلاعات پایین در صفحه گسترده
 * پشتیبانی بهتر از میانبرها (tdf#124931)

فهرست آزمون‌های رابط کاربری در master
می‌توانید فهرست آزمون‌های رابط گرافیکی قبلاً پیاده‌سازی شده را بررسی کنید.

پیدا کردن اشکالات
ما کلمه کلیدی needUITest را در باگزیلا برای ردیابی همه اشکالاتی داریم که به آزمون رابط گرافیکی برای آزمایش خودکار آن نیاز دارند:

اطلاعات بیشتر

 * پست وبلاگی مارکوس مهرهارد: آزمون رابط گرافیکی در لیبره آفیس


 * پست وبلاگ مارکوس مهرهارد: نوشتن یک آزمون رابط گرافیکی صفحه گسترده لیبره آفیس


 * پست وبلاگی مارکوس مُهرهارد: آموزش آزمون رابط کاربری لیبره آفیس (بخش 1) : اضافه کردن یک آزمون ساده.


 * پست وبلاگی مارکوس مُهرهارد: آموزش آزمون رابط کاربری لیبره آفیس (بخش 2) : بهبود کتابخانه درون‌نگری


 * وبلاگ ساوراو چیرانیا GSOC 2018


 * وبلاگ احمد الشریف GSOC 2019


 * چگونه با استفاده از وقایع‌نگاری‌های خود مورد آزمایش ایجاد کنید (ویدیوی یوتیوب)