1、- 1 -1关于手机软件测试技术的研究与应用摘要:随着智能手机的产生以及不断发展,智能手机的应用范围也越来越广泛,智能手机以不可阻挡的速度渗透到人们的工作和生活中。同时,手机的软件质量越来越受到人们的关注,手机软件做得好不好,直接关系到整个企业的手机销售的情况。现在的智能手机的市场竞争也越来越强烈,近年来,各个企业都与千元智能手机作为公司的主打机,以此来赢得市场。近年来,由于软件错误而造成经济损失、导致严重后果的事例屡见不鲜,因此,如何保证软件产品的质量和可靠性就成为人们必须解决的一个重要问题,而软件测试便是保证软件质量的一个重要手段。据统计,国外在软件开发中,开发费用的近一半甚至更多要用于软
2、件测试,由此也可以看出软件测试在软件开发中的重要地位。关键词:软件测试、测试用例、BUG、白盒测试、黑盒测试- 2 -2目录第一章 引言 .4一、软件测试的背景和意义 .41、软件测试的背景 .42、软件测试的意义 .4二、软件测试的基本理论 .41、软件测试的定义 .42、软件测试的目标 .43、软件测试的基本原则 .5三、软件测试的内容 .51、正确性测试 .52、容错性测试 .63、性能与效率测试 .6第二章 软件测试的方法 .6一、白盒测试 .6二、黑盒测试 .7第三章 软件测试用例设计以及编写原则 .8一、设计概述 .8二、功能测试用例 .8三、性能测试用例 .9第四章 写用例 .1
3、0一、测试用例是软件测试的核心 .10二、什么叫测试用例 .10三、编写测试用例 .10第五章 测试执行 .12一、测试的执行 .12二、常用测试工具简介 .12第六章 提交 BUG .12一、什么是 BUG.12二、测试人员提交 BUG 技巧 .13第七章 开发修改 .13第八章 回归测试 .14一、什么是回归测试 .14二、回归测试策略 .14参考文献 .15致谢 .16- 3 -3第一章 引言一、软件测试的背景和意义1、软件测试的背景随着智能手机的广泛应用,手机软件的质量要求也就越来越高。落后的软件生产方式无法满足日趋复杂大型软件系统的开发需求。手机是属于消费品,随着用户对手机有着不同的
4、要求,从只能简单通话的手机到 3G 的智能手机,手机所扮演的不再是一个简单的通话工具,而是成为人们办公、娱乐的得力助手。随着手机功能越来越多,只有高质量的软件,才能满足人们对手机功能的需求。软件测试在软件生存期非常重要,工作量和开销占将近一半,是保证软件质量的主要手段,对于查找软件缺陷、保证产品质量,提高企业效益具有不可替代的作用。2、软件测试的意义软件测试是保证软件质量的重要手段,软件测试深入软件开发过程中每个阶段,在有限的开发条件下,最大程度地保证最终软件产品符合用户需要。只要拥有高质量的软件,对提高企业效益就有很大的帮助。二、软件测试的基本理论1、软件测试的定义软件测试使用人工或者自动手
5、段来运行或者测试某个系统的过程,其目的在于检验它是否满足规定的需求或者弄清预期结果与实际结果之间的差别。甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。(1)软件测试并不仅仅是为了找出错误,通过分析错误产生的原因和错误发生的趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进;(2)这种分析也能帮助测试人员设计出有针对性的测试方法以及测试技巧,改善测试的效率和有效性,有利于提高软件的质量;(3)没有发现错误的测试也是有价值的,完整的测试时评定软件质量的一种方法。在测试过程中,只要保
6、证软件的质量,那才是最重要的,好的质量是最终的目的。2、软件测试的目标软件测试的目标就是通过测试不断地是软件的质量得到改善,以最快的时间完成一个项目,具体分为以下四点:- 4 -4(1) 、发 现 一 些 可 以 通 过 测 试 避 免 的 开 发 风 险 (2) 、实 施 测 试 来 降 低 所 发 现 的 风 险 (3) 、确 定 测 试 何 时 可 以 结 束 (4) 、在 开 发 项 目 的 过 程 中 将 测 试 看 作 是 一 个 标 准 项 目 。3、软件测试的基本原则软件测试时为了使软件质量得到改善,以确保满足产品的需求。在设计有效测试用例之前,测试工程师必须理解软件测试的基本
7、原则,具体有以下原则:(1) 、所有的测试都是为了满足用户的需求。(2) 、在测试开始之前,拟好测试计划。(3) 、应 尽 早 地 和 不 断 地 进 行 软 件 测 试 。应 当 把 软 件 测 试 贯 穿 到 整 个 软 件 开 发 的 过 程 中 , 而 不 应 该 把 软 件 测 试 看 作 是 其 过 程中 的 一 个 独 立 阶 段 。 因 为 在 软 件 开 发 的 每 一 环 节 都 有 可 能 产 生 意 想 不 到 的 问 题 , 其 影 响因 素 有 很 多 , 比 如 软 件 本 身 的 抽 象 性 和 复 杂 性 、 软 件 所 涉 及 问 题 的 复 杂 性 、 软
8、 件 开 发 各个 阶 段 工 作 的 多 样 性 , 以 及 各 层 次 工 作 人 员 的 配 合 关 系 等 。 所 以 要 坚 持 软 件 开 发 各 阶 段的 技 术 评 审 , 把 错 误 克 服 在 早 期 , 从 而 减 少 成 本 , 提 高 软 件 质 量 。(4) 、 对 测 试 用 例 要 有 正 确 的 态 度第 一 , 测 试 用 例 应 当 由 测 试 输 入 数 据 和 预 期 输 出 结 果 这 两 部 分 组 成 ; 第 二 , 在 设计 测 试 用 例 时 , 不 仅 要 考 虑 合 理 的 输 入 条 件 , 更 要 注 意 不 合 理 的 输 入 条
9、件 。 因 为 软 件 投入 实 际 运 行 中 , 往 往 不 遵 守 正 常 的 使 用 方 法 , 进 行 了 异 常 操 作 , 就 很 容 易 产 生 一 系 列的 问 题 , 轻 则 输 出 错 误 的 结 果 , 重 则 瘫 痪 失 效 。 因 此 常 用 一 些 不 合 理 的 输 入 条 件 来 发现 更 多 的 鲜 为 人 知 的 软 件 缺 陷 。(5) 、 人 以 群 分 , 物 以 类 聚 。软 件 测 试 也 不 例 外 , 一 定 要 充 分 注 意 软 件 测 试 中 的 群 集 现 象 。 不 要 以 为 发 现 几 个错 误 并 且 解 决 这 些 问 题
10、之 后 , 就 不 需 要 测 试 了 。 反 而 这 里 是 错 误 群 集 的 地 方 , 对 这 段 程序 要 重 点 测 试 , 要 经 过 反 复 测 试 , 才 能 真 正 地 解 决 问 题 , 这 样 才 能 提 高 测 试 投 资 的 效益 。(6) 、 严 格 执 行 测 试 计 划 , 排 除 测 试 的 随 意 性 , 以 避 免 发 生 疏 漏 或 者 重 复 无 效 的 工 作 。在 测 试 过 程 中 , 要 仔 细 , 不 能 有 半 点 马 虎 , 这 样 才 能 找 出 问 题 的 所 在 , 以 便 更 快 地 解 决问 题 。(7) 、 应 当 对 每
11、一 个 测 试 结 果 进 行 全 面 检 查 。 一 定 要 全 面 地 、 仔 细 地 检 查 测 试 结 果 , 但常 常 被 人 们 忽 略 , 导 致 许 多 错 误 被 遗 漏 。(8) 、 妥 善 保 存 测 试 用 例 、 测 试 计 划 、 测 试 报 告 和 最 终 分 析 报 告 , 以 备 回 归 测 试 及 维 护之 用 。在 遵 守 以 上 原 则 的 基 础 上 进 行 软 件 测 试 , 可 以 以 最 少 的 时 间 和 人 力 找 出 软 件 中 的 各种 缺 陷 , 能 够 更 快 地 解 决 问 题 , 从 而 达 到 保 证 软 件 质 量 的 目 的
12、 。- 5 -5三、软件测试的内容1、正确性测试正确性测试又称功能测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要。2、容错性测试容错性测试是检查软件在异常条件下的行为。容错性好的软件能确保系统不发生无法意料的事故。比较温柔的容错性测试通常构造一些不合理的输入来引诱软件出错。3、性能与效率测试性能与效率测试主要是测试软件的运行速度和对资源的利用率。性能与效率测试中很重要的一项是极限测试,因为很多软件系统会在极限测试中崩溃。第二章 软件测试的方法软件 BUG 的存在迫使人们进行软件测试。软件测试实质上是为了实现程序中的错误而执行程序的过程。软件的内部测
13、试狭义的概念是由软件开发部门自我组织的,在部门内部进行的软件测试;而广义上的软件的内部测试是指在向用户发布正式版本之前进行的软件测试。这个过程通常由单元测试、集成测试、验收测试、平行运行测试构成,通过需要设计完整的测试方案。一、白盒测试白盒测试也结构测试或者逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序的每条通路是否都能按预定要求正常工作。这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所以逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一
14、致。常用的软件测试方法有两大类:静态测试方法和动态测试方法。其中软件的静态测试主要是以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试时通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。白盒测试方法有代码检查法、静态结构分析法、静态质量量法、逻辑覆盖法、基本路径测试法、域测法、符号测试、路径覆盖、程序变异。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试、其中逻辑覆盖包括语- 6 -6句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误
15、的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次。判定覆盖每个判定的每个分支至少执行一次。条件覆盖每个判定的每个条件应取到各种可能的值。判定/条件覆盖同时满足判定覆盖条件覆盖。条件组合覆盖的每个判定中各条件的每一种组合至少出现一次。路径覆盖使程序中每一条可能的路径知道执行一次。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒” 法事穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据,贯穿程序的独立路径数天文数字,但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二
16、,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。白盒测试三步法:一、根据代码的功能,人工设计测试用例进行基本功能测试;第二、统计白盒覆盖率,为未覆盖的白盒单位设计测试用例,实现完整的白盒覆盖,比较理想的覆盖率是实现 100%语句、条件、分支、路径覆盖;第三自动生成大量的测试用例,捕捉“程序员未处理某些特殊输入”形成的错误。二、黑盒测试黑盒测试也称功能测试或数据驱动测试,它是在已知产品所具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测
17、试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息的完整性。黑盒测试的方法主要有等价类划分、边界值分析、因果图法、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法事穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法输入,而且还要对那些不合法但是可能的输入进行测试。黑盒测试法注重于测试软件的功能需求,主要试图发现下列几类错误:(1)、功能不确定或遗漏;(2)、
18、界面错误;(3)、数据库访问错误;(4)、性能错误;(5)、初始化和终止错误等。从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试时不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤、以及有计划地进行,黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试执行具体量化的方法之一。具体的黑盒测试用例设计方法包括- 7 -7等价划分法、边界值分析法、错误推测法、因果
19、图法、判定表驱动法、正交试验设计法、功能图法等。第三章 软件测试用例设计以及编写原则一、设计概述测试用例就是一个文档,描述输入、动作、或者时间和一个期望的结果,其目的是确定应用程序的某个特性是否正常的工作。二、功能测试用例测试种类繁多,针对不同的测试,测试用例的设计方式完全不同。本小节主要探讨的是功能测试中使用的测试用例。测试用例是测试人员执行测试时的重要参照标准。因此,测试用例必需使测试人员能够明确理解,并能够依据测试用例的描述执行测试。为此,一个设计良好的测试用例应当包括如下几个关键几点:(1) 、.用例编号(testcaseIndex),一个软件项目可能拥有数量庞大的测试用例。应根据项目
20、设计一个良好的用例编号体系,那么通过用例编号,便可对测试用例进行快速定位,查询时事半功倍,以便更快地解决问题。(2.) 、用例名称(testCaseName),用例名称的编写应使用最精简的文字,描绘出用例的全貌。编写良好的用例名称如同书籍的目录,能够帮助阅读者整理思路,定位用例。(3) 、.前置条件(precondition),前置条件指测试执行者在执行测试用例的操作步骤前,必须完成的准备工作。常见的前置条件有:系统的配置、权限的设置、数据的准备、前置工序的执行等。(4) 、.测试步骤 (Teststep),测试用例中,每个操作均可设计为一个步骤。一个测试用例由一个或多个测试步骤组成。常见可将
21、测试步骤分为正常步骤和容错步骤。正常步骤指普通用户为了实现正常功能,进行的普遍的、正确的、系统期待的操作。正常步骤描述的操作通常在需求文档中会有明确的说明,也是程序需要实现的主要功能。容错步骤指用户有意或无意进行的一些错误的、甚至于有破坏性的操作。对此类错误操作,系统应有足够的容忍性,进行一些友好的提示、阻止或处理,而不是产生异常。需求文档中,通常会对正常步骤进行明确定义。因此,正常步骤是严谨的,甚至是唯一的,编写者的发挥空间非常狭小。容错流程恰恰相反。一个思维活跃、经验丰富的测试人员在编写容错步骤时,能够考虑到各类不同的容错步骤,其编写出的测试用例也是全面、广泛而又犀利的。容错流程的编写深度
22、与广度能够很好的反映编写者的技术实力,这样才能更加全面的进行软件测试。(5) 、.步骤描述(Deseription),步骤描述是测试步骤的主体,是测试人员执行测试时的重要阅读对象。因此,测试步骤必须表述详细,描述清晰,用语必须规范、严谨而又客观。最基本的要求是能够使其他人理解,并能正确的执行编写者期望的操作。(6) 、.期望结果,期望结果是执行测试时,测试者所进行比对的标尺,是一个测试步骤是否通过的标准答案。期望结果必须要保证其正确性。错误的期望结果带来的后果是严- 8 -8重的。(7) 、.实际结果 (ActualResultS)实际结果供测试人员在运行测试时填写观察到的实际结果。填写的内容
23、同样需做到规范、严谨与客观。(8) 、.测试结论 (TestResult)与实际结果类似,测试结论供测试人员运行测试时填写。若实际结果与期望结果两者一致,或虽然不一致,但在可接受范围内,则可以认为该步骤是通过的,测试结论应置为 passed;若两者不一致,且无法接受,则应将结果置为Failed。三、性能测试用例性能测试用例主要分为预期目标用户测试,用户并发测试,疲劳强度与大数据量测试,网络性能测试,服务器性能测试五大部分,具体编写测试用例时要根据实际情况进行裁减,在项目应用中遵守低成本,策略为中心,裁减,完善模型,具体化等原则;WEB 全面性能测试模型:Web 性能测试模型提出的主要依据是:一
24、种类型的性能测试可以在某些条件下转化成为另外一种类型的性能测试,这些类型的性能测试的实施是有着相似之处的;(1) 、预期指标的性能测试系统在需求分析和设计阶段都会提出一些性能指标,完成这些指标的相关的测试是性能测试的首要工作之一,这些指标主要诸于“系统可以支持并发用户 200 个;”系统响应时间不得超过 20 秒等,对这种预先承诺的性能要求,需要首先进行测试验证;(2) 、独立业务性能测试独立业务实际是指一些核心业务模块对应的业务,这些模块通常具有功能比较复杂,使用比较频繁,属于核心业务等特点。(3) 、组合业务性能测试通常不会所有的用户只使用一个或者几个核心业务模块,一个应用系统的每个功能模
25、块都可能被使用到;所以 WEB 性能测试既要模拟多用户的相同操作,又要模拟多用户的不同操作;组合业务性能测试是最接近用户实际使用情况的测试,也是性能测试的核心内容。(4) 、疲劳强度性能测试疲劳强度测试是指在系统稳定运行的情况下,以一定的负载压力来长时间运行系统的测试,其主要目的是确定系统长时间处理较大业务量时的性能,通过疲劳强度测试基本可以判定系统运行一段时间后是否稳定。(5) 、大数据量性能测试一种是针对某些系统存储,传输,统计查询等业务进行大数据量时的性能测试,主要针对某些特殊的核心业务或者日常比较常用的组合业务的测试。第二种是极限状态下的数据测试,主要是指系统数据量达到一定程度时,通过
26、性能测试来评估系统的响应情况,测试的对象也是某些核心业务或者常用的组合业务。第三种大数据量测试结合了前面两种的测试,两种测试同时运行产生较大数据量的系统性能测试。(6) 、网络性能测试主要是为了准确展示带宽,延迟,负载和端口的变化是如何影响用户的响应时间的,- 9 -9在实际的软件项目中,主要是测试应用系统的用户数目与网络带宽的关系。网络测试的任务通常由系统集成人员完成。(7) 、服务器(操作系统,WEB 服务器,数据库服务器)性能测试。(8) 、一些特殊的测试主要是指配置测试,内存泄露测试的一些特殊的 WEB 性能测试。第四章 写用例一、测试用例是软件测试的核心软件测试的重要性事毋庸置疑的,
27、但是如何以最少的人力、资源投入、在最短的时间内完成测试,发现软件测试系统的缺陷,保证软件的优良品质,则是软件公司探讨和追求的目标。每个软件产品或软件开发项目都需要有一套优秀的测试方案和测试方法。影响软件测试的因素有很多,例如软件本身的复杂程度、开发人员(包括分析、设计、编程和测试人员)的素质,测试方法和技术的运用等等。因为有些因素是客观存在的,无法避免。有些因素则是波动的、不稳定的,例如开发队伍是流动的,有经验的走了,新人不断补充进来,一个具体的人工作也受情绪等影响,等等。如何保障软件测试质量的稳定?有了测试用例,无论是谁来测试,参照测试用例来实施,都能保障测试的质量,可以把人为因素的影响减少
28、到最小,即便最初的测试用例考虑不周全,随着测试的进行和软件版本更新,也将日趋完善。因此,测试用例的设计和编制是软件测试活动中最重要的,测试用例是测试工作的指导,是软件测试的必须遵守的准则,更是软件测试质量稳定的根本保障。二、什么叫测试用例测试用例目前没有经典的定义。比较通常的说法是:指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略,内容包括测试目标,测试环境、输入数据、测试步骤、预期结果、测试脚本,并形成文档。不同类型的软件,测试用例是不同的,不同于诸如系统、工具、控制、游戏软件、管理软件的用户需求更加不统一,变化更大、更快。因此我们的做法是把测试数据和测试脚本从测试用
29、例中划分出来。测试用例更趋于是针对软件产品的功能、业务规则和业务处理所设计的测试方案,对软件的每个特定功能或运行操作路径的测试构成了一个个测试用例。三、编写测试用例(1) 、测试用例文档编写测试用例文档应有文档模板,须符合内部的规范要求。测试用例文档将受制于测试用例管理软件的约束。软件产品或软件开发项目的测试用例一般以该产品的软件模块或- 10 -10子系统为单位,形成一个测试用例文档,但并不是绝对的。测试用例文档由简介和测试用例两部分组成。简介部分编制了测试目的、测试范围、定义术语、参考文档、概述等。测试用例部分逐一列示各测试用例。 每个具体测试用例都将包括下列详细信息:用例编号、用例名称、
30、测试等级、入口准则、验证步骤、期望结果(含判断标准)、出口准则、注释等。以上内容涵盖了 测试用例的 基本元素:测试索引,测试环境,测试输入,测试操作,预期结果,评价标准。(2) 、测试用例的设置我们早期的测试用例是按功能设置用例。后来引进了路径分析法,按路径设置用例。目前演变为按功能、路径混合模式设置用例。(3) 、按功能测试是最简捷的,按用例规约遍历测试每一功能。对于复杂操作的程序模块,其各功能的实施是相互影响、紧密相关、环环相扣的,可以演变出数量繁多的变化。没有严密的逻辑分析,产生遗漏是在所难免。路径分析是一个很好的方法,其最大的优点是在于可以避免漏测试。为提高测试效率,软件测试已大力发展
31、自动测试。自动测试的中心任务是编写测试脚本。如果说软件工程中软件编程必须有设计规格说明书,那么测试脚本的设计规格说明书就是测试用例。(4) 、评估测试结果的度量基准完成测试实施后需要对测试结果进行评估,并且编制测试报告。判断软件测试是否完成、衡量测试质量需要一些量化的结果。例:测试覆盖率是多少、测 试合格率是多少、重要测试合格率是多少,等等。以前统计基准是软件模块或功能点,显得过于粗糙。采用测试用例作度量基准更加准确、有效。(5) 、分析缺陷的标准通过收集缺陷,对比测试用例和缺陷数据库,分析确证是漏测还是缺陷复现。漏测反映了测试用例的不完善,应立即补充相应测试用例,最终达到逐步完善软件质量。而已有相应测试用例,则反映实施测试或变更处理存在问题。如下为信息模块的一个测试用例:用例编号 No01测试优先级 高用例设计者 XXX设计日期 2012-4-25对应需求编号 No01-1版本号 V0.001对应开发人员 XXX测试方法 黑盒测试执行步骤1、信息基本功能测试2、信息压力测试3、信息交互测试4、信息异常测试预期输出 信息不会存在太大问题,能够正常发送和接收信息。实际结果 在发送和接收信息时,可能因为一些数据传输问题,造成软件运行的错误,致使发送和接收信息时出现错误测试日期 2012-5-6结论 经过后期的修改,信息功能进入稳定状态。