【概述】
软件缺陷是指软件产品中存在的问题,其具体表现为用户所需的功能没有实现,无法满足用户的需求
在软件开发过程的任何阶段都可能引入软件缺陷,而软件测试是发现软件中错误和缺陷的主要手段,其贯穿于整个开发过程
软件测试是为了发现错误而执行程序的过程,它并不可能找出所有的 错误,但是却可以减少潜在的错误或缺陷,在长期进行软件测试实践 的过程中,不断地总结出一些软件测试的经验或原则,可供我们参考:
- 完全测试是不可能的
- 测试中存在风险
- 软件测试只能表明缺陷的存在,而不能证明软件产品已经没有缺陷
- 软件产品中潜在的错误数与已发现的错误数成正比
- 让不同的测试人员参与到测试工作中
- 让开发小组和测试小组分立,开发工作和测试工作不能由同一部分人来完成
- 尽早并不断地进行测试,使测试工作贯穿于整个软件开发的过程中
- 在设计测试用例时,应包括输入数据和预期的输出结果两个部分,并且,输入数据不仅应该包括合法的情况,还应该包括非法的输入情况
- 要集中测试容易出错或错误较多的模块
- 应该长期保留所有的测试用例
【软件测试模型】
软件测试模型是指软件测试全部过程、活动或任务的结构框架,一个好的软件测试模型可以简化测试的工作,加速软件开发的进程
常用的软件测试过程模型有 V 模型、W 模型和 H 模型。
V 模型是最具代表意义的测试模型,它是软件开发中瀑布模型的变种
为克服 V 模型开发和测试不能同步的问题,在 V 模型的基础上有了 W 模型,其增加了软件开发阶段中应同步进行的测试活动。
H 模型强调测试的独立性和灵活性,在 H 模型中,软件测试活动完全独立,它贯穿于整个软件产品的生命周期,与其他流程并行进行。当软件测试人员认为测试准备完成,即某个测试点准备就绪时,就可以从测试准备阶段进入到测试执行阶段。
【软件测试分类】
软件测试可以从不同的角度划分为多种类型
按照质量因素划分的软件测试分类有:
- 功能测试:关注于软件产品的功能实现,以软件产品的需求规格说明书为依据,检验最终的软件产品是否实现了需求规格说明书中的所有功能需求
- 可靠性测试:关注于程序输出结果的准确性,它以需求规格说明书中对系统的可靠性要求为依据,评测最终的软件产品提供准确输出结果的能力
- 可用性测试:用来衡量处理服务请求时,应用程序的可用频率,它以需求规格说明书中对系统的可用性要求为依据
- 性能测试:主要针对软件产品各方面的性能因素,可以细分为负载测试、容量测试、压力测试
- 安全性测试:主要验证系统的安全性、保密性等措施是否能有效地发挥作用,包括用户管理和访问控制、数据备份与恢复、入侵检测等
按照执行测试时是否需要运行程序,软件测试的分类有:
- 静态测试:以人工测试为主,通过测试人员认真阅读文档和代码,仔细分析其正确性、一致性及逻辑结构的正确性,从而找出软件产品中的错误或缺陷,其对自动化工具的依赖性较小,通过人脑的思考和逻辑判断来查找错误,因而可以更好地发挥人的主观能动性
- 动态测试:需要通过实际运行被测程序来发现问题,测试人员可以输入一系列的测试用例,通过观察测试用例的输出结果是否与预期相符来检验系统内潜在的问题或缺陷
除以上两种分类外,还有其他的分类方法,不同的分类方法下的测试标准不同,常见的分类有:
- 配置测试:考察软件系统是否能在多种硬件平台上正常运行
- 兼容性测试:检测各软件之间是否能正确地交互和共享信息,它主要关注软件的运行平台和应用系统的版本、标准和规范、数据的共享性
- 安装测试:发现软件在安装过程中存在的错误,验证其与安装手册的内容是否一致,与其相对应的还有卸载测试
- 文档测试:检验软件产品的文档是否清晰、准确、一致
- 软件的国际化和本地化测试:这两者是相对应的,其要求软件产品能够支持 Unicode 编码,支持不同时区的设定、显示和切换,消除一些不容易改变的设置等
- α 测试和 β测试:属于验收测试的范畴,是在系统测试之后,产品发布之前进行的测试过程的最后一个阶段
【测试用例】
测试用例编写
测试用例,是指为达到最佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据并执行的过程
简单的说,测试用例就是设计一种情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果
由于不可能进行穷举测试,因此为节省时间和资源,提高测试效率, 必须要从数量极大的可用测试数据中精心挑选出具有代表性或特殊性的测试数据来进行测试
测试用例设计
在测试用例设计过程中,有一些经验和方法可循,常见的方法有:
- 边界值分析方法:在任何情况下都必须选择,用该方法设计的测试用例发现程序错误的能力最强
- 等价类划分法:在必要时用该方法补充一些测试用例
- 错误推测法:有时可用该方法来追加一些测试用例
- 检查逻辑覆盖度:对照程序逻辑,检查已设计出的测试用例的逻辑覆盖度,如果没有达到要求的逻辑覆盖标准,应当再补充足够的测试用例
- 因果图法:当程序的功能说明中含有输入条件的组合情况时选用从测试用例设计的角度