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

简介:

本节书摘来自异步社区《Android 应用测试指南》一书中的第1章,第1.3节为什么要测试、测什么、如何测、何时测试,作者 【阿根廷】Diego Torres Milano(迭戈 D.),更多章节内容可以访问云栖社区“异步社区”公众号查看

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

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

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

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

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

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

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

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


c84ef50e0470ac06d45f60f9d6c28dd96a5a423e

图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;
扩容。
由于有上述几个方面需要测试,虚拟器尤为重要。因为虚拟器可以让你通过简单配置达到上述条件的硬件特性。但是,如之前提到的,到最后的测试阶段,还是要用真机来操作,模拟真实用户的使用过程来测试。

目录
打赏
0
0
0
0
1814
分享
相关文章
MATLAB在风险管理中的应用:从VaR计算到压力测试
本文介绍如何使用MATLAB进行风险管理,涵盖风险度量(如VaR)、压力测试和风险分解。通过历史模拟法、参数法和蒙特卡洛模拟法计算VaR,评估投资组合在极端市场条件下的表现,并通过边际VaR和成分VaR识别风险来源。结合具体案例和代码实现,帮助读者掌握MATLAB在风险管理中的应用,确保投资组合的稳健性。
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
144 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
54 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
170 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
探秘电商API:从测试到应用的深度解析与实战指南
电商API是电子商务背后的隐形引擎,支撑着从商品搜索、购物车更新到支付处理等各个环节的顺畅运行。它通过定义良好的接口,实现不同系统间的数据交互与功能集成,确保订单、库存和物流等信息的实时同步。RESTful、GraphQL和WebSocket等类型的API各自适用于不同的应用场景,满足多样化的需求。在测试方面,使用Postman、SoapUI和jMeter等工具进行全面的功能、性能和安全测试,确保API的稳定性和可靠性。未来,随着人工智能、大数据和物联网技术的发展,电商API将进一步智能化和标准化,为用户提供更个性化的购物体验,并推动电商行业的持续创新与进步。
65 4
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
42 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
104 14
打造个性化安卓应用:从设计到开发的全面指南
在这个数字时代,拥有一个定制的移动应用不仅是一种趋势,更是个人或企业品牌的重要延伸。本文将引导你通过一系列简单易懂的步骤,从构思你的应用理念开始,直至实现一个功能齐全的安卓应用。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你提供必要的工具和知识,帮助你将创意转化为现实。
探索安卓开发:构建你的第一个“Hello World”应用
在安卓开发的浩瀚海洋中,每个新手都渴望扬帆起航。本文将作为你的指南针,引领你通过创建一个简单的“Hello World”应用,迈出安卓开发的第一步。我们将一起搭建开发环境、了解基本概念,并编写第一行代码。就像印度圣雄甘地所说:“你必须成为你希望在世界上看到的改变。”让我们一起开始这段旅程,成为我们想要见到的开发者吧!
100 0
探索安卓开发:打造你的第一款应用
在数字时代的浪潮中,每个人都有机会成为创意的实现者。本文将带你走进安卓开发的奇妙世界,通过浅显易懂的语言和实际代码示例,引导你从零开始构建自己的第一款安卓应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇门,让你的创意和技术一起飞扬。

热门文章

最新文章

  • 1
    Android历史版本与APK文件结构
    13
  • 2
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    15
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    2
  • 4
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    4
  • 5
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    6
  • 6
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    2
  • 7
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    6
  • 8
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    4
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    1
  • 10
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    12
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等