软件测试是使用人工或自动的手段来测试某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差距。
eg:
拿手机打游戏
不是测试,没有检验是否满足需求,没有了解其需求;没有刻意去弄清预期结果与实际结果的差距。
把一个app应用安装到手机上以后再卸载 ——不是测试
一个不知道再怎么用的软件上随便点点点,看看会不会出现什么问题
不是测试,未知需求
找个类似于按摩精灵 的工具录制操作步骤,自动化地帮我抢红包
不是测试,没有弄清预期结果于实际结果之间的差距。没有比较的自动化,是自动化操作而不是自动化测试。
MCP:Minmal Concept Principie(最小概念原则)
软件生命周期:
模型:将比较抽象的事物用比较形象的方式表现出来
特点:
瀑布模型是文档驱动的模型,遵守这个约束可使软件维护变得比较容易,从而显著降低软件预算。
优点:
缺点:
最大的问题:
测试工作后置,呆滞整改项目开发完成之后如果发现比较验证的问题,修改的成本巨大。风险后期才发现,难以回溯。
V模型主要的特点:
将测试过程细化,分为了单元测试、集成测试、系统测试和验收测试四个不同的阶段,但仍然是测试后置,没有解决风险问题。
3)W模型
Verification:验证,针对过程的正确性(正确地做某事)
Validation:确认,针对最终产品的正确性(做正确的事)
W模型特点:
将测试和开发过程分离出来,对整个项目过程中的需求文档、设计文档同样要进行测试,将测试工作前置,大大降低整个项目的质量风险。
4)敏捷模型
敏捷模型主要的特点:
就是为了适应现代互联网公司“短频快”的开发节奏而设计的一种测试和开发的模型。
Product Backlog:产品需求
迭代:每次迭代叫做一个sprint,每个sprint里面选出来要实现的需求会安排到sprint backlog里面。每个sprint一般是以一个月作为一个周期。
Product Owner:相当于产品经理。整理出项目的所有需求,并且按照需求的优先级来将需求排列到product backlog
Scrium Master:相当于组长,team manager,他统一管理组员。
组员不会直接和Product Owner进行沟通。
daily meeting:每日会议,一般是站会形式(stand meeting)。每个人发言一般不会超过1分钟,主要开发内容包括三点:昨天你做了什么,今天准备做什么,有什么风险和问题。
sprint burndown:迭代燃尽图,记录剩余的工作量有多少。
sprint review meeting:迭代的回顾会议。主要回顾在本轮迭代中存在的问题有哪些,后面如何去改进。
首先,Product Owner整理出项目的所有需求,并且按照需求的优先级来将需求排列到product backlog,整理出来后,Product Owner会决定每一轮要实现什么需求,将其归置到sprint backlog中,每个sprint会花四周的时间,期间会有一个daily meeting,daily meeting主要是快速的组建交流,所有人汇报自己每天做了什么,今天在准备做什么,有什么风险和问题,需要什么帮助;同时可以通过sprint burndown迭代燃尽图去看当前剩余的工作量有多少;经过四周的sprint 后需要有一个产出给客户;同时,组员会进行一个sprint review meeting,迭代的回顾回忆,主要回顾在本轮迭代中存在的问题有哪些,后面如何去改进。一个迭代完成后,将未完成的需求选出下一批sprint blacklog进行迭代,直到需求完成。
五)软件质量模型
蓝色的六个为内部的质量属性:(测试关注)
黄色的六个为内部的质量属性:(开发和运维关注)
关于以上第一点:
eg:如何测试一个水杯的质量
凡是问到一个产品怎么测(不管是软件还是硬件),都必须从产品质量模型所规定的8大质量属性去考虑。
关于以上第二点:
测试类型
名称 |
说明 |
对应的质量属性 |
功能测试 |
验证产品能否满足用户特定功能要求并做出正确响应 |
功能性 |
安全性测试 |
验证产品是否有保护数据的能力,并能在合适的范围内承受恶意攻击 |
功能性 |
兼容性测试 |
验证产品是否能够和其他相关产品顺利对接 |
功能性 |
配置测试 |
验证产品是否能够在推荐配置上流畅运行;验证产品为了完成特定功能的输入是否会出现故障 |
功能性,易用性 |
可靠性测试 |
验证产品在长时间运行下能否满足保证系统的性能水平;在存在异常的情况下系统是否依然可靠 |
可靠性 |
易用性测试 |
验证产品是否易于理解、易于学习和易于操作 |
易用性 |
性能测试 |
测试产品提供某项功能时的时间和资源使用情况 |
效率 |
安装测试 |
测试产品能否被正确安装并运行 |
可移植性 |
六)测试类型分类
测试阶段不同 |
代码是否可见 |
执行手段不同 |
测试目的不同 |
其他测试类型 |
|
|
|
|
|
探索性测试:即不依赖于测试用例,根据自己的经验、感觉进行测试
七)项目相关的文档
八)测试流程
按照以上步骤一:步步实现
1)需求评审
需求的来源:
1、需求评审
2、测试需求分析
为什么要做测试需求分析:
3、需求分析流程
4、测试设计与用例编写
测试设计的概念
将测试点转化为测试用例的过程,就叫测试设计。
测试用例的概念
测试用例就是一种用来说明具体如何进行测试操作并验证结果的文档
测试用例模板
九)测试用例设计方法
等价类、边界值、判定表、流程分析法(场景分析法)、错误猜测法
世界上最好的测试方法是什么?穷举法
1 )等价类法
定义:某个输入域的集合,在这个集合中每个输入条件都是等效的.如果其中某一个输入不会导致问题,则集合中其他输入条件进行测试也不可能发现问题。
有效等价类:有效等价类对程序有意义、正确的输入数据。
无效等价类:无效等价类对程序无意义、不正确的输入数据。
基本原则:
eg:要求输入年龄在18~25之间
则18~ 25就是一个有效价类,小于18和大于25就是两个个无效等价类。
等价类划分法设计步骤:
编写等价类表,为每个输入划分等价类,得到等价类表,为每个等价类规定一个唯一编号。
设计一个测试用例,使其尽可能多的覆盖所有尚未覆盖的有效等价类,重复这一步骤,使得有效等价类均被测试用例所覆盖。
设计一个测试用例,使其只覆盖一个无效等价类。重复这一步骤石得所有无效等价类均被覆盖。
2)边界值法
对于程序的输入和输出边界进行测试的一种黑盒用例设计方法,常与等价类设计法结合使用,此时它的用例来自于等价类的边界。
边界值分析法的理论基础是假定大多数的错误发生在各种输入条件的边界上,如果再边界附近的取值不会导致程序错误,那么其他的取值导致程序错误的可能性也很小,
边界值使用条件(重点:可度量)
输入条件明确了一个值的取值范围,或是规定了值的取值个数
输入条件明确了一个有序集合
如何使用括号法快速判断离点?
上点:范围中你看到的那两个点一定是上点(不管等于还是是<、>、=)
离点:
离括号更近的点,比如59,60)61 所以离点是61
一个数不可能是上点又是离点
Eg:
20
19,20,(21 79),80,81
20和80已经是上点了,所以21和79是离点
边界值法设计用例步骤
分析输入参数的类型:从测试规格中分析得到输入参数类型
等价类划分(可选):对于输入等价类划分方法进行等价类的划分确定边界:运用域测试分析方法确定域范围的的边界(上点域内点)
形成测试项:选择这些上点,离点与内点或者这些点的组合形成测试项
等价类和边界值使用场景
把输入条件分成多个不同的子条件,条件与条件之间相对独立,没有制约关系
3)判定表法
判定表是分析和表达多种输入条件下系统执行不同动作的工具,它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确
条件装(Condition Stub)
动作桩(Action Stub)
条件项(Condition Entry)
动作项(Codition Entry)
判定表的设计步骤.
判定表的合并
化简工作是以全并相似规则为目标。如果表中有两条或多条规则具有相同的动作,并且其条件项之间存在极为相似的关系,我们便将其合并
前4列不能合并,因为动作桩有一列不一样。后4列,只要条件-为o,后面也为o
两条规则:
规则一:原密码输入正确,新密码达到复杂度要求,密码修改成功且出现相应提示信息
规则二::原密码输入正确,新密码不符合复杂度要求,密码修改不成功且不出现提示
4)流程分析法
流程分析法(又名场景设计法)是将软件系统的某个流程看成路径,用路径分析法来设计测试用例。根据流程的顺序进行组合,使得流程的各个分支都能走到。这是从白盒测试中路径覆盖分析法中推广到黑盒测试中来的测试分析法
基本流:指所有操作都正确的主流程
备选流:指部分操作不正确的流程分支
流程分析法用例设计步骤:
流程图法eg.drawio
基本流:ACEF
备选流:AB,ACD
5)错误猜测法
错误猜测法就是根据经验猜测可能有什么问题并依此设计测试用例
错误猜测法智能作为测试用例的补充,而不能单独用来设计测试用例,否则可能会造成测试的不充分
错误猜测不是瞎猜,不是没有根据和目的的猜测,它需要一句对系统薄弱地方的了解和开发人员盲点的了解。
探索性测试即基于错误猜测法。
两个因素:
业务熟悉程度、编程经验的丰富度
eg:
一致一段程序能够对任意输入的列表进行排序,试根据错误猜测法写出测试点
列表eg:
a=[3,5,6,2,9]
测试点eg:
6)测试用例设计总结
测试用例设计方法很多,需清楚每种方法的使用场景:
十)测试点分析和提取
测试需求分析流程
1)测试点提取思路
表单:既有输入域又有提交按钮的页面都叫做表单页面
在企业内,一般测试点的提取有两种记录方式:
在很多企业内,如果测试时间短,无法完整地设计和熟悉额测试用例时,一般会直接写测试点来替代测试用例。
2)测试需求分析
建立需求跟踪矩阵:指跟距产品需求和测试点以及测试用例,建立一个三者映射的列表,这个列表叫做需求跟踪矩阵。
需求跟踪矩阵的作用:
十一)缺陷定义以及生命周期管理
缺陷的定义:
缺陷管理:
当测试工程师发现一个新的缺陷,提交到测试经理,是否有效的测试缺陷,测试经理检查缺陷是否重复,若是重复了则Abandon,即作废,若是未重复,则将缺陷的状态改为open,将缺陷发送到开发,开发的组长/经理确定优先级,确定是否推迟,若是则postpone即推迟,否则assign(分配),分配给对应的开发工程师。开发修复后,缺陷改为fixed状态,bug管理系统将缺陷自动的发送给测试工程师,测试validate(验证)缺陷是否修改好,若是则改为closed状态,否则开为reopen状态,将缺陷自动返回给当时的开发进行修改,修改后重复上一步骤。
描述缺陷管理流程或者生命周期,必须要写清楚两点:
2)如何填写缺陷报告
3)缺陷严重程度分类
严重性:软件缺陷对软件质量的破坏程度,即软件缺陷的存在将对软件的功能和性能产生怎样的影响。
4)缺陷的状态分类
New |
缺陷的初始状态 |
Open |
开发人员开始修改缺陷 |
Fixed |
开发人员修改缺陷完毕 |
Closed |
回归测试通过 |
Reopen |
回归测试失败 |
Postpone |
推迟修改 |
Rejected |
开发人员认为不是程序问题,拒绝状态 |
Duplicate |
与已经提交的Defect重复 |
Abandon |
被Reject和Duplicate的Defect,测试人员确认后的确不是问题,将Defect置为此状态,Abandon是一种特殊意义的Closed |
5)缺陷管理中常见的问题
依据需求,若是没有需求,则找产品经理,没有产品经理则找项目经理,说明为什么会觉得它是个缺陷,列举依据。
平时多交流;提升自己的能力,加强专业化
两个可能性:
如何区分:
观察队友,若是别人都找的到bug,那么就是第二种情况
通过开会去评审,或者通过上级去评审处理
十二)回归测试和验收测试
1)回归测试
回归测试(regression testiong):
回归测试是指修改旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。回归测试可以发生在任何一个阶段 ,包括单元测试、集成测试和系统测试。
目的:
回归测试的流程:
回归测试的策略:
选择性回归的三种方法:
针对被修改的部分,选取或重新构造测试用例验证没有错误再次发生的用例选择方法。(一般只用在时间不充足的情况)
该方法不但要包含覆盖修改法确定的用例,还需要分析修改的扩散影响,对哪些受到修改间接影响的部分选择测试用例,验证它没有受到不良影响。该方法比覆盖修改法更充分一点。(大部分情况使用此方法)
这是一种类似于单元测试的方法,在重新执行测试前,先确定一个要达成的指标,如修改部分代码100%的覆盖、与修改有关的接口60%的覆盖等,基于这种要求选择一个最小的测试用例集合。(用于修改的bug,影响面比较大,时间不足,工作量大)
2)验收测试
Alpha测试(内测):
Bata测试(公测):
特邀用户进行的测试。
一般冒烟测试和回归测试用例,是从系统测试用例这个大类里选择出来。
十四)测试报告编写
了解模板。
安装过程:
使用方式:
测试执行工作流程:
十七)MMS系统环境搭建
1)服务器环境搭建
双击bin目录下的,start.bat运行tomcat。若是一闪而过,有可能环境变量配置有问题。
搭建与使用参考:WampServer 安装使用详解 - Selier - 博客园
先关闭tomcat,再把mms.war放入webapp,再打开tomcat(bin目录中)
2)被测系统相关的配置
环境变量:实际上是一种的设置,通过这些设置可以告诉电脑我们要运行的目标文件在什么位置
拿到一个项目之后,你进入一个项目组之后,需要做的事情:
Alp说明: 图片 图像 小部件