软件测试,专门的软件测试,第一次定义,成为专门的学科,与开发的融合
(1983年电子电气工程师协会):
软件测试是一门需要经过设计、开发和维护等完整阶段的软件工程
使用人工或自动的手段运行或测试软件的过程,目的是检验软件系统是否满足规定的要求,并找出与预期结果之间的差异
按测试人员参与的程度:专职和兼职
按测试人员参与项目的形式:项目型(项目组成员)和职能型(部门委派)
1.线性模型也叫瀑布模型:需求完全确定,集成风险(缺陷发现晚,大面积返工)
2.渐进式模型:螺旋模型是其中代表,在瀑布的每阶段前引入需求分析和风险管理,测试跟随开发迭代而迭代
增量开发:分块;迭代开发:反复求精;现在的迭代开发是指增量+迭代
3.变换模型:省略编码和测试,代之以自动化的程序变换过程,集中精力于前面的需求分析和建模
全称:能力成熟度模型集成(软件能力成熟度集成模型)
将软件企业的过程管理能力划分为5个等级:
基于pdca循环,要求测试人员需要得到相关授权才能进行测试活动,应得到充分的培训和指导
又叫戴明环
p:计划(方针和目标确定,活动计划)
d:执行(具体运行)
c:检查(总结执行结果)
a:行动或处理(总结成功的或失败的经验)
敏捷测试认为要持续的测试,不断的回归测试,快速的测试,多借鉴上下文驱动的方法适当采用自动化的方式加快测试的速度
一个实体的所有特性,基于这些特性可以满足明显的或隐含的需求,质量就是实体基于这些特性满足需求的程度
6个特性,27个子特性
6个特性:功能性、可靠性、易用性、效率、维护性、可移植性
软件质量由组织、流程和技术三方面决定,软件质量活动包括软件质量保证(sqa)(从流程方面保证软件质量)和软件测试(从技术方面保证软件质量)
1.qa是质量保证,qc是质量控制
2.qc是qa的重要手段
3.qc查找的是产品的错误,qa查找的是过程的错误
从测试的目的出发将测试分为两大类:
1.Good enough原则:
投入和产出要适当权衡,测试不充分是对质量的不负责任,投入过多测试又会造成资源的浪费
2.Pareto(柏拉图)原则:(即80-20原则)
定义:80%的bug在分析、设计、评审阶段就能被发现和修正,剩下20%的80%(即总量的16%)需要系统的软件测试来发现,剩下的5%左右只有在用户的长时间使用过程中才能暴露出来
3.尽可能早开展测试:
越迟发现错误,修复软件需要付出的代价越高
4.在发现比较多错误的地方投入更多的测试:
物以类聚,bug有集中出现的迹象
5.同化效应:
体现在两个方面:
如何避免:
分析学派:软件测试是计算机科学和数学的分支
标准学派:软件测试是一个管理的过程
质量学派:软件测试是软件质量保证的分支
上下文驱动学派:软件测试是开发的一个分支
敏捷学派:软件测试是顾客角色的一部分
基本概念:在戴明的质量模型上加入了自动化的元素(戴明提倡质量改进应通过分析错误根源来消除错误原因,但对于软件行业这种手工质量改进方式很难实现,需要花费大量时间和精力,因此需要引入自动化实现方式)
五个步骤:
五大法则:
1.正确性:对照原始需求检查
2.必要性:不能回溯到出处的需求项可能是多余的
3.优先级:恰当划分并标识
4.明确性:不用含糊的词汇
5.可测性:每项需求必须是可检验的
6.完整性:不能遗漏必要或必须的信息
7.一致性:与原始需求一致,内部前后一致
8.可修改性:良好的组织结构使需求易于修改
测试计划是对测试过程的整体设计
测试战略:测试的先后次序、测试的优先级、测试的覆盖方式、回归测试的原则等
测试战术:测试方法、技巧、工具等
等价类划分法:黑盒测试方法,不考虑程序内部结构,只考虑程序输入规格即可,基本所有输入都可以划分为有效等价类和无效等价类
边界值分析法:假设大多数错误发生在各种输入条件的边界上,若在边界附近取值不会发生错误,那其他地方发生错误的概率也很小
等价类+边界值
基本路径分析法:白盒测试,覆盖程序分支路径,但在一些黑盒测试中也能使用
因果图法:1.找出所有输入和输出
场景设计法
错误猜测法
目前主要集中在测试数据的生成方面
2)对于回归测试的测试用例选择则复杂一点
新老员工搭配,除本组积极寻找其他测试资源,不同项目人员协助测试
也叫编译检查测试,检查源代码是否正确编译成一个新的、完整可用的版本
做一些基本的功能测试,随着开发深入不断演进
bvt测试和冒烟测试目的是检查程序是否完整
每日构建是每天定时把所有文件编译、连接组成一个可执行的程序的过程
录入的bug描述不清晰也是不行的
发现问题的版本,问题出现的环境,错误行为的描述,问题重现的步骤,预期行为的描述
回归是指产品的质量从一个较高的水平回落到一个较低的水平
回归的问题根源是软件系统的内在复杂性(系统复杂性增加,更改产生难以预料的影响的可能性也增加)
回归测试的最大困难是时间紧迫(客观维度)更难的是克服测试人员的疲劳思维(主观维度)
基于风险的回归测试:没有足够的时间,专注于测试那些最高风险的地方
分为两个方面:可能性:可能出错的机会
影响(危害性):确实出错后会造成的影响程度
黑盒:软件产品当成一个黑箱,用户不需知道里面具体怎么操作,测试人员只需和用户一样看待软件产品即可,可能存在一定风险,对于安全性要求高的系统不行,会暴露后台数据库信息
白盒:以理解软件内部结构和程序运行方式为基础的软件测试技术
1.测试用例的设计:测试人员的经验和对错误的猜测能力是工具不可替代的
2.界面和用户体验测试:人类的审美观和心理体验是工具不可模拟的
3.正确性的检查:人们对是非的判断、逻辑推理能力是工具不具备的
单元测试:
是针对软件设计中的最小单位——程序模块,进行正确性检验的测试工作
狭义:编写测试代码来检验被测试代码的正确性
广义:小到一行代码的验证,大到一个功能模块的功能验证,从代码规范性的检查到代码性能和安全性的验证都包含在里面,视单元的范围而定义
逻辑工作量
因篇幅问题不能全部显示,请点此查看更多更全内容