软件测试类型
功能测试:检查产品是否合格 性能测试:通过自动化的测试工具模拟多种正常,异常的条件来对系统的各项性能指标进行测试 接口测试:通过测试系统组件间接口的一种测试,主要用于检测外部系统与系统间及内部各子系统间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,及系统间的相互逻辑依赖关系等 兼容性测试:简称CTS,指对所设计程序与硬件,软件间的兼容性的测试,分为浏览器兼容测试,和分辨率兼容测试(IE,Firefox,Google,苹果) 内核:发动机 用户体验测试:测试人员以用户的角度进行体验 安全测试:是否只能让授权用户提供功能使用
软件测试的方法
按测试对象进行分类:白盒测试、黑盒测试 按测试对象是否执行:静态测试、动态测试 按测试手段进行分类:手工测试、自动化测试 白盒测试(结构测试) 概念:基于代码的测试 常用的测试方法: 代码检查 - 静态测试 逻辑覆盖 - 动态测试 基本路径测试 - 动态测试 黑盒测试(功能测试) 概念:基于功能的测试 静态测试 概念:不实际运行被测试软件 测代码(是否符合相应的标准和规范),逻辑,界面(实际界面与需求中的说明是否相符), 文档(用户手册和需求说明是否符合用户的实际需求) 动态测试 测运行的程序/项目的功能和输出结果是否 符合 预期结果 手工测试 自动化测试(1.自己写脚本,2.使用第三方工具)
缺陷的定义
五个规则 未实现需求规格说明书中要求的功能 出现了需求规格说明书中不该出现的错误 实现了需求规格说明书中未提到的功能 未实现需求规格说明书中未提及但是应该实现的必要功能 从测试员角度避免出现软件不易上手,性能差的情况 **软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。** 缺陷属性 标识(identifier)标记某个缺陷的唯一符号,可以使用数字、字母组合来表示 类型(headline)缺陷的分类定义 描述(description)对缺陷进行的详细的描述,以便缺陷重现 严重程度(severity)指因缺陷引起的故障对软件产品的影响程度 优先级(priority)缺陷必须被修复的紧急程度 状态(state)缺陷通过一个跟踪修复过程的进展情况
缺陷的类型
功能问题:影响了重要的特性、用户界面、产品接口、硬件结构接口和全局数据结构。并且设计文档需要正式的变更。如指针循环,递归,功能等缺陷。(功能错误、功能缺失、功能超越、设计的二义性、算法错误) 接口问题:与其他组件、模块或设备驱动程序、调动参数、控制块或参数列表相互影响的缺陷。(模块间接口、模块内接口、公共数据使用) 逻辑问题:需要进行逻辑分析,进行代码修改,如循环条件等。(分支不明确、重复的逻辑、忽略极端条 件、不必要的功能、误解、循环不准确、计算顺序错误、逻辑顺序错误) 计算问题:等式、符号、操作符或操作数错误,精度不够、不适当的数据验证等缺陷。(等式错误、缺少运算符、错误的操作数、括号用法不正确、精度不够、舍入错误、符号错误) 数据问题:需要修改少量代码,如初始化或控制块。如声明、重复命名,范围、限定等缺陷。(初始化错 误、存取错误、引用错误变量、数组应用越界、数据单位不正确、变量类型不正确、数据范围 不正确、操作符错误、数据覆盖、输入数据错误、输出数据错误) 用户界面问题:人机交互特性:屏幕格式,确认用户输入,功能布局,页面排版等方面的缺陷。(界面风格不统一、屏幕上的信息不可用、屏幕上的错误信息、界面功能布局和操作不合常规) 文档问题:影响发布和维护,包括注释等缺陷。(描述含糊不清、项目描述不完整、项目描述不正确、项目缺少或多余、项目不能验证、项目不能完成、不符合标准、与需求不一致、文字排版错误、文档信息错误、注释缺陷) 性能问题:不满足系统可测量的属性值,如:执行时间,事务处 理速率等缺陷。(事务响应时间过长、系 统资源占用过多) 配置问题:由于配置库、变更管理或版本控制引起的错误。(配置管理问题、编译打包缺陷、变更缺陷) 标准问题:不符合各种标准的要求,如编码标准、设计符号等缺陷。(不符合编码标准、不符合软件标准、不符合行业标准) 环境问题:由于设计、编译和运行环境引起的问题。(设计、编译环境,运行环境) 兼容问题:软件之间不能正确的交互和共享信息。(操作平台不兼容、浏览器不兼容、分辨率不兼容) 其他问题:以上问题不包括的问题
缺陷严重程度
致命:系统任何一个主要功能完全丧失,系统无法执行、崩溃或严重资源不足、应用模块无法启动或异常退出、无法测试、造成系统不稳定,用户数据受到破坏,或者危机人身安全;(1)严重花屏、2)内存泄漏、3)系统崩溃/死机、4)模块无法启动或异常退出、5)功能设计与需求严重不符、6)严重的数值计算错误、7)其他导致无法测试的错误:如HTTP 500错误) 严重:系统的主要功能部分丧失,数据不能保存,系统的次要功能完全丧失,系统所提供的功能或服务受到明显的影响,不能执行正常工作功能或实现重要功能。1)功能未实现、2)功能错误、3)系统刷新错误、4)影响功能及界面的错别字或拼写错误、5)安全性问题。 重要(较大缺陷):产生错误的结果,导致系统不稳定,运行时好时坏,严重影响系统要求或基本功能实现的问题。1)操作界面错误(包括数据窗口内列名定义、含义是否一致);2)提示信息错误(包括未给出信息、信息提示错误等);3)长时间操作无进度提示;4)兼容问题。 一般:系统的次要功能没有完全实现,但不影响用户的正常使用,不会影响系统稳定性的:1)提示信息不太准确或用户界面差、操作时间长等一些问题;2)功能的实现有问题,如在系统实现的界面上,一些可 接受输入的控件点击后无作用,对数据库的操作不能正确实现; 较小:使操作者不方便或遇到麻烦,但它不影响功能的操作和执行,如个别不影响产品理解的错别字、文字排列不整齐等一些小问题,重点指系统的UI问题: 1) 滚动条无效; 2) 可编辑区域和不可编辑区域不明显; 3) 光标跳转设置不好,鼠标(光标)定位错误; 4) 上下翻页,首位页定位错误; 5) 界面不一致,或界面不正确; 6) 日期或时间初始值错误(起止日期、时间没有限定); 7) 出现错别字,标点符号错误,拼写错误,以及不正确的大小写等; 有待改进(其他缺陷):系统中值得改良的问题: 1) 容易给用户错误和歧义的提示; 2) 界面需要改进的,某个控件没有对齐等; 3) 对有疑虑的部分,提出修改建议。
缺陷优先级
立即解决:缺陷导致系统几乎不能使用或者测试不能继续,需立即解决 高优先级:缺陷严重,影响测试,需优先考虑 正常排队:缺陷需正常排队等候修复 低优先级:缺陷可以在开发人员有时间的时候被纠正
缺陷状态
新建:测试人员提交新的错误到库 激活/打开:问题还没有解决,存在源代码中,确认“提交缺陷”,等待处理 拒绝:拒绝“提交缺陷”,不需要修复或不是缺陷或缺陷已被其他软件测试人员发现 已修正/已修复:已被开发人员检查、修复过的缺陷,通过单元测试,认为已解决但还没有被测试人员验证 关闭:测试人员验证后,确认缺陷不存在后的状态 重新打开:测试人员验证后,还依然存在的缺陷,等待开发人员进一步修复 推迟:这个bug在下一个版本解决 报告缺陷的基本原则: 1.尽快报告软件缺陷 软件缺陷发现的越早,在进度中留下的修复时间就越多。 2.有效的描述软件缺陷 短小:只解释事实和演示、描述软件缺陷必须的细节 单一:每一个报告只针对一个软件缺陷 明显并通用:用阅读者容易看懂的,简单易行的步骤 所描述的软件缺陷,得到修复的机会较大。 可再现:要想得到重视,软件缺陷报告必须展示其可再现性--按照预定步骤可以使软件达到缺陷再次出现的相同状态。 3.在报告软件缺陷时不要做评价 测试员和程序员容易形成对立关系。软件缺陷报告应该针对产品,而不是具体的人,只陈述事实。避免幸 灾乐祸,自负,责怪。得体和委婉是关键。需要善于沟通与合作。 4.对软件缺陷报告跟踪到底 比没有找到重要软件缺陷更糟糕得是,发现了一个重要的软件缺陷,作了报告,然后把 他忘掉了或者跟丢了。对项目负责,有责任心是每个测试工程师必须有的。
软件缺陷生命周期
软件质量 6大特性
1.功能性:当软件在指定条件下实用时,软件产品提供满足明确和隐含需求的功能的能力 2.可靠性:在指定条件下使用时,软件产品维持规定的性能级别的能力 3.易用性:在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力 4.效率:在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力 5.可维护性:软件产品可被修改的能力。修改可能包括修正、改进或软件对环境、需求和功能规格说明变化的适应 6.可移植性:软件产品从一种环境迁移到另外一种环境的能力
软件质量管理(SQM)SQA+SQC
质量控制(SQC):事后的质量检验活动,以测试为主 质量保证(SQA):事先的质量保证活动,以预防为主 区别: SQC是保证产品质量符合规定,SQA是建立体系并确保体系按要求运作.