首页 > 最新文献

Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis最新文献

英文 中文
LAND: a user-friendly and customizable test generation tool for Android apps LAND: Android应用程序的用户友好和可定制的测试生成工具
Jiwei Yan, Linjie Pan, Yaqi Li, Jun Yan, Jian Zhang
Model-based GUI exploration techniques are widely used to generate test cases for event-driven programs (such as Android apps). These techniques traverse the elements of screens during the user interaction and simultaneously construct the GUI model. Although there are a number of automatic model-based exploration tools, most of them pay more attention to the exploration procedure than the model reusing. This paper presents LAND, an effective and user-friendly test generation tool based on GUI exploration of Android apps, which constructs an elaborate window transition model ``LATTE'' that considers more Android specific characteristics and provides a customizable test generation interface by reusing the model. Experiments on 20 real-world Android apps are conducted to construct their models as well as test cases. The experimental results indicate that LAND can achieve higher code coverage and trigger exceptions in shorter sequence. It is also demonstrated that LATTE can be well reused under different requirements of test suite generation. A demo video of our tool can be found at the website https://www.youtube.com/watch?v=iqtr12eiJ_0.
基于模型的GUI探索技术被广泛用于为事件驱动的程序(如Android应用程序)生成测试用例。这些技术在用户交互期间遍历屏幕元素,同时构建GUI模型。尽管有许多基于模型的自动勘探工具,但它们大多更注重勘探过程,而不是模型的重用。本文介绍了基于Android应用程序GUI探索的有效且用户友好的测试生成工具LAND,它构建了一个考虑更多Android特定特性的精细窗口转换模型“LATTE”,并通过重用该模型提供了可定制的测试生成界面。在20个真实的Android应用程序上进行实验,构建它们的模型和测试用例。实验结果表明,LAND可以实现更高的代码覆盖率,并在更短的序列内触发异常。结果表明,在不同的测试套件生成需求下,LATTE可以很好地重用。我们的工具的演示视频可以在网站https://www.youtube.com/watch?v=iqtr12eiJ_0上找到。
{"title":"LAND: a user-friendly and customizable test generation tool for Android apps","authors":"Jiwei Yan, Linjie Pan, Yaqi Li, Jun Yan, Jian Zhang","doi":"10.1145/3213846.3229500","DOIUrl":"https://doi.org/10.1145/3213846.3229500","url":null,"abstract":"Model-based GUI exploration techniques are widely used to generate test cases for event-driven programs (such as Android apps). These techniques traverse the elements of screens during the user interaction and simultaneously construct the GUI model. Although there are a number of automatic model-based exploration tools, most of them pay more attention to the exploration procedure than the model reusing. This paper presents LAND, an effective and user-friendly test generation tool based on GUI exploration of Android apps, which constructs an elaborate window transition model ``LATTE'' that considers more Android specific characteristics and provides a customizable test generation interface by reusing the model. Experiments on 20 real-world Android apps are conducted to construct their models as well as test cases. The experimental results indicate that LAND can achieve higher code coverage and trigger exceptions in shorter sequence. It is also demonstrated that LATTE can be well reused under different requirements of test suite generation. A demo video of our tool can be found at the website https://www.youtube.com/watch?v=iqtr12eiJ_0.","PeriodicalId":20542,"journal":{"name":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2018-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73091393","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 7
Remove RATs from your code: automated optimization of resource inefficient database writes for mobile applications 从代码中删除rat:为移动应用程序自动优化资源效率低下的数据库写入
Yingjun Lyu, Ding Li, William G. J. Halfond
Developers strive to build feature-filled apps that are responsive and consume as few resources as possible. Most of these apps make use of local databases to store and access data locally. Prior work has found that local database services have become one of the major drivers of a mobile device's resource consumption. In this paper we propose an approach to reduce the energy consumption and improve runtime performance of database operations in Android apps by optimizing inefficient database writes. Our approach automatically detects database writes that happen within loops and that will trigger inefficient autocommit behaviors. Our approach then uses additional analyses to identify those that are optimizable and rewrites the code so that it is more efficient. We evaluated our approach on a set of marketplace Android apps and found it could reduce the energy and runtime of events containing the inefficient database writes by 25% to 90% and needed, on average, thirty-six seconds to analyze and transform each app.
开发人员努力构建功能丰富的应用程序,这些应用程序响应迅速,消耗的资源尽可能少。这些应用程序大多使用本地数据库来存储和访问本地数据。先前的研究发现,本地数据库服务已经成为移动设备资源消耗的主要驱动因素之一。在本文中,我们提出了一种通过优化低效的数据库写入来降低能耗并提高Android应用中数据库操作运行时性能的方法。我们的方法自动检测发生在循环中的数据库写操作,这会触发低效的自动提交行为。然后,我们的方法使用额外的分析来识别那些可优化的,并重写代码,使其更有效。我们在一组Android应用上评估了我们的方法,发现它可以将包含低效数据库写入的事件的能量和运行时间减少25%到90%,并且平均需要36秒来分析和转换每个应用。
{"title":"Remove RATs from your code: automated optimization of resource inefficient database writes for mobile applications","authors":"Yingjun Lyu, Ding Li, William G. J. Halfond","doi":"10.1145/3213846.3213865","DOIUrl":"https://doi.org/10.1145/3213846.3213865","url":null,"abstract":"Developers strive to build feature-filled apps that are responsive and consume as few resources as possible. Most of these apps make use of local databases to store and access data locally. Prior work has found that local database services have become one of the major drivers of a mobile device's resource consumption. In this paper we propose an approach to reduce the energy consumption and improve runtime performance of database operations in Android apps by optimizing inefficient database writes. Our approach automatically detects database writes that happen within loops and that will trigger inefficient autocommit behaviors. Our approach then uses additional analyses to identify those that are optimizable and rewrites the code so that it is more efficient. We evaluated our approach on a set of marketplace Android apps and found it could reduce the energy and runtime of events containing the inefficient database writes by 25% to 90% and needed, on average, thirty-six seconds to analyze and transform each app.","PeriodicalId":20542,"journal":{"name":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2018-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84193947","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 19
Automatically translating bug reports into test cases for mobile apps 自动将bug报告转换为移动应用程序的测试用例
M. Fazzini, Martin Prammer, Marcelo d’Amorim, A. Orso
When users experience a software failure, they have the option of submitting a bug report and provide information about the failure and how it happened. If the bug report contains enough information, developers can then try to recreate the issue and investigate it, so as to eliminate its causes. Unfortunately, the number of bug reports filed by users is typically large, and the tasks of analyzing bug reports and reproducing the issues described therein can be extremely time consuming. To help make this process more efficient, in this paper we propose Yakusu, a technique that uses a combination of program analysis and natural language processing techniques to generate executable test cases from bug reports. We implemented Yakusu for Android apps and performed an empirical evaluation on a set of over 60 real bug reports for different real-world apps. Overall, our technique was successful in 59.7% of the cases; that is, for a majority of the bug reports, developers would not have to study the report to reproduce the issue described and could simply use the test cases automatically generated by Yakusu. Furthermore, in many of the remaining cases, Yakusu was unsuccessful due to limitations that can be addressed in future work.
当用户遇到软件故障时,他们可以选择提交错误报告,并提供有关故障及其发生方式的信息。如果错误报告包含足够的信息,开发人员就可以尝试重新创建问题并进行调查,从而消除其原因。不幸的是,用户提交的错误报告的数量通常很大,分析错误报告和再现其中描述的问题的任务可能非常耗时。为了使这个过程更有效,在本文中我们提出了Yakusu,这是一种结合了程序分析和自然语言处理技术的技术,可以从bug报告中生成可执行的测试用例。我们为Android应用实现了Yakusu,并对60多个真实应用的bug报告进行了实证评估。总的来说,我们的技术在59.7%的病例中成功;也就是说,对于大多数错误报告,开发人员不需要研究报告来重现所描述的问题,并且可以简单地使用Yakusu自动生成的测试用例。此外,在许多剩余的案例中,由于可以在未来的工作中解决的局限性,Yakusu没有成功。
{"title":"Automatically translating bug reports into test cases for mobile apps","authors":"M. Fazzini, Martin Prammer, Marcelo d’Amorim, A. Orso","doi":"10.1145/3213846.3213869","DOIUrl":"https://doi.org/10.1145/3213846.3213869","url":null,"abstract":"When users experience a software failure, they have the option of submitting a bug report and provide information about the failure and how it happened. If the bug report contains enough information, developers can then try to recreate the issue and investigate it, so as to eliminate its causes. Unfortunately, the number of bug reports filed by users is typically large, and the tasks of analyzing bug reports and reproducing the issues described therein can be extremely time consuming. To help make this process more efficient, in this paper we propose Yakusu, a technique that uses a combination of program analysis and natural language processing techniques to generate executable test cases from bug reports. We implemented Yakusu for Android apps and performed an empirical evaluation on a set of over 60 real bug reports for different real-world apps. Overall, our technique was successful in 59.7% of the cases; that is, for a majority of the bug reports, developers would not have to study the report to reproduce the issue described and could simply use the test cases automatically generated by Yakusu. Furthermore, in many of the remaining cases, Yakusu was unsuccessful due to limitations that can be addressed in future work.","PeriodicalId":20542,"journal":{"name":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2018-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"76459010","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 52
Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis 第27届ACM SIGSOFT软件测试与分析国际研讨会论文集
{"title":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","authors":"","doi":"10.1145/3213846","DOIUrl":"https://doi.org/10.1145/3213846","url":null,"abstract":"","PeriodicalId":20542,"journal":{"name":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2018-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86784045","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Test migration for efficient large-scale assessment of mobile app coding assignments 测试迁移,有效地大规模评估移动应用程序编码任务
Farnaz Behrang, A. Orso
In recent years, there has been a growing interest in making education widely accessible using Internet technologies. Whether it is Massive Open Online Courses (MOOCs) or simply college courses offered to a large student population using an online platform, both education-focused companies and universities, often in collaboration with one another, have been investing massively in online education. The fact that hundreds, and more often thousands, of students take these online courses raises scalability challenges in assessing student assignments. In this paper, in particular, we present a technique (GUITestMigrator) that addresses the challenge of assessing mobile app coding assignments. Given a set of apps that implement the same specification, but can have completely different user interfaces, instructors normally have to manually run and check each app to make sure it behaves correctly and according to the specification. GUITestMigrator, conversely, allows for developing tests for one of these apps and automatically migrating these tests to the other apps, thus dramatically reducing the burden on the instructor. We implemented GUITestMigrator for Android apps and evaluated it on three sets of apps developed over three different semesters by students of an online graduate-level software engineering course. Our initial results show that our approach is promising and motivates further research in this direction. The paper also discusses possible applications of this approach for test evolution and test migration for real-world apps.
近年来,人们对利用互联网技术广泛普及教育越来越感兴趣。无论是大规模在线开放课程(MOOCs),还是通过在线平台向广大学生提供的简单大学课程,以教育为重点的公司和大学都在大力投资在线教育,而且往往彼此合作。成百上千的学生参加这些在线课程,这一事实给评估学生作业的可扩展性带来了挑战。在本文中,我们特别介绍了一种技术(GUITestMigrator),它解决了评估移动应用程序编码任务的挑战。给定一组实现相同规范的应用程序,但可能具有完全不同的用户界面,教师通常必须手动运行和检查每个应用程序,以确保它正确地按照规范运行。相反,GUITestMigrator允许为其中一个应用程序开发测试,并自动将这些测试迁移到其他应用程序,从而大大减轻了讲师的负担。我们为Android应用程序实现了GUITestMigrator,并在三组应用程序上对其进行了评估,这些应用程序是由在线研究生级软件工程课程的学生在三个不同的学期中开发的。我们的初步结果表明,我们的方法是有希望的,并激励着这一方向的进一步研究。本文还讨论了这种方法在实际应用程序的测试演变和测试迁移中的可能应用。
{"title":"Test migration for efficient large-scale assessment of mobile app coding assignments","authors":"Farnaz Behrang, A. Orso","doi":"10.1145/3213846.3213854","DOIUrl":"https://doi.org/10.1145/3213846.3213854","url":null,"abstract":"In recent years, there has been a growing interest in making education widely accessible using Internet technologies. Whether it is Massive Open Online Courses (MOOCs) or simply college courses offered to a large student population using an online platform, both education-focused companies and universities, often in collaboration with one another, have been investing massively in online education. The fact that hundreds, and more often thousands, of students take these online courses raises scalability challenges in assessing student assignments. In this paper, in particular, we present a technique (GUITestMigrator) that addresses the challenge of assessing mobile app coding assignments. Given a set of apps that implement the same specification, but can have completely different user interfaces, instructors normally have to manually run and check each app to make sure it behaves correctly and according to the specification. GUITestMigrator, conversely, allows for developing tests for one of these apps and automatically migrating these tests to the other apps, thus dramatically reducing the burden on the instructor. We implemented GUITestMigrator for Android apps and evaluated it on three sets of apps developed over three different semesters by students of an online graduate-level software engineering course. Our initial results show that our approach is promising and motivates further research in this direction. The paper also discusses possible applications of this approach for test evolution and test migration for real-world apps.","PeriodicalId":20542,"journal":{"name":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2018-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79623983","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 24
Static analysis of Java dynamic proxies Java动态代理的静态分析
G. Fourtounis, George Kastrinis, Y. Smaragdakis
The dynamic proxy API is one of Java’s most widely-used dynamic features, permitting principled run-time code generation and link- ing. Dynamic proxies can implement any set of interfaces and for- ward method calls to a special object that handles them reflectively. The flexibility of dynamic proxies, however, comes at the cost of having a dynamically generated layer of bytecode that cannot be penetrated by current static analyses. In this paper, we observe that the dynamic proxy API is stylized enough to permit static analysis. We show how the semantics of dynamic proxies can be modeled in a straightforward manner as logical rules in the Doop static analysis framework. This concise set of rules enables Doop’s standard analyses to process code behind dynamic proxies. We evaluate our approach by analyzing XCorpus, a corpus of real-world Java programs: we fully handle 95% of its reported proxy creation sites. Our handling results in the analysis of significant portions of previously unreachable or incompletely- modeled code.
动态代理API是Java最广泛使用的动态特性之一,允许有原则的运行时代码生成和链接。动态代理可以实现任何一组接口和对反射处理它们的特殊对象的定向方法调用。然而,动态代理的灵活性是以拥有当前静态分析无法穿透的动态生成的字节码层为代价的。在本文中,我们观察到动态代理API已经足够程式化,可以进行静态分析。我们展示了动态代理的语义如何在静态分析框架中以一种直接的方式作为逻辑规则建模。这组简明的规则使的标准分析能够处理动态代理背后的代码。我们通过分析XCorpus(一个真实Java程序的语料库)来评估我们的方法:我们完全处理了95%报告的代理创建站点。我们的处理结果是分析以前无法访问或未完全建模的代码的重要部分。
{"title":"Static analysis of Java dynamic proxies","authors":"G. Fourtounis, George Kastrinis, Y. Smaragdakis","doi":"10.1145/3213846.3213864","DOIUrl":"https://doi.org/10.1145/3213846.3213864","url":null,"abstract":"The dynamic proxy API is one of Java’s most widely-used dynamic features, permitting principled run-time code generation and link- ing. Dynamic proxies can implement any set of interfaces and for- ward method calls to a special object that handles them reflectively. The flexibility of dynamic proxies, however, comes at the cost of having a dynamically generated layer of bytecode that cannot be penetrated by current static analyses. In this paper, we observe that the dynamic proxy API is stylized enough to permit static analysis. We show how the semantics of dynamic proxies can be modeled in a straightforward manner as logical rules in the Doop static analysis framework. This concise set of rules enables Doop’s standard analyses to process code behind dynamic proxies. We evaluate our approach by analyzing XCorpus, a corpus of real-world Java programs: we fully handle 95% of its reported proxy creation sites. Our handling results in the analysis of significant portions of previously unreachable or incompletely- modeled code.","PeriodicalId":20542,"journal":{"name":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2018-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90576709","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 20
Managing concurrent testing of data race with ComRaDe 管理与同志并发的数据竞赛测试
Jian Gao, Xin Yang, Yu Jiang, Han Liu, Weiliang Ying, Wanting Sun, M. Gu
As a result of the increasing number of concurrent programs, the researchers put forward a number of tools with different implementation strategies to detect data race. However, confirming data races from the collection of true and false positives reported by race detectors is extremely the time-consuming process during the evaluation period. In this paper, we presented ComRaDe, a management platform for concurrent testing of data race with three main functions: manage and filter data races, run evaluation programs to select race detectors, generate detection report automatically. We integrated and compared three different race detectors on ComRaDe in terms of race detection capability. The results demonstrated the potential of ComRaDe on effectively identifying the advantages and limitations of different race detectors, and in further helping researchers to select and improve the capability of detectors for its convenience.
随着并发程序数量的不断增加,研究人员提出了许多具有不同实现策略的工具来检测数据竞争。然而,在评估期间,从竞赛检测器报告的真阳性和假阳性集合中确认数据竞赛是非常耗时的过程。本文提出了一个数据竞争并发测试管理平台同志,该平台具有三个主要功能:数据竞争管理和过滤、运行评估程序选择竞争检测器、自动生成检测报告。我们在同志上集成并比较了三种不同的种族检测器的种族检测能力。结果表明,同志在有效识别不同种族检测器的优点和局限性方面具有很大的潜力,可以进一步帮助研究人员方便地选择和提高检测器的性能。
{"title":"Managing concurrent testing of data race with ComRaDe","authors":"Jian Gao, Xin Yang, Yu Jiang, Han Liu, Weiliang Ying, Wanting Sun, M. Gu","doi":"10.1145/3213846.3229502","DOIUrl":"https://doi.org/10.1145/3213846.3229502","url":null,"abstract":"As a result of the increasing number of concurrent programs, the researchers put forward a number of tools with different implementation strategies to detect data race. However, confirming data races from the collection of true and false positives reported by race detectors is extremely the time-consuming process during the evaluation period. In this paper, we presented ComRaDe, a management platform for concurrent testing of data race with three main functions: manage and filter data races, run evaluation programs to select race detectors, generate detection report automatically. We integrated and compared three different race detectors on ComRaDe in terms of race detection capability. The results demonstrated the potential of ComRaDe on effectively identifying the advantages and limitations of different race detectors, and in further helping researchers to select and improve the capability of detectors for its convenience.","PeriodicalId":20542,"journal":{"name":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2018-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89409263","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Making data-driven porting decisions with Tuscan 使用Tuscan做出数据驱动的移植决策
Kareem Khazem, Earl T. Barr, Petr Hosek
Software typically outlives the platform that it was originally written for. To smooth the transition to new tools and platforms, programs should depend on the underlying platform as little as possible. In practice, however, software build processes are highly sensitive to their build platform, notably the implementation of the compiler and standard library. This makes it difficult to port existing, mature software to emerging platforms---web based runtimes like WebAssembly, resource-constrained environments for Internet-of-Things devices, or innovative new operating systems like Fuchsia. We present Tuscan, a framework for conducting automatic, deterministic, reproducible tests on build systems. Tuscan is the first framework to solve the problem of reproducibly testing builds cross-platform at massive scale. We also wrote a build wrapper, Red, which hijacks builds to tolerate common failures that arise from platform dependence, allowing the test harness to discover errors later in the build. Authors of innovative platforms can use Tuscan and Red to test the extent of unportability in the software ecosystem, and to quantify the effort necessary to port legacy software. We evaluated Tuscan by building an operating system distribution, consisting of 2,699 Red-wrapped programs, on four platforms, yielding a `catalog' of the most common portability errors. This catalog informs data-driven porting decisions and motivates changes to programs, build systems, and language standards; systematically quantifies problems that platform writers have hitherto discovered only on an ad-hoc basis; and forms the basis for a common substrate of portability fixes that developers can apply to their software.
软件通常比它最初为之编写的平台寿命更长。为了平稳过渡到新的工具和平台,程序应该尽可能少地依赖底层平台。然而,在实践中,软件构建过程对其构建平台非常敏感,特别是编译器和标准库的实现。这使得将现有的成熟软件移植到新兴平台(如WebAssembly等基于web的运行时,物联网设备的资源约束环境,或Fuchsia等创新的新操作系统)变得困难。我们提出了Tuscan,这是一个在构建系统上执行自动、确定、可重复测试的框架。Tuscan是第一个解决大规模跨平台可重复测试构建问题的框架。我们还编写了一个构建包装器Red,它劫持构建以容忍由平台依赖性引起的常见故障,从而允许测试工具在构建后期发现错误。创新平台的作者可以使用Tuscan和Red来测试软件生态系统中不可移植性的程度,并量化移植遗留软件所需的工作量。我们通过在四个平台上构建一个由2,699个red包装程序组成的操作系统发行版来评估Tuscan,得出了一个最常见的可移植性错误的“目录”。该目录为数据驱动的移植决策提供信息,并激励对程序、构建系统和语言标准的更改;系统地量化平台作者迄今为止仅在临时基础上发现的问题;并且形成了开发人员可以应用于其软件的可移植性修复的公共基础。
{"title":"Making data-driven porting decisions with Tuscan","authors":"Kareem Khazem, Earl T. Barr, Petr Hosek","doi":"10.1145/3213846.3213855","DOIUrl":"https://doi.org/10.1145/3213846.3213855","url":null,"abstract":"Software typically outlives the platform that it was originally written for. To smooth the transition to new tools and platforms, programs should depend on the underlying platform as little as possible. In practice, however, software build processes are highly sensitive to their build platform, notably the implementation of the compiler and standard library. This makes it difficult to port existing, mature software to emerging platforms---web based runtimes like WebAssembly, resource-constrained environments for Internet-of-Things devices, or innovative new operating systems like Fuchsia. We present Tuscan, a framework for conducting automatic, deterministic, reproducible tests on build systems. Tuscan is the first framework to solve the problem of reproducibly testing builds cross-platform at massive scale. We also wrote a build wrapper, Red, which hijacks builds to tolerate common failures that arise from platform dependence, allowing the test harness to discover errors later in the build. Authors of innovative platforms can use Tuscan and Red to test the extent of unportability in the software ecosystem, and to quantify the effort necessary to port legacy software. We evaluated Tuscan by building an operating system distribution, consisting of 2,699 Red-wrapped programs, on four platforms, yielding a `catalog' of the most common portability errors. This catalog informs data-driven porting decisions and motivates changes to programs, build systems, and language standards; systematically quantifies problems that platform writers have hitherto discovered only on an ad-hoc basis; and forms the basis for a common substrate of portability fixes that developers can apply to their software.","PeriodicalId":20542,"journal":{"name":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2018-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79486845","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
OASIs: oracle assessment and improvement tool OASIs: oracle评估和改进工具
Gunel Jahangirova, D. Clark, M. Harman, P. Tonella
The oracle problem remains one of the key challenges in software testing, for which little automated support has been developed so far. We introduce OASIs, a search-based tool for Java that assists testers in oracle assessment and improvement. It does so by combining test case generation to reveal false positives and mutation testing to reveal false negatives. In this work, we describe how OASIs works, provide details of its implementation, and explain how it can be used in an iterative oracle improvement process with a human in the loop. Finally, we present a summary of previous empirical evaluation showing that the fault detection rate of the oracles after improvement using OASIs increases, on average, by 48.6%.
oracle问题仍然是软件测试中的关键挑战之一,迄今为止很少有自动化支持开发出来。我们介绍OASIs,一个基于搜索的Java工具,它可以帮助测试人员进行oracle评估和改进。它通过组合测试用例生成来显示假阳性和突变测试来显示假阴性来做到这一点。在本文中,我们描述了OASIs是如何工作的,提供了其实现的细节,并解释了如何在迭代oracle改进过程中使用它。最后,我们对以往的经验评估进行了总结,结果表明使用OASIs改进后的oracle的故障检出率平均提高了48.6%。
{"title":"OASIs: oracle assessment and improvement tool","authors":"Gunel Jahangirova, D. Clark, M. Harman, P. Tonella","doi":"10.1145/3213846.3229503","DOIUrl":"https://doi.org/10.1145/3213846.3229503","url":null,"abstract":"The oracle problem remains one of the key challenges in software testing, for which little automated support has been developed so far. We introduce OASIs, a search-based tool for Java that assists testers in oracle assessment and improvement. It does so by combining test case generation to reveal false positives and mutation testing to reveal false negatives. In this work, we describe how OASIs works, provide details of its implementation, and explain how it can be used in an iterative oracle improvement process with a human in the loop. Finally, we present a summary of previous empirical evaluation showing that the fault detection rate of the oracles after improvement using OASIs increases, on average, by 48.6%.","PeriodicalId":20542,"journal":{"name":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2018-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79053965","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
Exploiting community structure for floating-point precision tuning 利用社区结构进行浮点精度调优
Hui Guo, Cindy Rubio-González
Floating-point types are notorious for their intricate representation. The effective use of mixed precision, i.e., using various precisions in different computations, is critical to achieve a good balance between accuracy and performance. Unfortunately, reasoning about mixed precision is difficult even for numerical experts. Techniques have been proposed to systematically search over floating-point variables and/or program instructions to find a faster, mixed-precision version of a given program. These techniques, however, are characterized by their black box nature, and face scalability limitations due to the large search space. In this paper, we exploit the community structure of floating-point variables to devise a scalable hierarchical search for precision tuning. Specifically, we perform dependence analysis and edge profiling to create a weighted dependence graph that presents a network of floating-point variables. We then formulate hierarchy construction on the network as a community detection problem, and present a hierarchical search algorithm that iteratively lowers precision with regard to communities. We implement our algorithm in the tool HiFPTuner, and show that it exhibits higher search efficiency over the state of the art for 75.9% of the experiments taking 59.6% less search time on average. Moreover, HiFPTuner finds more profitable configurations for 51.7% of the experiments, with one known to be as good as the global optimum found through exhaustive search.
浮点类型因其复杂的表示而臭名昭著。有效地使用混合精度,即在不同的计算中使用不同的精度,对于实现精度和性能之间的良好平衡至关重要。不幸的是,即使对数值专家来说,混合精度的推理也是困难的。已经提出了系统地搜索浮点变量和/或程序指令的技术,以找到给定程序的更快的混合精度版本。然而,这些技术的特点是它们的黑箱性质,并且由于搜索空间大而面临可伸缩性限制。在本文中,我们利用浮点变量的群体结构来设计一种可伸缩的层次搜索精度调优。具体来说,我们执行依赖性分析和边缘剖析,以创建一个加权依赖性图,该图表示浮点变量网络。然后,我们将网络上的层次结构构建作为社区检测问题,并提出了一种迭代降低社区精度的层次搜索算法。我们在HiFPTuner工具中实现了我们的算法,并表明它在75.9%的实验中表现出更高的搜索效率,平均减少了59.6%的搜索时间。此外,HiFPTuner在51.7%的实验中找到了更有利可图的配置,其中一个已知的配置与通过穷举搜索找到的全局最优配置一样好。
{"title":"Exploiting community structure for floating-point precision tuning","authors":"Hui Guo, Cindy Rubio-González","doi":"10.1145/3213846.3213862","DOIUrl":"https://doi.org/10.1145/3213846.3213862","url":null,"abstract":"Floating-point types are notorious for their intricate representation. The effective use of mixed precision, i.e., using various precisions in different computations, is critical to achieve a good balance between accuracy and performance. Unfortunately, reasoning about mixed precision is difficult even for numerical experts. Techniques have been proposed to systematically search over floating-point variables and/or program instructions to find a faster, mixed-precision version of a given program. These techniques, however, are characterized by their black box nature, and face scalability limitations due to the large search space. In this paper, we exploit the community structure of floating-point variables to devise a scalable hierarchical search for precision tuning. Specifically, we perform dependence analysis and edge profiling to create a weighted dependence graph that presents a network of floating-point variables. We then formulate hierarchy construction on the network as a community detection problem, and present a hierarchical search algorithm that iteratively lowers precision with regard to communities. We implement our algorithm in the tool HiFPTuner, and show that it exhibits higher search efficiency over the state of the art for 75.9% of the experiments taking 59.6% less search time on average. Moreover, HiFPTuner finds more profitable configurations for 51.7% of the experiments, with one known to be as good as the global optimum found through exhaustive search.","PeriodicalId":20542,"journal":{"name":"Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2018-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86157095","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 39
期刊
Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1