《Android 应用测试指南》——第1章,第1.3节为什么要测试、测什么、如何测、何时测试

1.3 为什么要测试、测什么、如何测、何时测试
大家都清楚早期发现Bug会节约一大笔项目资源、减少软件维护费用。这就是为开发项目写测试用例的最好理由,不久你就会发现效率提高了。

另外,写测试用例的过程中,迫使你对需求了解更透彻,对要解决的问题了解更深入全面。如果你不了解被测对象,是不可能写好测试用例的。同样,写好测试用例可以清晰了解旧程序和第三方代码,让你能力倍增,更加有信心升级(旧程序、第三方代码)代码。

测试覆盖率越高,发现隐藏Bug的概率就越高。通过覆盖率分析,发现测试用例没有覆盖到的地方,就应该新增测试用例。

测试覆盖技术需要Android平台构造一个特殊的监控器来收集监测数据,但是不能发布,因为它会影响性能,从而严重影响应用的表现。

为了弥补这个空白,请访问EMMA。它是一个开源工具,用于测量和报告Java代码测试覆盖率,可以衡量类的覆盖率。它的报告有几个维度:

类覆盖率;
方法覆盖率;
行覆盖率;
基础块覆盖率。
覆盖率报告同样可以设置成不同的格式。从某种程度上说,EMMA是基于Andoid框架的,所以,可以建一个带EMMA模拟器版本的Android系统。

我们将在第10章分析EMMA在Android系统上的用法,带大家完成一次完整的覆盖率测试,采用非传统的测试策略。

图1.1展示了在装了兼容的plugin后,经过EMMA覆盖率分析后,用Eclipse编辑器打开并分析的文件,绿色(运行后可看到,全书同)的代码行表示该行已经覆盖到了。

图1.1 EMMA覆盖率分析结果

不幸的是,这个插件不支持Android测试,因此,你只能用它来做Junit单元测试,而且你只能通过HTML来看Android覆盖率分析报告。

测试应该有自动化,每当你更改或者新增代码时,你就可以运行一部分或者全量测试用例来确保之前的逻辑是对的,以及新代码逻辑也是符合测试预期的。这就是我们说的持续集成,第8章我们将介绍。它依赖于自动化测试和自动化构建过程。

如果你没用到自动化测试,那实际上不可能把持续集成作为开发过程的一部分,而且很难保证代码变更情况下,不破坏现有代码逻辑。

1.3.1 测试的内容是什么呢
一个Android应用,测试点是什么呢?严格地说,代码的每一行都应该经过测试。不过,根据不同的测试标准,你可以采用只需要覆盖到重要的路径分支或者一部分重要内容的方法。通常,有一些不可能被打破而产生Bug的地方就没有必要测试。比如:getter方法和setter方法测起来就没啥意思。这就好比编译器早就有自己的测试工程,而你也不可能在自己的代码中来测试编译器一样。

除了程序功能属于测试要点之外,Android应用还有一些特殊的地方需要考虑。我们将在下面几节进行描述。

1.3.2 Activity生命周期中的事件
Activity对生命周期中的事件是否能够正确响应是一个测试点。

比如,你的Activity在OnPause()事件和OnDestroy()事件中需要保存自身的状态,然后在OnCreate(Bandle savedInstanceState)时恢复状态。那么,你应该重复执行并验证在这些条件下状态是否能够正确保存、是否能恢复正常。

在测Activity时,还需要验证配置项变化事件的响应。因为配置变化后,当前的Activity需要重新生成。此时,你要验证新生成的Activity对事件的响应是否正常以及先前的状态是否恢复正常。定时循环事件也会触发配置的变化。因此,你还要看看应用是否能够正确处理这些事件。

1.3.3 数据库和文件系统的操作
数据库操作和文件的正确读写也是一个测试点。对这些操作的测试应该在底层系统测试中完成,在ContentProviders中进行高层次的测试,需要跟应用本身隔离开。

要对这些部件进行独立的测试,Android提供了Mock对象的工具,在andriod.test.mock包中。

1.3.4 设备的物理特征
在你发布应用程序之前,要确保它能在不同的设备上正常运行。至少你能把握大概的情况并想好对策。

在设备的物理特性中,有以下几个测试点:

网络容量;
屏幕分辨率;
屏幕厚度;
屏幕尺寸;
传感器;
键盘和其他输入设备;
GPS;
扩容。
由于有上述几个方面需要测试,虚拟器尤为重要。因为虚拟器可以让你通过简单配置达到上述条件的硬件特性。但是,如之前提到的,到最后的测试阶段,还是要用真机来操作,模拟真实用户的使用过程来测试。

时间: 2024-10-02 23:26:01

《Android 应用测试指南》——第1章,第1.3节为什么要测试、测什么、如何测、何时测试的相关文章

《Android 应用测试指南》——第2章,第2.1节Junit

第2章 Android软件测试Android 应用测试指南既然我们已经了解了测试的基本概念及其重要性,那么现在是时候付诸于实践了. 在本章,我们将要讲述:在Android平台上测试:单元测试和Junit用法:创建一个Android测试工程:测试执行.我们会创建一个简单的Android主程序和与之对应的测试工程项目.主工程基本上是一个空项目,因为我们将重点看测试部分.以我个人经验,建议没有任何Android测试经验的同学好好学习下本章.如果你有过Android工程的经验,并且用过相关的测试技术,那

《Android 应用测试指南》——第2章,第2.6节测试执行

2.6 测试执行执行测试用例的方法有很多种,我们这里一个个地分析. 另外,我们在前面的章节中提到的注释,可以让测试用例按照组或者种类执行,这种方式要按实际需求来执行. 2.6.1 在Eclipse里执行所有的测试用例如果你采用了Elicpse作为开发环境,从Eclipse中执行测试用例可能是最简便的方式了.这种方式会执行包中所有的用例. 选择测试工程,然后单击 Run As -> Andriod Junit Test. 如果没有找到合适的设备或者模拟器,那么会自动启动一个.然后,测试用例开始执行

《Android 应用测试指南》——第1章,第1.4节测试的种类

1.4 测试的种类在开发过程中,任何时间段都可以参与测试,这取决于采用何种测试方案.但是,我们推荐测试工作在项目开发早期就介入,甚至可以在完整需求出来之后.刚开始开发的时候就开始做准备. 基于被测对象的不同,有好几种不同的测试方法.但是无论采用哪种测试方法,测试用例都包含执行条件和执行结果,执行结果返回True或者False来表示用例是否正确. 1.4.1 单元测试单元测试,指的是程序员在开发阶段写的测试用例.这种测试用例需要将被测对象独立隔离起来,也就是Mock掉外部关联对象.单元测试用例应用

《Nmap渗透测试指南》—第1章1.1节Nmap介绍

第1章 Nmap基础学习 Nmap渗透测试指南 本章知识点 Nmap介绍 Windows下安装Nmap Linux/Unix源码编译安装Nmap Linux通过RPM软件包安装Nmap Mac OS安装Nmap Nmap语法 Nmap全面扫描 Nmap扫描指定段 本章节将介绍在几大主流平台中如何安装Nmap,并介绍多种安装方式,通过对每一步的演示进行解说,让初学者可以很快地掌握安装Nmap技巧,以及如何简单地使用Nmap扫描一个目标地址.一个IP段,从而迈入Nmap渗透测试的大门. 本章选项 1

《Nmap渗透测试指南》—第9章9.节审计HTTP身份验证

第9章 渗透测试 Nmap渗透测试指南 本章知识点 审计HTTP身份验证 审计FTP服务器 审计Wordpress程序 审计Joomla程序 审计邮件服务器 审计SMB口令 审计VNC服务器 审计SMTP服务器 检测Stuxnet蠕虫 SnMP安全审计 本章节将介绍Nmap脚本对主流CMS程序.网络服务.网络病毒的检测,本章更是引入了对工控系统病毒Stuxnet检测技术.切勿将本章内容用于非法用途,请遵守相应的道德标准. 本章脚本 表9.1所示为本章节所需Nmap命令表,为方便读者查阅,笔者特此

《Android 应用测试指南》——导读

目 录前 言 第1章 测试入门第1章,第1.1节简史第1章,第1.2节软件Bug第1章,第1.3节为什么要测试.测什么.如何测.何时测试第1章,第1.4节测试的种类第1章,第1.5节Android测试框架第1章,第1.6节小结 第2章 Android软件测试 第2章,第2.1节Junit第2章,第2.2节创建一个Android主项目第2章,第2.3节创建一个Android测试项目第2章,第2.4节包浏览器第2章,第2.5节创建一个测试用例第2章,第2.6节测试执行第2章,第2.7节调试用例第2章

《Nmap渗透测试指南》—第10章10.1节Zenmap应用

第10章 Zenmap应用Nmap渗透测试指南本章知识点 Zenmap介绍Zenmap基本配置Zenmap扫描模板Ports/Hosts标签Topology标签Host Details标签Scans标签编辑扫描模板新建扫描模板本章节将介绍Zenmap的使用.作为Nmap初学者最好的帮助工具,Zenmap以其强大的操控界面可以完成很多在Shell终端下复杂的命令.Zenmap包含了不同的模板,我们可以对这些模板进行自定义设置,让它更加灵活易用. 10.1 Zenmap介绍Zenmap是经典安全扫描

《Nmap渗透测试指南》—第7章7.1节信息搜集

第7章 信息搜集Nmap渗透测试指南本章知识点 信息搜集IP信息搜集WHOIS查询搜集E-mail信息IP反查DNS信息搜集检索系统信息后台打印机服务漏洞系统漏洞扫描扫描Web漏洞通过Snmp列举Windows服务/账户枚举DNS服务器的主机名HTTP信息搜集枚举SSL密钥SSH服务密钥信息探测本章节将介绍Nmap的NES脚本,脚本是用Lua程序创作的,目前已有好几百种.lua的易用性也让更多的用户加入脚本的创作当中来,本章节通过对Nmap信息搜集脚本的使用让大家了解Nmap的高级技法. 本章脚

《Nmap渗透测试指南》—第2章2.1节一次简单的扫描

第2章 Nmap主机发现Nmap渗透测试指南本章知识点 一次简单的扫描使用Zenmap进行扫描Ping扫描无Ping扫描TCP SYN Ping扫描TCP ACK Ping扫描UDP Ping扫描ICMP Ping Types扫描ARP Ping扫描扫描列表禁止反向域名解析反向域名解析使用系统域名解析器扫描一个IPv6地址路由跟踪本章节将介绍Nmap的基本用法,以及认识Nmap可视化平台Zenmap.本章节讲到的几种扫描方式是Nmap扫描的基础,我们通过对基础的学习来更加牢靠地掌握Nmap扫描方