android测试技术
验收测试
系统开发生命周期方法论的一个阶段,这 时相关的用户和/或独立测试人员根据测 试计划和结果对系统进行测试和接收。它 让系统用户决定是否接收系统。它是一项 确定产品是否能够满足合同或用户所规定 需求的测试 这是管理性和防御性控制的测试过程
白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是按
• 白盒测试工具 白盒测试工具一般是针对代码进行测试,测试中发现 的缺陷可以定位到代码级,根据测试工具原理的不同,又 可以分为静态测试工具和动态测试工具。 • 黑盒测试工具 该工具用于黑盒的自动化测试。可以在有源码或者只 有APK的情况下对目标应用进行测试。Robotimu提供了 模仿用户操作行为的API,比如在某个控件上点击,输入 Text等等。Robotium - Android自动化测试工具 测试步骤介绍:简单介绍如何使用robotium进行自动化测 试
图形化性能测试traceview
• Traceview是android平台配备一个很好的性能分析的工具。 它可以通过图形化的方式让我们了解我们要跟踪的程序的 性能,并且能具体到method。 • Google Dev Guide当中说可以在activity的onCreate()中添 加Debug.startMethodTracing(), 而在onDestroy()中添加 Debug.stopMethodTracing(),但是我在实际的测试时发 现这种方式其实并不好用,因为通常情况下我们的activity 的onDestroy()是由系统决定何时调用的,因此我们可能等 了很长时间都不会得到这个trace文件。因此我决定在 onStop()中来调用Debug.stopMethodTracing()。这样当 我们切换到其它activity或者点击home键的时候onStop() 就会被调用,我们也就可以得到完整的trace file。
软件测试对象
程序 数据 文档 过程 硬件 网络
软件测试关键词
单元测试 集成测试 确认测试 验收测试 白盒测试 黑盒测试
单元测试
单元测试又称模块测试 是针对软件设计的最小单元——程序模块 进行正确性检验的测试工作 其目的在于检查每个程序单元能否实 现详 细设计说明中的模块功能、性能、接口和 设计约束等要求,发现各模块内部可能存 在的错误
白盒测试的内容
• • • • • • 代码检查(语法、逻辑、书写) 静态结构分析(内部关系如系统结构、函数调用关系等) 功能确认与接口分析 逻辑覆盖率分析(内部的执行路径、提高软件的可靠性) 性能与效率分析 内存分析(内存泄露、内存越界等)
自动测试和分析工具
随着软件测试的地位逐步提高,测试的重要性逐步显 现,测试工具的应用已经成为了普遍的趋势。目前用于测 试的工具已经比较多了,这些测试工具一般可分为 白盒测试工具 黑盒测试工具 性能测试工具 用于测试管理(测试流程管理、缺陷跟踪管理、测试用例 管理)的工具。
特点
在Monkey运行的时候,它生成事件,并把它们发给系统。同时, Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理: • 如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试 图转到其它包的操作,并对其进行阻止。
• 如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。
确认测试
确认测试的目的是向未来的用户表明系统能够像预定要求 那样工作。经集成测试后,已经按照设计把所有的模块组 装成一个完整的软件系统,接口错误也已经基本排除了, 接着就应该进一步验证软件的有效性,这就是确认测试的 任务,即软件的功能和性能如同用户所合理期待的那样 确认测试又称有效性测试。有效性测试是在模拟的环境下, 运用黑盒测试的方法,验证被测软件是否满足需求规格说 明书列出的需求。任务是验证软件的功能和性能及其他特 性是否与用户的要求一致。对软件的功能和性能要求在软 件需求规格说明书中已经明确规定,它包含的信息就是软 件确认测试的基础
软件测试原则
所有的软件测试都应追溯到用户需求 应当把“尽早地和不断地进行软件测试” 作为软件测试人的座右铭 完全测试是不可能的,测试需要终止 测试无法显示系统所有潜在的缺陷
软件测试原则
充分注意测试中的群集现象 程序员应避免检查自己的程序 尽量避免测试的随意性,应从工程的角度 理解软件测试,它是有组织、有计划、有 步骤的活动
分析面板(Profile panel)
其他测试工具
• MonkeyRunner(工具与用户界面/应用程序测试) • Android自动化测试框架Robotium(Android的测试 框架,使用的类也是Instrumentation) • QTP插件SeeTest(是基于图像识别的自动化测试工 具) • Autoandroid(基于android junit编写的测试框架) • Android Scripting Environment(ASE) • Compatibility Test Suite(CTS)(用来确保某 设备符合Android兼容性规范)
集成测试
集成测试,也叫组装测试或联合测试 在单元测试的基础上,将所有模块按照设计 要求)如根据结构图〕组装成为子系统或系 统,进行集成测试 集成测试是检验程序单元部件的接口关系 实践表明,一些模块虽然能够单独地工作, 但并不能保证连接起来也能正常的工作。程 序在某些局部反映不出来的问题,在全局上 很可能暴露出来,影响功能的实现
• • • •
测试策略
测试信息流 分析设计阶段
需求说明书评测 概要设计说明书评测 详细设计说明书评测 软件编码规范评测
开发阶段
单元测试 集成测试 确认测试 验收测试
软件验证和确认过程
公司测试过程
测试过程文档
测试计划 测试用例 测试缺陷报告 测试报告
测试工具的分类
白盒与黑盒测试比较 Y=f(X)
Y
X
f(x)
白盒与黑盒测试比较
白盒测试:
IN
P
黑盒测试:
OUT
调试与白盒测试
• 从广义上讲调试是白盒测试的一个子集 • 相同点
目的相同 检查基础相同 方法相同(静态、动态、代码跟踪)
• 不同点
侧重点(排除错误 ------发现错误)
范围不同(语法、功能 -------- 内部结构、内存泄露等) 执行人员不同(开发人员 -------- 测试人员)
软件测试目的
测试并不仅仅是为了找出错误.通过分析错 误产生的原因和错误的发生趋势,可以帮助 项目管理者发现当前软件开发过程中的缺 陷,以便及时改进 这种分析也能帮助测试人员设计出有针对 性的测试方法,改善测试的效率和有效性; 没有发现错误的测试也是有价值的,完整的 测试是评定软件质量的一种方法
• 如果应用程序产生了应用程序不回应(application not responding)<span>的错误,Monkey将会停止并报错。 • 按照选定的不同级别的回馈信息,在Monkey中还可以看到其执行过 程报告和生成的事件
运
行
• 在Eclipse中新建工程,将: \android-sdkwindows\samples\android-8\samples\ApiDemos 添加到工程中点击运行,此时,他的APK应该加载 到了Emulator上 • 在命令行输入adb shell • 输入ls查看当前文件夹下的目录 • 应用程序包都在data下,我们输入cd data进入 data文件夹 • 还有个data,所有的应用程序就在这个data下了, 进入这个data,然后输入ls • 直接输入monkey -p com.example.android.apis -v 50
黑盒测试
黑盒测试也称功能测试,它是通过测试来检测每 个功能是否都能正常使用。 在测试时,把程序看作一个不能打开的黑盒子, 在完全不考虑程序内部结构和内部特性的情况下, 在程序接口进行测试,它只检查程序功能是否按 照需求规格说明书的规定正常使用,程序是否能 适当地接收输入数据而产生正确的输出信息。 黑盒测试着眼于程序外部结构,不考虑内部逻辑 结构,主要针对软件界面和软件功能进行测试
测试工具的分类
• 性能测试工具
是通过模拟大数据量或多用户并发情 况,对被测系统进行性能指标的采集。 代表工具有 monkey traceview
应用测试工具的目的
提高测试质量; 减少测试过程中的重复劳动 实现测试自动化
在测试中应用测试工具,可测试工具
时间片面板(Timeline panel)
分析面板(Profile panel)
• Incl 调用方法占用时间百分比 • Inclusive 调用方法时间(ms)(包括了所 有方法的调用) • Excl 执行方法占用时间百分比 • Exclusive 执行方法占用时间(ms)(不包 括子方法的调用) • Calls+Recur Calls/Total 调用和重复调 用的次数 • Time/Call 总的时间(ms)
照程序内部的结构测试程序,通过测试来检测产 品内部动作是否按照设计规格说明书的规定正常 进行,检验程序中的每条通路是否都能按预定要 求正确工作 是把测试对象看作一个打开的盒子,测试人员依 据程序内部逻辑结构相关信息,设计或选择测试 用例,对程序所有逻辑路径进行测试,通过在不 同点检查程序的状态,确定实际的状态是否与预 期的状态一致
Android测试技术
什么是软件测试
使用人工或者自动手段来运行或测试某个 系统的过程 目的在于检验它是否满足规定的需求、弄 清预期结果与实际结果之间的差别
软件测试目的
测试是为了发现系统中的错误而执行程序 的过程 好的测试方案在于尽可能发现迄今为止尚 未发现的错误 成功的测试是发现了至今为止尚未发现的 错误的测试
• 你的设备和模拟器必须设置SD card 和 你的程序 拥有对SD card 具有读写操作的权限(<usespermission android:name="android.permission.WRITE_EXT ERNAL_STORAGE" />) • 在你的程序中使用TraceView 1 // 开始跟踪然后自动保存到 "/sdcard/test.trace" 2 Debug.startMethodTracing("test"); 3 // 停止跟踪 4 Debug.stopMethodTracing();