دانلود رایگان مقاله انگلیسی + خرید ترجمه فارسی | |
عنوان فارسی مقاله: |
الگوریتم جست و جوی اول عمق و هدفمند برای تست سیستمی و اصولی برنامه های اندروید |
عنوان انگلیسی مقاله: |
Targeted and Depth-first Exploration for Systematic Testing of Android Apps |
|
مشخصات مقاله انگلیسی (PDF) | |
سال انتشار | 2013 |
تعداد صفحات مقاله انگلیسی | 20 صفحه با فرمت pdf |
رشته های مرتبط با این مقاله | مهندسی فناوری اطلاعات و کامپیوتر |
گرایش های مرتبط با این مقاله | مهندسی نرم افزار، برنامه نویسی کامپیوتر، رایانش ابری و طراحی و تولید نرم افزار |
ارائه شده از دانشگاه | دانشگاه کالیفرنیا، ریورساید |
رفرنس | دارد ✓ |
کد محصول | F978 |
نشریه | ACM |
مشخصات و وضعیت ترجمه فارسی این مقاله (Word) | |
وضعیت ترجمه | انجام شده و آماده دانلود |
تعداد صفحات ترجمه تایپ شده با فرمت ورد با قابلیت ویرایش | 30 صفحه با فونت 14 B Nazanin |
ترجمه عناوین تصاویر و جداول | ترجمه شده است ✓ |
ترجمه متون داخل تصاویر | ترجمه شده است ✓ |
ترجمه متون داخل جداول | ترجمه نشده است ☓ |
درج تصاویر در فایل ترجمه | درج شده است ✓ |
درج جداول در فایل ترجمه | درج شده است ✓ |
منابع داخل متن | به صورت عدد درج شده است ✓ |
کیفیت ترجمه | کیفیت ترجمه این مقاله متوسط میباشد |
توضیحات | ترجمه این مقاله به صورت خلاصه انجام شده است. |
فهرست مطالب |
چکیده
1-مقدمه
2- فعالیت های اندروید، گراف ها و شاخص ها
2-1 ساختار برنامه اندرویید
جریان کار برنامه اندروید
گراف انتقال فعالیت پویا
3-مطالعه کاربر: پوشش در طی استفاده منظم
3-1 پوشش فعالیت
4-رویکرد
4-1 ساخت SATG
4-2 کشف هدفمند
4-3 جست وجوی عمق اول
4-4 اشکال زدایی و موارد ازمایشی قابل پاسخ
5-پیاده سازی
5-1 شرایط و ابزار
5-2 اندازه گیری پوشش
5-3 جست و گر خودکار
5-4 جست و جوی هدف
5-5 جست و جوی عمق اول
6- ارزیابی
6-1 اثر بخشی و کارایی
6-2 باز دارنده ها و کاتالیزور های جست و جوی خودکار
7-کار نسبی
8- نتیجه گیری
|
بخشی از ترجمه |
چکیده مقدمه
کاربران به طور روز افزونی برای انجام کار های محاسباتی به گوشی های هوشمند متکی هستند(1-2) و از این روی دغدغه هایی نظیر درستی نرم افزار ، عملکرد و امنیت آن دارند( 6-8-31،38). تحلیل دینامیگ و پویا یک رویکرد جذاب برای مقابله با این نگرانی ها از طریق پروفیل بندی و پایش است و برای مطالعه خواص و ویژگی های مختلف از مصرف انرژی تا پروفیل بندی و امنیت استفاده کرده است. با این حال، تحلیل دینامیک بر قابلیت دسترسی به نمونه های آزمایشی متکی است که اطمینان از پوشش خوب را می دهد و به این ترتیب اجرای برنامه ها از طریق مجموعه ای از وضعیت های برنامه ای معروف مهم خواهد بود(36-37).
به منظور تسهیل ساخت و ساز و جست و جوی بسیاری از نرم افزار های گوشی های هوشمند چندین رویکر د ارایه شده است. ابزار مانکی(15) قادر به ارسال تصادفی استریم های رویداد به برنامه است و این موجب محدود شدن کارایی کشف می شود. جارچوب هایی نظیر مونوکریمر(24)، راباتیو(18) و تیرود(20) برای برنامه نویسی ارسال میشود و از این روی برنامه نویسی مدت زمان زیادی را طول می کشد. رویکرد های قبلی برای جست و جوی خودکار GUI محدودیت های زیادی را داشته است. این محدودیت ها مربوط به رویکرد برنامه نویسی، اجرای ناقص مدل ها و کشف فضای حالت است.
برای کشف بیشتر مسئله، اجرای یک سری ویژکی های ااکتشافی نظیر آمازون تلفن همراه، کاسبودی، یوتیوب، شازم را دوباره به نواز دعوت، و یا سی ان ان را در نظر بگیرید که کد منبع آن ها قابل دسترس نیست. رویکرد ما این کار را به خوبی انجام می دهد زیرا ما به نرم افزار ها و برنامه های اچرا شونده بر روی گوشی تاکید داریم. با این حال رویکرد های موجود دارای مشکلاتی به دلیل نبود کد منبع و نیز اجرای برنامه بر روی شبیه ساز ها که در آن طیف وسیعی از ورودی ها و خروجی ها وجود دارند می باشند. برای مقابله با این چالش ها، ما نرم افزار (A3E) را بر اساس ابزار منبع باز و رویکرد خود برای کشف مستقیم نرم افزار های دنیای واقعی که بر روی تلفن های واقعی کار می کنند ارایه می دهیم. توسعه دهندکان می توانند از رویکرد ما به طور مکمل با شرایط ازمایشی موجود با یک سری نمونه های خود ساخته بهره ببرند که هدف آن ها جست و جوی سیستمی است. چون (A3E) نیازی به دسترسی به کد منبع ندارد، کاربرانی به جز توسعه دهنده ها می توانند بخش های اصلی برنامه را به طور خودکار اجرا کنند. A3E از سنسور ها پشتیبانی کرده و از این روی نیاز به ابزار سطح چارچوب یا هسته ندارد و از این روی سربار ایجاد نرم افزار و و شبیه ساز یمحصول اجتناب می شود. از این روی می توان باور داشت که محققان ومتخصصان می توانند از A3E به عنوان اساس تحلیل دینامیک استفاده کنند( پایش، پروفیل بندی، مسیر یابی جریان اطلاعات)، تست و اشکال زدایی.
در این مقاله، رویکرد ما بر بهبود هم گرایی در دوسطح متکی است: فعالیت و روش/ فعالیت ها بخش های اصلی از برنامه های اندروییدی هستند- یک فعالیت با صفحه و پنجره در برنامه های مبتنی بر GUI ارتباط دارد. افزایش پوشش فعالیت به معنی جست و جوی صفحات بیشتر است. برای پشش روش ما بر روش های پوشش برنامه تاکید درایم که در بایت کود داولیک موجود است و بر روی داولیک VM بر روی گوشی واقعی اجرا می شود. پیاده سازی فعالیت متشکل از روش های بسیاری است و از این روی با بهبود پوشش روش می توان کارکرد هر یک از فعالیت های جست وجو شده را افزایش داد. در بخش2، ما مروری بر پلاتفرم و برنامه های اندرویید داریم و از این روی گراف هایی را ایجاد کنیم که تعریفی از شاخص های پوششی را برای ما می دهند.
برای درک سطح کشف حاصله با کاربران برنامه اندرویید، ما یک مطالعه کاربر محور انجام داده و پوشش را در طی تعامل منظم اندازه گیری کردیم. برای اهداف مطالعه 7 کاربر ثبت نام شدهف 28 برنامه اندرویید محبوب را اجرا کردندو نتایج نشان داد که در همه برنامه ها و شرکت کننده ها، به طور متوسط، 30.8 درصد همه صفحات برنامه و 6.46 درصد همه روش ها کشف شدند. نتایج و دلایل این سطوح پوشش در بخش 3 ارایه شده است.
در بخش 4، ما رویکرد خود را برای جست و جوی خودکار ارایه می دهیم: با توجه به یک نرم افزار، ما مسیر های جست و جوی سیستمی را برای اهداف مختلف نظیر تحلیل دینامیک ارایه می کنیم. رویکرد ما متشکل از دو فن است: جست و جوی هدفمند یک روش مستقیم و هدفمند می باشد که از تحلیل بایت کد ساکن برای استخراج گراف انتقال فعالیت استاتیک استفاده کرده و سپس گراف را به طور خودکار در زمان اجرا بر روی تلفن انتخاب می کند. حست و چوی عمل اول یک رویکرد کاملا پویا بر اساس کشف خودکار فعالیت ها عناصر GUI می باشد/.
در بخش 5ما مروری بر پیاده سازی A3E داریم: پلاتفرم سخت افزار، ابزار ها و روش های اندازه گیری. در بخش 6، یک ارزیابی از رویکرد مان بر روی 25 برنامه صورت می گیرد. ما نشان می دهیم که رویکرد ما موثر است: به طور متوسط 64.11 و 59.39 درصد پوشش فعالیت از طریق جست و جوی عمق اول و هدفمند ایجاد شد. این خود به پوشش روش به ترتیب 29.53 و 36.46 درصد از طریق این دو روش رسید. رویکرد ما کارامد است و یک سری مقادیر به صورت 74 ثانیه برای ساخت گراف فعالیت استاتیک، برای 87 دقیقه برای جست و جوی هدفمند و 104 دقیقه در نظر کرفته می شود.
به طور خلاصه، این مطالعه پیامد های زیر را به دنبال دارد
• مطالعه کمی و کیفی از پوشش بدست آمده توسط 7 کاربر برای 28 برنامه اندرویید
• دو رویکرد جست و جوی هدف مند و عمق اول،
• ارزیابی صحت دو جست و جوی هدفمند و عمق اول، بر روی 25 نرم افزار اندروید محبوب
|
بخشی از مقاله انگلیسی |
Abstract Systematic exploration of Android apps is an enabler for a variety of app analysis and testing tasks. Performing the exploration while apps run on actual phones is essential for exploring the full range of app capabilities. However, exploring real-world apps on real phones is challenging due to non-determinism, non-standard control flow, scalability and overhead constraints. Relying on end-users to conduct the exploration might not be very effective: we performed a 7-user study on popular Android apps, and found that the combined 7-user coverage was 30.08% of the app screens and 6.46% of the app methods. Prior approaches for automated exploration of Android apps have run apps in an emulator or focused on small apps whose source code was available. To address these problems, we present A 3E, an approach and tool that allows substantial Android apps to be explored systematically while running on actual phones, yet without requiring access to the app’s source code. The key insight of our approach is to use a static, taint-style, dataflow analysis on the app bytecode in a novel way, to construct a high-level control flow graph that captures legal transitions among activities (app screens). We then use this graph to develop an exploration strategy named Targeted Exploration that permits fast, direct exploration of activities, including activities that would be difficult to reach during normal use. We also developed a strategy named Depth-first Exploration that mimics user actions for exploring activities and their constituents in a slower, but more systematic way. To measure the effectiveness of our techniques, we use two metrics: activity coverage (number of screens explored) and method coverage. Experiments with using our approach on 25 popular Android apps including BBC News, Gas Buddy, Amazon Mobile, YouTube, Shazam Encore, and CNN, show that our exploration techniques achieve 59.39–64.11% activity coverage and 29.53–36.46% method coverage. 1. Introduction Users are increasingly relying on smartphones for computational tasks [1, 2], hence concerns such as app correctness, performance, and security become increasingly pressing [6, 8, 30, 31, 38]. Dynamic analysis is an attractive approach for tackling such concerns via profiling and monitoring, and has been used to study a wide range of properties, from energy usage [38, 39] to profiling [40] and security [31]. However, dynamic analysis critically hinges on the availability of test cases that can ensure good coverage, i.e., drive program execution through a significant set of representative program states [36, 37]. To facilitate test case construction and exploration for smartphone apps, several approaches have emerged. The Monkey tool [15] can send random event streams to an app, but this limits exploration effectiveness. Frameworks such as Monkeyrunner [24], Robotium [18] and Troyd [20] support scripting and sending events, but scripting takes manual effort. Prior approaches for automated GUI exploration [9– 12, 17, 34] have one or more limitations that stand in the way of understanding how popular apps run in their natural environment, i.e., on actual phones: running apps in an emulator, targeting small apps whose source code is available, incomplete model extraction, state space explosion. For illustration, consider the task of automatically exploring popular apps, such as Amazon Mobile, Gas Buddy, YouTube, Shazam Encore, or CNN, whose source code is not available. Our approach can carry out this task, as shown in Section 6, since we connect to apps running naturally on the phone. However, existing approaches have multiple difficulties due to the lack of source code or running the app on the emulator where the full range of required sensor inputs (camera, GPS, microphone) or output devices (e.g., flashlight) is either unavailable [32] or would have to be simulated. To tackle these challenges, we present Automatic Android App Explorer (A 3E), an approach and open-source tool1 for systematically exploring real-world, popular apps Android apps running on actual phones. Developers can use our approach to complement their existing test suites with automatically-generated test cases aimed at systematic exploration. Since A 3E does not require access to source code, users other than the developers can execute substantial parts of the app automatically. A 3E supports sensors and does not require kernel- or framework-level instrumentation, so the typical overhead of instrumentation and device emulation can be avoided. Hence we believe that researchers and practitioners can use A 3E as a basis for dynamic analyses [36] (e.g., monitoring, profiling, information flow tracking), testing, debugging, etc. In this paper, our approach is focused on improving coverage at two granularity levels: activity (high-level) and method (low-level). Activities are the main parts of Android apps—an activity roughly corresponds to a different screen or window in traditional GUI-based applications. Increasing activity coverage means, roughly, exploring more screens. For method coverage we focus on covering app methods, as available in the Dalvik bytecode (compiled from Java), that runs on the Dalvik VM on an actual phone; an activity’s implementation usually consists of many methods, so by improving method coverage we allow the functionality associated with each activity to be systematically explored and tested. In Section 2 we provide an overview of the Android platform and apps, we define the graphs that help drive our approach, and provide definitions for our coverage metrics. To understand the level of exploration attained by Android app users in practice, we performed a user study and measured coverage during regular interaction. For the study, we enrolled 7 users that exercised 28 popular Android apps. We found that across all apps and participants, on average, just 30.08% of the app screens and 6.46% of the app methods were explored. The results and reasons for these low levels of coverage are presented in Section 3. In Section 4 we present our approach for automated exploration: given an app, we construct systematic exploration traces that can then be replayed, analyzed and used for a variety of purposes, e.g., to drive dynamic analysis or assemble test suites. Our approach consists of two techniques, Targeted Exploration and Depth-First Exploration. Targeted Exploration is a directed approach that first uses static bytecode analysis to extract a Static Activity Transition Graph and then explore the graph systematically while the app runs on a phone. Depth-First Exploration is a completely dynamic approach based on automated exploration of activities and GUI elements in a depth-first manner. In Section 5 we provide an overview of A 3E’s implementation: hardware platform, tools and measurement procedures. In Section 6 we provide an evaluation of our approach on 25 apps (3 apps could not be explored because they were written mainly in native code rather than bytecode). We show that our approach is effective: on average it attains 64.11% and 59.39% activity coverage via Targeted and Depth-first Exploration, respectively (a 2x increase compared to what the 7 users have attained); it also attains 29.53% and 36.46% method coverage via Targeted and Depth-first Exploration, respectively (a 4.5x increase compared to the 7 users). Our approach is also efficient: average figures are 74 seconds for Static Activity Transition Graph construction, 87 minutes for Targeted Exploration and 104 minutes for Depth-first Exploration. In summary, this work makes the following contributions: • A qualitative and quantitative study of coverage attained in practice by 7 users for 28 popular Android apps. • Two approaches, Targeted Exploration and Depth-first Exploration, for exploring substantial apps running on Android smartphones. • An evaluation of the effectiveness of Targeted and Depthfirst Exploration on 25 popular Android apps. |