瀑布模型
开发将系统都做好了,然后测试。最大问题是测试工作后置,导致整个项目开发完成之后如果发现比较重要的问题,修改的成本是非常大的。
V模型
将测试过程细化,分为单元测试,集成测试,系统测试和验收测试,但没有解决测试后置问题。
W模型
将测试和开发过程分离出来,对整个项目过程中的需求文档,设计文档同样要进行测试,将测试工作前置,大大降低整个项目的质量风险。
敏捷模型(目前流行使用)
主要特点就是为了适应现代互联网公司的“短频快”的开发节奏而设计的一种测试和开发的模型。
迭代:每次迭代叫做一个sprint,每个sprint里面选出来要实现的需求会安排到sprint backlog里面。每个sprint一般是以一个月作为一个周期。
通俗的理解就是一个系统有很多的功能模块,每次迭代取出一个或几个功能实现,然后进行测试,测试没有问题就上线发布。
其他模型
还有H模型,X模型,前置模型
按阶段划分
单元测试:某个特定函数的行为。开发人员进行白盒测试。
集成测试:模块之间的依赖接口。以黑盒测试为主,使用postman进行接口测试。方法有非增量式集成测试(一步到位),增量式集成测试(自顶向下增量式,自低向上增量式,三明治集成)。
确认测试:软件功能,性能及其他特性是否与用户要求一致。以黑盒测试为主,包括功能测试,兼容性测试,压力测试。
系统测试:整个软件系统与计算机硬件。以黑盒测试为主,包括功能测试,兼容性测试,压力测试。
验收测试:用户参与测试。以黑盒测试为主,是用户对软件最终检查。
按执行状态划分
动态测试:运行被测试的程序,构造测试实例,执行程序及分析程序的输出结果
静态测试:不运行被测试的程序
按测试技术划分
白盒测试:检测产品内部的结构及检验程序中的每条通路是否都能接通,按照预定要求正确工作。
黑盒测试:不考虑程序内部结构和特性。
灰盒测试:测试各个组件之间的逻辑关系是否正确,采用桩驱动把各个函数按照一定的逻辑串起来。
按执行主体划分
验收测试:开发者和用户共同去检测与证实。
用户测试:通过用户大量使用的评价,检查软件,用户使用性测试。
第三方测试:第三方测试机构来进行
按不同手段划分
手工测试
自动化测试(通过工具或者代码)
按测试产品划分
移动端测试
web端测试
按测试包含的内容划分
功能测试
界面测试
安全测试:关注指标为数据要加密传输,防止溢出,sql注入,抓包工具获取信息,病毒攻击,数据存储。
兼容性测试
易用性测试
可靠性测试
安装测试:下载安装,卸载,重新安装,中断等。
性能测试:关注指标有CPU,内存,响应时间,闪退,卡顿。
按测试流程划分
冒烟测试:目的是为了测试这个需求的主流程,主干功能是否正常。
需求测试:测试新开发的需求功能是否正常。
回归测试:测试整个系统功能是否正常,没有被新开发的需求影响出错。
回归测试策略:
1.完全回归
2.选择性回归(3种方法)
a.覆盖修改法:针对被修改的部分,选取或重新构造测试用例验证没有错误。
b.周边影响法:包含覆盖修改法确定的用例,还需要分析修改扩散影响,对那些收到修改间接影响的部分选择测试用例验证它没有错误。
c.指标达成法:类似单元测试的方法,在重新执行测试前,先确定一个要达成的指标,如修改部分代码100%覆盖,与修改有关的接口60%的覆盖,基于这种要求选择一个最小的测试用例集合。
目的
检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
原则
证伪而非证真,
尽早地和不断地进行测试,
重视无效数据和非预期的测试,
对测试结果做全面检查,
测试现场保护和资料归档,
程序员应避免检查自己的程序,
注意群集现象,
用例要定期评审。
测试计划:了解测试需求,安排测试人员,时间及资源。
测试设计:根据测试需求提取测试要点,编写测试用例
测试开发:建立可重复使用的自动化测试过程。(可有可无)
测试执行:冒烟测试,需求测试,回归测试。执行测试用例,提交bug,跟踪bug,验证bug被解决。
测试评估:确保缺陷全部被解决,编写测试报告。
通俗理解:开发给测试讲解需求,然后测试从需求提取测试要点,出一个思维导图,然后编写测试用例,开始进行冒烟测试,主干流程能走通之后进行需求测试,如有bug,则跟开发沟通,待bug解决之后再次验证,最后进行回归测试,对系统其他功能进行测试,看是否有被新加入的功能影响到,测试没有问题之后,就写测试报告,总结一下此次测试,最后与开发沟通封版,上线。
初级测试工程师—中级测试工程师—高级测试工程师—测试组负责人—测试开发
黑盒测试划分
功能测试:逻辑测试,界面测试,易用性测试,安装测试,兼容性测试
性能测试:一般性测试,稳定性测试,负载测试,压力测试
黑盒测试方法
(1)等价类划分
有效等价类:合理的,有意义的输入数据构成的集合
无效等价类:无意义,不合理
比如:密码8-10位
有效等价类:8-10位密码 。 无效等价类:0-7,10位以上
(2)边界值分析
一般边界值分析:取值为min,min+,normal,max-,max,测试用例数为4n+1。
健壮性边界值分析:取值为min,min+,min-,normal,max-,max,max+,测试用例数为6n+1
比如:8-16位
一般边界值分析取值:8,9,8-16其中一位,15,16 。 健壮性边界值分析:7,8,9,8-16其中一位,15,16,17
(3)决策表
(4)因果图
适用于描述多种输入条件组合,相应产生多个动作的方法。原因-结果图,约束图
(5)场景法:基本流即软件操作步骤,备选流即操作过程遇到的问题。
几类错误
功能不正确或遗漏
界面错误
数据库访问错误
性能错误
对代码的测试,一般由开发完成。
白盒测试划分
静态白盒测试:不执行的条件下审查软件设计,体系结构和代码
动态白盒测试:通过查看并使用代码的内部结构和执行测试
白盒测试方法
逻辑覆盖法:语句覆盖,判定覆盖,条件覆盖,条件判定覆盖,修正条件判定覆盖,条件组合覆盖,路径覆盖。
路径分析法:绘制控制流图—计算复杂性—确定独立路径的集合—测试用例生成
控制结构测试:条件测试(<,=,or),循环测试(简单循环,嵌套循环,串接循环),路径覆盖(舍弃一些次因素,减少路径的数量,只考虑通过循环体零次和一次这两种情况)
数据流测试:变量定义测试,程序片法。
缺陷内容
缺陷标识:使用数字序号表示
缺陷类型:功能,用户界面,文档,软件包,性能,系统/模块接口
缺陷严重程度:致命,严重,一般,较小
缺陷产生的可能性:总是,通常,有时,很小
缺陷优先级:立即解决,高优先级,正常排队,低优先级
缺陷状态:激活或打开,已修正或修复,关闭或非激活,重新打开,推迟,保留,不能重现
缺陷来源:需求说明书,设计文档,系统集成接口,数据流(库)
缺陷流程:开始—打开—已分配—已解决—已验证—已关闭—结束
缺陷分析方法
缺陷分布分析
缺陷趋势分析
注入-发现矩阵分析
bug状态标准
待处理:发现新问题后提交的状态
已确认:经测试人员及研发人员讨论后确认是bug,提交的状态由测试人员来设置
已处理:经研发人员确认是BUG后修复的状态,修改还没有验证
已修改:测试人员认为问题已经修改,通过验证,由测试人员设置
仍存在:测试人员认为BUG未修复成功,问题仍然存在,由测试人员设置
不是问题:研发人员确认不是BUG
暂不处理:当前版本不做修改,后续版本再考虑,由研发人员或测试人员设置
对于干测试有用的证书,另外其他IT行业的有用证书。在找工作的时候属于加分项。不一定非要考证,有兴趣有时间的话也可以当作一个学习的目标。
软件测试
计算机等级考试(二级)
计算机等级考试(三级)
国际软件测试资质认证项目ISTQB(基础级)
项目管理专业人员资格认证(PMP)
软件测评师(软考)
系统集成项目管理师
国际软件测试资质认证项目
开发
软件设计师
系统集成项目管理师
信息系统项目管理师
前端app开发:Android(Java,Kotlin),IOS(Objective-C,Swift)开发语言认证
业务需求分析
系统分析师
产品经理国际资格认证(NPDP)
质量保证
软件评测师
注册软件质量保证师
数据开发
大数据助理工程师(ACA)
大数据工程师(ACP)
数据治理
助理数据治理师(CDGA)
高级数据治理师(CDGP)
信息安全
ISO27001
CCNA
国际信息系统审计师(CISA)
CCNP
BS7799LA
注册信息安全专业人员(CISP);同等标准资质或中级职称
防病毒专业认证
信息系统安全专业认证(CISSP);同等标准资质或中级职称
运营族-项目管理
软件造价工程师
系统集成项目管理师
项目管理专业人员资格认证(PMP)
信息系统项目管理师
拥有社会或行业认可的中高级职称/专业任职资格
适合自动化的项目
需求稳定,不会频繁变更
研发和维护周期长,需要频繁执行回归测试
需要在多种平台上重复运行相同测试的场景
性能,兼容性通过手工测试无法实现,或者手工测试成本高
被测软件的开发较为规范,能够保证系统的可测试性
测试人员具备一定的编程能力
自动测试原则
一般集中在需要重复测试的基本功能,基本业务流以及正向路径操作,不要复杂的异常测试,不要复杂业务流程操作
用例之间保持独立性,最好不要形成依赖关系
自动化测试如果对数据进行了修改,在测试结束后,应尽量保持还原,避免对其他用例执行产生影响
每个自动化测试用例只能验证一个功能点
自动化测试的LOVE四步法
等价类划分法
有效等价类,无效等价类
边界值分析法
错误推测法
根据经验或直觉推测程序中可能存在错误
判定表法
适合逻辑判断复杂的场景,通过穷举条件获得结果
正交实验法
在各因素互相独立的情况下,设计出一种特殊的表格,找出能以少数替代全面
因果图法
场景法
大纲法
测试用例基本要素: 编号, 标题, 重要级别, 输入限制, 操作步骤, 预期结果.
(1)界面测试问题
(2)功能测试(连接,按钮,本身应该具有的功能,提示问题)
(3)表单测试(边界值测试,等价类测试,异常类测试)
1)文本框测试常见验证点
2)特殊输入域测试常见验证点
3)单选按钮
只能选一个, 保存信息正确, 不能不选(没有默认值)
4)复选框
全选, 部分选, 全不选, 查看保存结果是否与所选择的一致
5)大块文字区域
输入数据>最大字符; 输入数据=最大字符; 不输入任何数据; 在Firefox或Chrome浏览器下,大块文字区域的右下角一般都可以拖放,尝试用鼠标进行拖放,检查会不会导致界面很难看或滚动条消失
6)下拉列表框
条目内容正确,无重复条目,无遗失条目; 执行列表框中每个条目的功能
7)排序
正序排列,反序排列; 从A到Z排序; 数字大小顺序; 如果有分页,检查是否先排序再分页
8)分页
9)搜索框填充域
10)特殊字符处理
11)转义字符
在文本框中输入"\n"和"\“,检查输出是否相同,如果和用户输入的不一样就是缺陷.
在文本框中输入’||”
12)多次快速提交问题:连续多次点击同一个按钮,会不会报错
13)共用页面session问题
14)页面刷新问题
15)浏览器前进/后腿按钮问题
安装
首次安装
重复安装(保持程序运行,再次安装)
卸载
程序自身卸载程序
windows控制面板里卸载
卸载是否干净
卸载后,是否可以再次安装
程序卸载是否影响其他程序或系统运行
UI
页面美观
不同的操作系统
调整机器的分辨率
手机端
手机网络多样化: 2G,3G,4G,5G,wifi,无网络,中途切换网络,中途中断网络
系统多样化:IOS,安卓等
分辨率多样化,屏幕尺寸
实现手机与计算机联系:豌豆荚,360手机助手,腾讯手机管家(安卓系统),91手机助手for iphone
手机的日志获取:alogcat.apk—安卓手机上获取log
什么是安全测试
安全测试是一种软件测试,可发现软件应用程序中漏洞,威胁和风险,可以防止来自入侵者的恶意攻击。
如果产品有高危漏洞,不小心被黑客袭击,导致服务器瘫痪或资金损失,重要数据泄漏和丢失,或者服务器资源被黑客恶意利用,会导致公司业务无法正常运转或损失惨重。
安全测试的目的
(1)提升产品的安全质量
进行安全测试,可以找到安全漏洞,例如常见的SQL注入,跨站点请求伪造CSRF,跨站脚本攻击XSS等安全问题。
(2)降低修复成本
在产品发布前找到安全问题,并予以修复,可以大大降低修复成本。
(3)度量安全等级
通过安全测试,我们能发现安全问题,进行评估系统的安全等级。
安全测试的七种类型
(1)漏洞扫描:自动软件针对已知的漏洞扫描系统。
(2)安全扫描:手动或自动识别网络和系统弱点的技术。
(3)渗透测试:渗透测试是关于安全测试的,它有助于识别系统中的漏洞。
(4)风险评估:包括对系统中可能的风险进行分析,风险分为低,中,高三种。
(5)安全审计:完成对系统和应用程序的检查,以检测漏洞。
(6)道德黑客:为检测系统中的缺陷,而非个人利益对系统进行的黑客攻击。
(7)态势评估:将安全扫描,道德黑客和风险评估结合起来,已显示组织的总体安全态势。
什么是安全漏洞
安全漏洞是指受限制的计算机,组件,应用程序或其他联机资源的无意中留下的不受保护的入口点,漏洞是硬件软件或使用策略上的缺陷,他们会使计算机遭受病毒和黑客攻击。
常见的安全漏洞有哪些
(1)SQL注入
SQL注入是一种比较常见的高等级漏洞。SQL注入就是没有过滤从页面传至接口的字符,攻击者通过恶意的SQL查询插入到输入参数中,在后台服务器上解析进行执行,最终导致数据库信息被篡改或泄漏。
(2)跨站点请求伪造csrf
攻击者盗用你的身份(借用你的token),以你的名义发送恶意请求,而你却不知情。恶意攻击者往web页面里插入恶意的HTML代码,当用户浏览该页之时,嵌入其中web里面的HTML代码会被执行,从而达到恶意目的。
(3)跨站点脚本攻击XSS
指利用网站漏洞从用户那里恶意盗取信息。用户输入中可加入JS等破坏性的代码,而程序没有进行过滤,还执行了这些代码,达到了恶意攻击的目的。
主要有存储型,反射型和DOM(基于文档对象模型)三种类型。
存储型:攻击的数据会保存到数据库,一般存在于post 的请求或者get的请求。
反射型:攻击的数据,不保存在数据库,属于一次性的,一般在get请求参数中构造,与存储型的危害差别不大。
DOM:没有访问服务端,属于纯前端的行为。
(4)越权
需要手动覆盖。主要分为水平越权和垂直越权。
水平越权:在业务系统中,本来用户A只能对自己的个人信息进行增删改查,但是通过抓包,修改用户id(一般用户id都是递增的),可以获取到其他人的个人信息,或者账号A将自己的个人信息页面通过浏览器发送给用户B,用户B登录系统后可以看到用户A的信息,这就是水平越权了。
垂直越权:在业务系统中,本来用户A对某条记录只有查看的权限,但是通过抓包,可以对记录进行修改。
(5)密码传输未采用复杂加密方式
例如密码仅仅采用md5的加密方式,可通过撞库反解密码。
(6)未授权的SQL查询执行
对不合法的请求进行了正确的响应,例如去除请求参数,清除HTTP请求体或修改请求方法等等,最后还是返回了状态码200,期望返回除200外的其他状态码。
(7)恶意站点链接
网站中存在恶意站点链接,存在跳转链接,但是要人工自行识别。
移动端有app,小程序,微信公众号等。
移动端测试类型
功能,中断,UE(用户体验),安装和卸载,兼容性,稳定性,性能,网络,电量。
测试的方式
(1)真机测试(系统测试后期)
(2)模拟器(开发阶段,前期测试,比如MuMu模拟器)
(3)云测平台(通过云测平台进行大规模机型测试,如Test Bird
移动端与PC端区别