admin管理员组

文章数量:1620933

按照测试对象划分:

一)界面测试:参考UI设计图,所有见到的东西都需要测试

非软件:形状,大小,颜色,材质,整体是否美观;

软件:输入框,按钮,文字,图片,尺寸颜色形状,清晰度;

1)软件只是一种工具,软件和人的信息交流是通过界面来进行的,界面是软件和用户交流的最直接的一层,界面的设计决定了用户对于我们设计软件的第一映像,界面如同人的面孔,具有最吸引用户的直接优势,设计合理的界面必然可以给用户心仪的感受,用户是通过界面和软件来进行交互的,界面设计的好坏,直接影响了用户对于软件的印象;

2)界面测试又称之为UI测试,指按照界面的需求(一般是UI设计稿)和界面的设计规则,对我们软件界面所展示的全部内容进行测试和检查;

在写测试用例的时候,为什么要分成易用性,可靠性,安全性这很多个方面,这是根据不同的测试对象来进行划分的,这样测试考虑会比较全面,用单元测试测试项目,对博客系统的删除博客功能,查找博客列表功能,博客新增功能结合Junit做了单元测试 

越往底层走,测试的独立性越高,耦合性就会变低;

一)UI界面层:

1)必须要等整个软件开发完,部署整个软件,数据库服务也要提起来,渲染界面等等,这其中花费的时间是很多的,效率就会越低,咱们的单元测试只需要调用一个方法就可以了,非常的快,渲染页面,从数据库上面拉取数据

2)是一个功能验证测试,比如说咱们的一个web界面,比如说输入手机号,输入密码只能从前台进行输入,通过鼠标,所有的操作只能通过鼠标操作界面来进行完成,只能看到web前端页面,后端的代码实现细节和接口调用是咋样的,都不给予展示已经被屏蔽,也就是说不可以从后台测结果,花费时间最多;就算在UI界面层进行测试,我们也不知道哪一个方法到底写错了

缺点:花费时间最多直接对他进行测试,不能看到到底是哪一个接口使用错了,哪一个类,哪一个SQL语句,哪一个方法发生了错误,所以当我们对其投入的精力越多,输出产出比越少

兼容性测试:看看同样的网页在不同的浏览器功能显示会不会出问题,看看我们做的网站是否可以兼容不同的浏览器; 

测试方向:功能验证测试,兼容性和用户测试

二:业务逻辑层:

1)可以接触到底层的一些接口了,可以看到一个完整的输入和输出,软件组成的更小的一个单元了

2)接口测试,可以针对代码层面来进行测试,针对不同的功能模块以及他们的调用,虽然看不到程序的代码,但是输入输出是都知道的

客户端模拟测试:

1)两个开发人员对同一个系统页面的登录和测试功能进行不同的开发,对代码进行测试,开发人员A,开发同一个系统页面的登陆功能,开发人员B,开发同一个系统页面的注册功能(开发的很慢),开发人员A早早地就把活干好了,此时开发人员A想要进行测试它的登录功能,但是开发人员B还没有开发完成,我们需要注册功能的输出数据(用户名和密码);

2)此时开发人员A就可以进行模拟用户的注册功能

内外接口测试:不同系统之间的调用,例如A调用B的web接口,不同的公司的一个接口的调用

测试方向:客户端模拟测试,内外接口测试

三:数据处理层:

1)单元测试,可以看到完整的代码,对代码的某一个类和方法进行测试,这样也越来越高效率了;

2)先看出错的功能调用的是哪一个接口,他又调用了哪一个类中的哪一个方法,这样逐层的解析问题;

万能公式:

功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试

测试分类:按照测试对象来划分:文档内存兼容性,界面易用可双安

文档测试+内存泄漏测试+兼容性测试+容错性测试+性能测试+界面测试+易用性测试+可靠性测试+安装卸载测试+安全性测试

1)验证界面内容布局的完整性,一致性,准确性,友好性,当用户打开这个界面第一感觉用户是否有好,操作是否有好,展示是否有好,必须符合UI设计稿;

2)验证整个页面布局或者是图片文字排版是否合理要符合当下实事,不同的板块,字体的设计,图片的展示包括颜色大小尺寸高度清晰度是否符合需求,布局要合理,各个模块的位置要符合大众的使用习惯,或者有合适的引导;

3)对界面不同控件进行测试,比如说对话框,文本框,滑动条,选项展示按钮功能正常形状颜色大小尺寸高度确认登陆按钮有效和无效的状态是否可以区分是否合理有效置亮,失效置灰,不能点击;

密码是否加密

输入框是否支持不同字符输入

输入框是否支持删除

验证码大小写是否进行区分?把输入的搜索信息的前后空格忽略

4)当前的页面的颜色和步调是否符合当下的时事的发展,给用户视觉的友好;

5)文字是否有错别字,文字折叠,病句测试;

6)测试界面的自适应性界面适应不同的页面屏幕大小,换行和内容是否全部清晰的展示,手机,iPad,电脑屏幕,界面从小到大的过程中,功能完整,文字完整,图片完整,清晰度不变,不出现叠加,消失,功能无法展示的情况;

cookies/session测试

cookies/session通常用来存储用户信息,Cookie通过在客户端记录信息确定用户身份,session通过在服务器端记录信息确定用户身份。

cookies/session测试同理,测试的内容可包括:

1)打开WEB系统后,在浏览器默认存储cookies的目录下看此cookies目录是否存在

2)已知cookies的保存时间,测试时间范围之内和之外的cookies文件是否正常

3)将浏览器下的所有cookies文件全部删除,再次登录web系统,会怎么处理

界面常见的错误: 

1)不合适的快捷键:g下面有横线 

2)文字的丢失:

3)文字截断:4)输入框没有对齐

5)文字没有自动换行:

6)文字重叠:

7)不合适的快捷键

二)可靠性测试

1)可靠性指的是可用性,指的是软件正常运行的能力一般是表示系统正常的运行的能力或者程度,一般向用户提供软件服务的时间占总时间的百分比表示

2)可靠性=软件正常运行时间/软件正常运行时间+软件非正常运行时间

3)系统非正常运行的时间可能是由于硬件环境,软件安装环境,网络故障或任何其他因素,如断电造成的,这些因素能让系统停止工作,或者连接中断不能被访问,或者性能急剧降低导致不能使用软件现有的服务等

4)不同的软件对于可靠性的要求是不一样的,软件分成非实时性软件和实时性软件

分情况讨论:

1)微信客户端APP:

手机本身出现问题而导致微信软件不能正常工作是不能算在计算可靠性的因素里面

2)微信服务器端:微信服务器是部署到linux服务器上面的,但是由于linux环境出现问题,那么这个时间就要计算在可靠性里面;

如何来测试软件的可靠性?

让软件运行一个星期,把出现故障的时间记录下来,去计算百分比

三)容错性测试:

容错性测试指的是指系统能够处理发生的异常,用户的错误操作而不至于软件系统内部崩溃,从而能够提高系统的可用性,系统内部对于处理这些突发情况的表现;

容错性测试包含以下方面:
1)输入异常数据或进行异常操作,以检验系统的保护性,如果系统的容错性好,系统只给出提示或内部消化掉,而不会导致系统出错甚至崩溃;
2)灾难恢复性测试,通过各种手段,让软件强制性地发生故障,然后验证系统已保存的用户数据是否丢失,系统和数据是否能尽快恢复

四)文档测试:

通常是说在需求评审的时候测试人员需要进行需求分析,这就是文档测试

文档测试的关注点:

1)文档的术语

2)文档的正确性

3)文档的易用性:容易看懂

4)文档描述功能的完整性

5)文档的一致性:软件上面具有的,功能文档里面也要有

五)兼容性测试:

在不同的硬件设备以及软件资源的情况下,功能是否可以正常的使用

5.1)软件自身的版本兼容性:

软件前后的兼容性,软件开发的新功能不能影响到旧的功能的使用,软件开发的新功能不能影响到后续的功能的开发,软件自身的历史版本和新版本功能要一致

5.1)浏览器的兼容性测试:Chrome浏览器,Firefox浏览器,edge浏览器,后面要加上版本以及多少位;

5.2)系统的兼容性测试:linux,windows,Mac,鸿蒙,安卓,苹果,后面也要加上版本以及多少位;

5.3)终端的兼容性测试:PC端还是移动端,手机平台,手机系统版本;

5.4)其他软件的功能兼容性:百度APP有直播业务,小说,贴吧,好看视频里面都有小说的入口,通过矩阵产品来进行引流;

5.5)软件和其他第三方软件数据的兼容性,百度APP的账号是否可以正常登录百度网盘的账号,淘宝支付需要用到支付宝,淘宝的购物物流信息同步到支付宝里面的信息;

第三方登录:QQ登录,微信登陆,微博登录,钉钉登录 

六)易用性测试:用户体验测试

1)软件是否具备简单易上手的特性

2)易用性:需要具备便捷,简单易上手的属性

3)假设我是一个从来都没有使用过这个产品的用户,我首次使用是否可以尽快上手,是否符合用户的使用习惯,一个页面登录注册是否摆在了合适的位置,主功能的一些入口;

一)符合标准和规范

1)安装软件的界面,界面上的文字引导;

比如说安装软件的时候,要选择选择软件安装的位置,安装软件的时候会有进度条,安装完成之后是否要打开?

2)颜色标识

3)直观性

用户期望的操作在用户可见的范围之内,各个功能用户要可以看到,比如说在日历上面各个节日的标注是很合理的

4)灵活性和舒适性

键盘:九宫格,全键盘,手写,拼音

5)舒适性:文件不给进度条

6)实用性:B站首页不能推荐各种文章

7)是否支持复制粘贴,语音输入,描述是否清楚;

七)安装和卸载测试:

1)软件不同的安装和卸载途径方式,PC端下载,手机端

应用商店,安装包,第三方软件安装,命令行安装

2)应用是否可以在不同的环境系统,版本下安装,安装兼容性;
3)安装或者卸载过程中是否可以手动暂停,暂停之后是否可以安装和卸载;
4)安装软件的时候空间不足的时候系统是否有提示,提示信息是否明确和友好?
5)是否可以正常的卸载软件,如果卸载取消了,那么软件可以正常使用,那么在开始卸载的阶段到取消卸载的这个阶段之间删除的数据或者文件要能够回滚;

6)桌面删除,第三方软件删除,还有命令行删除

7)应用卸载之后所有的安装文件夹还有数据是否成功的全部进行删除?
8)卸载和安装过程中出现异常,软件是否可以正常并且合理的应对,比如死机,断电,断网等,在我们手机写在过程中出现死机,断电,重启等一些外部的突发情况,带我们的环境恢复之后是否可以重新的进行卸载呢?

9)旧版本是否能够进行卸载

10)旧版本是否能够进行安装

11)新版本是否能够进行卸载

12)新版本是否可以进行安装

八)弱网测试:通过Fiddler做弱网测试

1)2G 3G 4G 5G和wifi网络环境,手动设置带宽,各个功能可以正常运行;

2)网络异常的时候,数据交换失败是否会有提醒,是否会自动给出提示,请检查网络设置;

3)从有网再到无网再到有网环境过程中,数据是否可以正常恢复,自动进行加载;

4)三大运营商的网络环境都要进行测试,电信移动还有联通;

九)性能测试: 

假设有1000个人去并发同时请求服务,看看软件是否抗造

十)安全测试:

安全性指的是:信息安全,软件保护用户的数据,隐私,以及数据传输过程中的安全性,防止病毒侵入和黑客攻击;

1)针对于软件功能来说,看看软件功能是否崩溃,SQL注入问题

XSS漏洞(黑客传入JS脚本,到直接页面没法使用)

2)垂直越权,下级员工可以看到上级员工的才看到的隐私数据;

3)水平越权,平级成员之间不允许互相访问的私有数据也可以看到了;

4)SQL注入:比如说咱们平时写的一些项目,涉及SQL的增删改查,比如说有一个搜索界面,需要用户传入一个id,然后后端通过这个id拼接到查询的SQL语句中进行查询

127.0.0.1:8080/Java100?id= 4 or 1=1

select * from data where id=${id}

结果就会全表数据返回

select * from user where userID=20;
select * from user where userID=20 or 1=1;

造成用户信息泄露,太过于信任用户没有对用户输入的参数进行严格的校验

5)伪造Cookie中的SessionID让其登陆成功;

6)上传文件,上传数据要防止被拦截

7)防止爬虫爬取信息

8)接口的查询:直接跳过前端的JS去访问后端代码,看到请求参数是否加密,响应是否返回了重要数据

按照是否查看代码划分:

1)黑盒测试:把代码看作是一个黑匣子,不关心内部结构和内部特性,只是关心功能是否符合产品规格说明书的要求,可以构造非常多非常多的一个输入条件,在根据输入条件对应的一个输出来检测是否符合产品需求又被称之为数据驱动测试或者是功能测试;

黑盒测试就是在完全不考虑程序逻辑和内部结构的情况下,检查系统功能是否按照需求规格说明书的规定正常使用,是否能适当的接收输入数据而输出正确的结果,满足规范需求;

黑盒测试就是构造尽可能多的测试用例来覆盖我们的产品的测试

测试的时候只关心输入和输出,不去看具体的功能的内部逻辑,不去关心代码程序具体的实现,代码已经进行屏蔽,只是关心软件功能的外部的输入和输出是否满足用户的需求

相当于把代码的内部实现给屏蔽掉了

黑盒测试用到的测试方法有:等价类,边界值,判定表,正交法,场景法,错误猜测法等,但是等价类和边界值有时候也会应用到白盒测试里面

重要:

1.1)不用去关心软件内部逻辑的实现和代码;

1.2)站在用户的角度去设计测试用例,容易培养出产品思维,因为用户不会关心产品实现细节,而是产品的功能好不好用,慢慢的对业务熟悉了,对产品熟悉了,就可以做产品经理了

1.3)设计测试用例是根据软件需求来设计的,是不容易遗漏需求的,黑盒测试是产品功能最广的测试;

2)白盒测试:又被称之为结果测试或者是逻辑驱动测试,检查程序内部的逻辑结构以及程序内部的执行状态是否符合预期,要从代码角度来发现问题

详细的测试代码程序,检查程序的运行状态;

3)灰盒测试:基于白盒测试和黑盒测试之间,既要关心功能输入和输出,又要关心程序内部的逻辑结构和内部结构,通常用在集成测试阶段由开发人员来进行测试的,因为开发人员写代码的时候,通常是一个模块一个模块的写出来,将各个模块集成在一起形成一个比较大的功能,集成测试的时候将模块集成起来,看代码功能是否符合要求;

白盒测试的方法:单元测试

1)语句覆盖法:写一段代码对源代码中的每一条语句都能执行到;

2)循环覆盖:while,do while,for循环,对循环中的每一条语句在都要走一遍;

3)逻辑覆盖法:路径覆盖,条件覆盖,判断覆盖,条件组合,判定组合

3.0)判定覆盖:if else switch case try catch finally

if(A)
{
}else if(C&&D)
{
}else(B)
{
}
A为真走一遍,A判定为假走一遍

3.1)判定覆盖:判定为真走一遍,判定为假走一遍,他只判定一个具体的结果,对于判断语句,在设计用例的时候,要设计判断语句结果为True和False的两种情况

3.2)判定组合覆盖:A&&B&&E

true:A     B    E都为真;

false:A为假,B,E为真,B为假,A,E为真;E为假,A,B为真;A,B,E都为假

3.3)条件覆盖:A,B,C可能取到的值都测一遍,设计用例时针对判断语句里面每个条件表达式true 和 false各取值一次,不考虑判断语句的计算结果

if(b==0)这个时候条件覆盖就分成b==0,b>=0,b<=0的情况

等价类:

a>1)等价类:a大于1,a小于1

        边界值:2,1,0

b=0)等价类:b等于0或者是b不等于0

        边界值:-1   0   1

          

问题)已经有了灰盒测试,那么为什么还要进行使用白盒测试和黑盒测试呢?

1)灰盒测试没有白盒测试详细,完整;

2)灰盒测试还没有黑盒测试产品覆盖范围那么广,因为黑盒测试是覆盖产品功能范围最广的测试,所以说灰盒测试是不能取代黑盒测试和白盒测试的,但是黑盒测试通常用于集成测试

3)但是黑盒测试可以取代灰盒测试,但是不建议,需要消耗很多的代码,需要设计很多很多的测试用例,效率低下;

重要)常见的测试方法有哪些?哪种测试方法用的多?

1)白盒测试和黑盒测试,要在工作中需要结合实际情况来结合白盒测试和黑盒测试,来提高测试效率;

2)通常来说测试人员使用黑盒测试方法要多一些,测试人员首先需要使用黑盒测试方法功能和软件是符合产品需求的,除此之外,也需要通过白盒测试去查看代码内部逻辑结构去通过不同的代码设计去想还有没有一些可能的情况会造成代码出现问题,通过白盒测试来对代码进行补充,根据具体情况具体分析,是要保证功能符合用户的需求;

按照开发阶段来划分:

1)单元测试:

针对系统最小单元进行测试最小单元是人为规定的,并没有一个明确的范围

测试人员:白盒测试工程师或开发工程师,在编码完成之后进行测试;

对程序的一个最小的单元进行测试,这个单元可能是一个类,也可能是一个方法

2)集成测试:按照一定的策略和逻辑把单元模块组装在一起,形成一个具有完整的功能大的功能模块(if else),就是通过接口把很多方法组合在一起进行测试,通常由开发人员进行的

2.1)测试阶段:在单元测试之后;

2.2)测试对象:接口之间的调用

2.3)测试方法:黑盒和白盒相结合,灰盒测试

2.4)测试人员:黑盒测试工程师,白盒测试工程师

2.5)测试依据:

概要设计文档(V模型左边的开发设计,功能模块设计文档),集成测试文档,详细设计文档

2.6)测试内容:

接口之间数据的传输(A调B,B调C)是否正确,组成模块之间的单元的接口的测试

全局数据结构:把很多的单元模块组合在一起,可能会定义一个全局变量,但是这个全局变量可能在不同的模块中进行扭转,我们就要看这个变量的数据在变化下是否是对的;

模块功能的正确性

单个功能模块的缺陷对整体(多个单元模块)的影响

当一个单元模块有问题的最终是否要修改取决于单元模块在整个系统中的错误和影响大小

模块与模块之间的功能冲突

接口测试,多种输入配合着不同的输出

模块功能的正确性

2)数据会不断地进行流转,某一个模块的输出可能作为另一个模块的输入,一点点的偏差就会对整体的数据流动有影响

局部数据结构测试和全局数据结构测试出现在哪一个测试阶段????

单元测试和集成测试

3)系统测试:

集成测试完成之后,测试人员要准备项目环境,将程序模块看成是一个整体,对程序或者是系统进行系统测试,保证系统的功能符合产品规格说明书的要求;

3.1)回归测试:对历史版本,历史功能进行测试,保证产品迭代之后原有的功能是符合需求的,主要就是随着功能迭代越来越多,版本越来越多回归测试的难度要大一些,可以采用自动化测试来降低回归测试的难度要保证本次版本的功能是正常的还要保证历史功能是正确的

3.2)冒烟测试:冒烟测试通常是在集成测试之后因为集成测试通常是由开发人员来进行测试,开发人员完成集成测试之后,会把产品交给测试人员,再来由测试人员进行执行来检查系统的主要功能和主要的流程是否正常,评估软件或者是系统是否具有可测试的标准,主要流程都走不通,直接打回给开发人员,主要是测试系统是否具有可测性,主功能没有实现,主流程走不通直接打回;

系统测试:系统已经开发完了,对整个软件进行一个全面的功能和非功能测试,包括软件所运行的硬件环境

测试阶段:集成测试之后

测试方法:黑盒测试方法

测试人员:黑盒测试工程师

测试依据:需求设计文档

测试内容:功能 界面 易用性 性能 安全性 兼容性 可靠性看看是否符合测试需求和软件需求

系统测试和集成测试的区别有以下几个方面

1)测试对象不同:

系统测试对象是整个系统包括系统中的硬件等

集成测试对象是模块之间的集成和调用关系

2)测试方法不同:

系统测试一般由独立测试小组采用黑盒方式来测试

集成测试一般由开发小组采用白盒加黑盒的方式来测试

系统测试的常见两种测试方法:

1)回归测试:属于系统测试

1)系统在增加新的功能的时候会加入新的代码或者是软件进行版本迭代

2)或者在修改BUG的时候会增加新的代码,新的代码的产生或者是新的功能很有可能会影响到以前的老功能

就要进行回归测试,当系统引入新的代码之后,每当一个软件进行更新增加新的功能的时候,并且当功能越来越多的时候,回归测试的投入成本与时间也越来越多,所以评估回归测试的策略很重要,估计他的新增功能或者对老功能的影响范围做一个评估,支队增加新功能影响到的老功能进行回归测试;

当系统引入了新的代码之后,测试人员往往需要验证新的代码对旧的功能的影响,所做的测试就叫做回归测试,当增加新功能的时候或者修改BUG的时候,就要引入新代码,比如说版本迭代,因为回归测试代价比较大,所以要写自动化脚本做自动化测试

自动化测试:写一个脚本,做回归测试的时候,只需要对新功能写一些测试脚本就可以了,所以评估回归测试的范围是非常重要的,需要借助自动化进行回归测试;

2)冒烟测试:属于系统测试,是一种特殊的测试,就是对系统的主要功能和核心功能进行测试,是评判系统是否进入到测试环节的依据和原则;如果说冒烟测试都没有通过,那么就把2.1)这段代码打回给开发人员,是一种准入原则,你先保证主要的业务逻辑和功能是正确的才会进行测试

提测用例:很少,主要是针对本次迭代的主要功能和系统的核心流程进行测试用例的分析

2.2)在软件开发完成之后,要对软件的基础功能和核心流程进行测试,测试通过之后,我们才可以正式的测试环境,如果测试不通过,测试人员可以有权力打回,让开发人员修改直至冒烟成功;

4)验收测试:

通常指的是用户来进行验收测试,目的就是为了验证产品或者程序符合用户的需求,实际上通常是由产品同学或者运营同学来进行验收测试;

客户按照用户的需求对系统进行测试

测试阶段:系统测试过后

测试依据:用户需求

测试对象:整体的软件系统

测试方法:黑盒测试

测试人员:用户

测试内容:

1)与系统测试一致

2)文档测试(软件设计文档,功能设计文档,用户使用手册,详细的产品功能使用文档等)

拿这些文档和系统功能进行对比,才能进行上线

本文标签: 测试软件产品设计用例篇