了解测试自动化文化掌握应用程序开发人员的测试自动化文化外文翻译资料
2022-08-27 10:00:18
英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
附录A 译文
了解测试自动化文化掌握应用程序开发人员的测试自动化文化
摘要
智能手机应用程序(APP)最近获得了流行。数以百万计的智能手机应用程序(应用程序)在不同的应用程序商店中提供给用户大量的选择,然而,它也引起了人们的关注,即这些应用程序在发布给公众使用之前是否得到了充分的测试。在这项研究中,我们想了解应用开发者中普遍存在的测试自动化文化。具体来说,我们想研究应用程序的测试现状,应用程序开发人员常用的工具,以及他们所面临的问题。为了深入了解测试自动化文化,我们进行了两项不同的研究。在第一项研究中,我们分析了从 F-Droid收集的600多个安卓应用,这是一个包含开源安卓应用信息的最大资料库。我们检查测试用例的存在,并计算代码覆盖率以衡量这些应用程序的测试是否充分。我们还调查了在 GitHub 上托管其应用程序的开发者,以了解他们所遵循的测试实践。我们向开发者询问他们使用的工具以及他们在测试安卓应用时面临的'痛点”。在第二项研究中,根据安卓开发者的回答,我们改进了我们的调查问题,并将其重新发送给微软内部的 Windows应用开发者。我们的结论是,许多安卓应用的测试效果很差--只有约14%的应用包含测试用例,只有约9%的有可执行测试用例的应用的覆盖率超过40%。此外,我们还发现,安卓应用开发者使用JUnit、Monkeyrunner、Robotium和 Robolectric等自动化测试工具,然而,他们往往喜欢手动测试他们的应用,而Windows应用开发者则喜欢使用Visual studio和微软测试管理器等内部工具。Android和Windows应用开发者都面临许多挑战,如时间限制、兼容性问题、缺乏接触、繁琐的工具等。我们给出建议,以改善不断增长的应用程序社区的测试自动化文化。
关键词测试自动化文化,应用程厅开发人员,安卓,微软
一 简介
智能手机已经变得无孔不入,安卓和 iOS等平台最近获得了巨大的普及。根据Gartner的研究,2013年全球终端用户的智能手机销量比前一年增长了42.3%,而安卓系统在2013年的智能手机销量中占据了78.4%的市场份额[1]。此外,通过在线应用商店(如Google Play和 Apple)轻松获得应用构建框架和传播。
应用商店已经吸引了大量的开发者和, 组织开发和销售他们的应用程序。然而,低门槛的开发并不能确保应用程序没有错误。这些容易出错的应用程序会极大地影响用户体验,并可能对开发者或组织的声誉造成损害。因此,在向市场发布这些应用程序之前,对其进行充分的测试是非常重要的。与不可靠的应用程序相比,一个少有或没有错误的可靠应用程序很可能有更大的机会被这些智能手机的庞大用户群所接受。尽管移动应用程序使用Java等通用技术,但它们与基于网络和桌面的应用程序有很大的不同。一个应用程序从用户和环境中接收各种输入,这使得它很难写出有效的测试案例。因此,许多最近的研究提出了新的测试工具,专门为移动应用设计[2],[3],[4]。尽管软件测试和可靠性研究界对建立能够自动化和改善移动应用测试的工具越来越感兴趣,但一直没有研究调查开发者在实践中如何测试这些应用。这项研究需要了解这些开发者所面临的'痛点',这可以用来激励未来的研究以解决对移动应用开发者的关注。为了满足这一需求,我们进行了一项实证研究,分为两部分。在第一部分中,我们分析了600多个开源的 Android应用程序,以考察Android开发社区的测试现状。我们的数据集包括从小型应用到大型和流行的应用,如K-9邮件、FrostWire -下载器/播放器、OsmAnd地图和导航以及OI文件管理器,这些应用的安装量超过了100万。我们使用启发式方法来自动识别这些应用程序中是否存在测试文件。对于有测试文件的应用程序,我们尝试建立它们并运行测试案例。我们还测量这些测试用例所覆盖的行数和块数,以调查测试的充分性。此外,我们想了解安卓开发者使用的常用测试工具,以及他们在测试其应用程序时面临的挑战。为此,我们调查了超过3900名在GitHub 上托管了他们的应用程序的安卓开发者,并整理了他们的回复我们总共收到了83份回复。
对于第二部分,我们复制了上述的调查研究应用商店已经吸引了大量的开发者和与来自微软的应用程序开发人员。我们在第一次研究的基础上改进了我们的调查,向微软的开发者询问他们所做的测试类型、他们使用的工具以及他们在测试过程中面临的挑战。我们调查了600多名开发者,收到了127份回复。
本研究的主要贡献如下。
我们是第一个进行研究以了解 Android和微软应用开发社区的测试自动化文化的人。
我们通过检查测试用例的存在和计算覆盖率来分析Android应用程序被充分测试的程度。
我们调查了许多安卓和微软应用程序的开发者,并收集他们的回答,以了解他们使用的测试工具和这些开发者在测试他们的应用程序时所面临的挑战。
本文其余部分的结构如下。在第二节中,我们解释了我们的研究设计,包括研究问题、数据收集方法和我们收集的数据的基本统计。我们在第三节中介绍了安卓测试的现状的结果。我们在第四节中讨论了对Android 开发者的调查结果,在第五节中讨论了对微软开发者的调查结果。
安卓开发人员在澜试他们的应用程序时面临的挑战是什么?
与第二个问题类似,这里我们分析了微软开发人员所使用的工具以及他们所面临的挑战。我们的第三个研究问题是。
RQ3:微软的开发人员是否使用自动化测试工具来测试他们的应用程序﹖微软开发人员常用的工具是什么,他们在测试其应用程序时面临的挑战是什么?
我们的研究分为三个部分。在第一部分,我们分析了600多个应用程序,以了解Android应用程序的测试现状。在分析了这些应用之后,我们想找出开发者在测试他们的应用时使用的工具以及他们在测试过程中面临的挑战。为此,在第二部分,我们从600多个应用程序中收集了安卓开发人员的电子邮件地址,并使用结构化调查向他们提问。此外,为了了解微软的Windows应用开发者是否面临与他们的安卓同行类似的问题,在我们研究的第三部分,我们调查了微软内部600多名Windows应用开发者。我们在第三节、第四节和第五节介绍了上述结果。B.数据收集和第七部分。相关的工作将在第二节讨论。
VIII.我们在第九节中总结并提及未来的工作。
二 研究设计
在本节中,我们首先介绍了我们在本研究中调查的研究问题。然后,我们介绍了我们如何收集我们的数据集。接下来,我们介绍了我们的数据集中 600多个应用程序的一些基本统计数据。
A.研究问题
我们调查了一组研究问题,以了解Android 开发者普遍遵循的测试实践。首先,我们想通过分析开发者是否为他们的应用程序编写测试用例来了解Android应用程序的测试现状。这导致了我们的第一个研究问题。
RQ1:安卓应用是否经过良好的测试?
软件测试是软件开发过程中的一个重要部分,因为经过良好测试的应用程序通常是高质量的,并且很少出现错误。然而,测试并不是一个简单的过程,因为它要求开发人员对他们的应用程序和用户如何使用它们有良好的理解。开发人员还需要了解可用于移动应用程序的常见测试工具和框架。在分析了几个应用程序后,我们想知道Android 开发人员是否使用任何自动测试工具或手动测试他们的应用程序。如果开发者使用任何工具,我们想知道开发者在测试他们的应用程序时使用的常用工具是什么,以及他们在测试时面临的挑战。因此,我们的第二个研究问题是。
RQ2: Android开发者是否使用自动化测试工具来测试他们的应用程序﹖通常使用的工具有哪些?
安卓开发人员在测试他们的应用程序时面临的挑战是什么?
与第二个问题类似,这里我们分析了微软开发人员所使用的工具以及他们所面临的挑战。我们的第三个研究问题是。
RQ3:微软的开发人员是否使用自动化测试工具来测试他们的应用程序?微软开发人员常用的工具是什么,他们在测试其应用程序时面临的挑战是什么?
我们的研究分为三个部分。在第一部分,我们分析了600多个应用程序,以了解Android应用程序的测试现状。在分析了这些应用之后,我们想找出开发者在测试他们的应用时使用的工具以及他们在测试过程中面临的挑战。为此,在第二部分,我们从600多个应用程序中收集了安卓开发人员的电子邮件地址,并使用结构化调查向他们提问。此外,为了了解徼软的 Windows应用开发者是否面临与他们的安卓同行类似的问题,在我们研究的第三部分,我们调查了微软内部600多名 Windows应用开发者。我们在第三节、第四节和第五节介绍了上述结果。·
B.数据收集,
我们收集存储在F-Droid 上的所有应用程序的URLS。7v储存库,并选择托管在 GitHub 上的应用程序。在我们的数据集中,总共有627个应用程序。v
测试案例和覆盖率。对于每个应用程序,我们通过检查是否存在包含'测试“一词的文件来检查测试用例的存在。我们观察到,许多测试文件都有'Test '这个词,要么在名字的开头,如TestUtil.java,要么在名字的结尾,如 AccentTest.java。对于包含测试文件的项目,我们手动调查它们,以建立它们并运行测试案例。有些项目由于对外部库的依赖而无法编译。我们试图通过向下加载库来解决这些依赖性问题。然而,许多项目仍然无法编译。对于成功编译的项目,我们运行项目库中的测试案例,并使用Emma 代码覆盖率工具计算代码覆盖率调查。
第一项研究--对于627个应用程序中的每一个,我们收集所有开发这些应用程序的开发者的电子邮件地址。我们总共向3,905个不同的电子邮件地址发送了电子邮件,并向开发者询问关于他们使用的测试工具以及他们在测试应用程序时面临的挑战的问题。这些开发者中的许多人同时从事开源和商业项目。我们总共收到了83份回复(回复率为2.13%)。分析的单位是个人开发者。
第二次研究--基于第一次研究的回应,我们改进了调查问题,并重新向微软的 Windows应用开发者发送调查。我们向678名开发者发送了电子邮件,总共收到了127份回复(回复率为18.73%)。分析的单位是个人开发者。
在第一项研究中,我们使用了一个结构化的调查,其中包括几个开放式的问题。以下是我们在调查中提出的问题。
1)你如何测试你的应用程序代码?自由形式的文本。
2)你是否使用任何测试自动化工具(如monkeyrun- ner,robotium,robolectric等)﹖如果是,你使用什么工具,为什么使用它们(例如,用于生成测试用例,用于管理测试套件等)? 自由形式的文本
3)在手动或使用自动工具进行测试时,你面临的挑战是什么(例如,缺乏文件,有限的支持,不明确的好处,等等)? ——自由形式的文本
对于第二项研究,我们也使用结构化调查。然而,我们增加了额外的问题,并提供多个选择,以更好地了解应用程序开发人员的测试行为。我们所问的问题包括。
1)你如何测试你的应用程序代码?
复选框选项。手动、使用自动测试工具、不测试、其他,
2)如果你测试你的应用程序,你对你的应用程序做什么类型的测试?v
复选框选项。单元测试、集成测试、系统测试、功能测试、回归测试、满意度测试、负载测试、性能测试、beta测试、其他。3)如果你为你的应用程序使用自动化测试工具,测试工具的名称是什么?。
自由形式的文本
4)如果你使用自动化测试工具,你为什么使用测试工具?v复选框选项。生成测试用例,执行测试用例,管理测试套件,创建和评估测试执行结果,分析代码覆盖率,发现潜在错误,报告错误,执行负载测试,其他﹐
5)在测试过程中,你是否面临以下挑战,无论是手动测试还是使用自动测试工具,如果是,它们有多严重?
面临的挑战。时间限制,兼容性问题,缺乏对工具的接触,强调开发而不是测试,缺乏来自雇主/组织的支持,工具的好处不清楚,文档不完善,缺乏经验,学习曲线很陡峭。
严肃性等级。非常严重、严重、不重要、不面对、没有意见
6)鉴于应用程序开发的测试工具的可用性,在你看来,你寻找/需要/希望看到的最重要的两件事是什么?
自由形式的文本·
c.基本统计
我们现在提出一些统计数字,描述我们研究中的测试案例数量、代码行和开发人员数量方面的数据。
a)测试案例。表一显示了有和没有测试案例的应用程序的数量。我们发现,538个(85.81%)应用程序没有任何测试案例,而89个( 14.19%)应用程序至少有一个测试案例。这表明,大量的Android应用程序缺乏测试用例。v
表一:测试案例存在的应用程序的分布情况,类别#应用程序%的应用程序radic;
没有测试案例53885.81%u有测试案例8914.19%u
b)代码行(LoC)。我们计算数据集中所有应用程序的代码行。图1显示了代码行的分布。我们可以看到,146个应用程序的代码行数在1到1,000行之间,而234个应用程序的代码行数在1,000行到5,000行之间。此外,128个应用程序的大小在10,000 Loc到50,000 LoC之间,35个应用程序的大小超过50,000 LOc。在我们的数据集中﹐最大的项目是FrostWire -Downloader/Player,它是一个原生的BitTorrent和云文件下载器,有1,070,130 LoC。
c)开发人员的数量。我们想分析参与开发一个应用程序的开发人员的数量。我们使用来自git日志的信息并收集独特的电子邮件地址来计算开发者的数量。图2显示了在我们的数据集中参与不同应用程序的开发者数量的分布。我
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[405925],资料为PDF文档或Word文档,PDF文档可免费转换为Word