一、按照测试目标分类
1、界面测试
肉眼所看到的一切,都需要进行测试。如,按钮的点击;输入框输入文本;下拉框的选择;其它的交互等。。。
前端开发在执行开发之前需要交互/设计的同学给出设计图(以图片的形式展示要实现的前端页面,在设计图中明确了给定了每个元素的大小、形状、颜色等等要素)
测试的方面:
①验证界面内容显示的完整性、一致性、准确性、友好性。比如,界面内容对屏幕大小的自适应,换行,内容是否全部清晰展示;
②验证整个界面布局和排版是否合理,不同板块字体的设计,图片的展示是否符合需求;
③对界面不同控件的测试,比如,对话框,文本框,滚动条,选项按钮等是否可以正常使用,有效和无效的状态是否设计合理;
④界面的布局和色调符合当下时事的发展;
2、功能测试
功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。
如何进行功能测试?
设计功能测试用例,参考需求规格说明书进行用例的编写,具体的测试用例需要使用黑盒设计测试用例的方法。如等价类、边界值、判定表法、正交法、场景法、错误猜测法等。
3、性能测试
4、可靠性测试
可靠性即可用性,是指系统正常运行的能力或者程度,一般用正常向用户提供软件服务的时间占总时间的百分比表示。
可靠性=正常运行的时间/(正常运行的时间+非正常运行的时间)*100%
可用性指标一般要求达到4个或者5个9
5、安全性测试
安全性是指信息安全,是指计算机系统或网络保护用户数据隐私、完整,保护数据正常传输和抵御黑客,病毒攻击的能力。
比如,sql注入、xss漏洞、登录模块密码一般要加密显示、数据库用户敏感信息要加密、接口返回值不能返回用户的隐私数据等。。。
安全性测试的方法有代码评审、渗透测试、安全运维等。常用的静态安全测试工具有,Coverity、IBM、Appscan Source,HPFortify,常用的动态安全测试工具有OWASP的ZAP,HP WebInspect等。其中静态安全测试是常用的安全性测试的方法。
6、易用性测试
检查产品/软件/功能是否具备简单易上手的属性。
二、按照执行方式分类
1、静态测试
所谓静态测试就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。
常见的静态测试方法有代码走查、代码扫描工具(如sonnar)等。。
2、动态测试
动态测试指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态测试,唯一的标准就是看是否运行程序。
△大多数软件测试工作都属于动态测试。
三、按照测试方法
1、白盒测试
白盒测试又称结构测试或逻辑测试,它用来分析程序的内部结构,通过程序的逻辑结构来设计测试用例来进行测试。
白盒测试的目的是,检查软件内部的逻辑结构,对软件的逻辑路径进行覆盖测试。在程序的不同地方设置检查点,观察程序状态与预期状态是否一致。
白盒测试的方法有,语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
方法解释:
if A and Bthen action1
if C or Dthen action2
①语句覆盖:要保证每条语句都执行到。在例子中,即让action1和action2都执行到。
那么测试用例可以是A=T;B=T;C=T;D=F 或者A=T;B=T;C=T;D=T 或者A=T;B=T;C=F;D=T;
②判定覆盖:每个判定都要覆盖到为真和为假两种情况。在例子中,即让A and B 为T;A and B为F;C or D为T;C or D为F;
那么测试用例可以是A=T;B=T;C=T;D=T 和A=F;B=F;C=F;D=F;(没有完全列举)
③条件覆盖:要保证每个条件都有T和F两种情况。在例子中,即让A为T,F;B为T,F;C为T,F;D为T,F;
那么测试用例可以是A=T;B=T;C=T;D=T和A=F;B=F;C=F;D=F;(没有完全列举)
④判定条件覆盖:同时满足判定覆盖和条件覆盖。在例子中,即让A and B为T;A and B为F;C or D为T;C or D为F,同时让A为T,F;B为T,F;C为T,F;D为T,F;
那么测试用例可以是A=T;B=T;C=T;D=T和A=F;B=F;C=F;D=F(没有完全列举)
⑤条件组合覆盖:同一个判定里条件T,F的相互组合就是条件组合覆盖。在例子中,第一个判定A=T,B=T;A=F,B=T;A=T,B=F;A=F,B=F。第二个判定C=T,D=T;C=F,D=T;C=T,D=F;C=F,D=F;
那么测试用例可以是A=T;B=T;C=T;D=T 和 A=F;B=T;C=F;D=T 和 A=T;B=F;C=T;D=F 和 A=F;B=F;C=F;D=F;
⑥路径覆盖:
记if(x>0&&y>0)判定为P1
记if(z<0)判定为P2
x>0,记为C1
y>0,记为C2
z<0,记为C3
则有,
数据 | C1 | C2 | C3 | P1 | P2 | 路径 |
{x=3,y=3,z=-2} | T | T | T | T | T | a-b-d-f |
{x=-3,y=3,z=-2} | F | T | T | F | T | a-c-d-f |
{x=3,y=3,z=2} | T | T | F | T | F | a-b-e-f |
{x=-3,y=15,z=-2} | F | T | F | F | F | a-c-e-f |
白盒测试总结:
1°白盒测试主要应用于单元测试阶段。
2°先执行静态设计测试用例的方法,再执行动态设计测试用例的方法。
3°设计用例一般使用路径测试,重点模块追加使用逻辑覆盖方法。
2、黑盒测试
黑盒测试就是不关心程序逻辑和内部结构,直接根据软件需求规格说明书,进行功能的测试。看输入数据之后,得到的结果是否和预期结果一致。
3、灰盒测试
灰盒测试是介于白盒测试和黑盒测试之间的一种测试。多用于集成测试时,它即关心数据的输入输出情况,又关心程序的内部结构。
灰盒测试即没有白盒测试的详细和完整,又没有黑盒对软件的覆盖范围。因此,灰盒测试不能替代黑盒测试,否则需要付出很大的代价,需要编写很多的测试用例。
4、常见面试题
你知道的测试方法有哪些,哪种用的比较多?
常见的测试方法有白盒测试、灰盒测试、黑盒测试。开发人员主要用白盒测试和灰盒测试。测试人员主要用白盒测试和黑盒测试。对于测试人员来说,相较于白盒测试,黑盒测试用的更多一些。
四、按照测试阶段分类
1、单元测试
与编码同步进行,针对软件的最小组成单元进行测试,主要采用白盒测试,从被测对象的内部结构出发设计测试用例。
测试阶段:编码前或编码后
测试对象:最小模块
测试人员:白盒测试工程师或开发工程师
测试依据:代码和注释+详细设计文档
测试方法:白盒测试
测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
2、集成测试
集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确。
测试阶段:一般单元测试之后进行
测试对象:模块间的接口
测试人员:白盒测试工程师或开发工程师
测试依据:单元测试的模块+概要设计文档
测试方法:黑盒测试与白盒测试相结合
测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响
3、系统测试
对通过集成测试的系统进行整体测试,验证系统功能性和非功能性需求的实现。
测试阶段:集成测试通过之后
测试对象:整个系统(软、硬件)
测试人员:黑盒测试工程师
测试依据:需求规格说明文档
测试方法:黑盒测试
测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
①冒烟测试:主要是查看基本功能是否正常,正常的话再进行测试。
冒烟测试一般是在开发人员开发完毕提交给测试人员来进行测试时进行的。先进行冒烟测试,保证基本功能正常,不阻碍后续的测试。
②回归测试:修改了旧代码之后,重新进行测试以确认修改没有引入新的错误或导致其它代码产生错误。
回归测试一般是在新版本上线后,对旧版本就行测试。在新功能上线后,对其它已上线的功能进行测试。
4、验收测试
验收测试也叫交付性测试,来用确定是否满足验收标准,由用户或塔器授权机构决定是否接受系统。这是部署软件之前的最后一个测试操作,也是技术测试的最后一个阶段。
测试阶段:系统测试通过之后
测试对象:整个系统(软、硬件)
测试人员:主要是最终用户或者需求方
测试依据:用户需求、验收标准
测试方法:黑盒测试
测试内容:同系统测试
五、按照是否手工测试
1、手工测试
手工测试就是由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤。
2、自动化测试
就是在预设条件下运行系统或应用程序,评估运行结果,预设条件应包括正常条件和异常条件。简单说,自动化测试是把以人为驱动的测试行为转化为机器执行的一个过程。
3、自动化测试和手工测试的优缺点
自动化测试:
优点:①节约成本;②提高测试人员执行工作效率;③保障软件的质量;
缺点:①对测试人员技术要求较高;②不能发散性测试;
手工测试:
优点:①对测试人员技术要求没有自动化技术要求高;②可以进行发散性测试;
缺点:①效率低;②人员、时间成本比起自动化测试都比较高;
六、按照实施组织划分
1、α测试(内测、a测)
α测试通常是公司内部的用户在模拟实际操作环境下进行的测试。α测试的目的是评价软件产品的FLURPS(即功能、可使用性、可靠性、性能和支持)。α测试不能由程序员或测试员完成。
2、β测试(公测、b测)
β测试由软件的最终用户们在一个或多个场所进行,这里就可以理解为,β测试是正式用户中的一部分,他们在任意的场合来使用软件,目的是为了发现软件是否存在一系列的问题。
3、α测试与β测试的区别
①测试的场所不同:α测试是在公司内部进行测试的,但是β测试是在用户环境下进行测试的;
α测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中。
β测试的环境是不受开发方控制的,用户的数量相对比较多,时间不集中。
②测试执行时机不同:通常是α测试通过后,再进行β测试
③测试持续时间长短不同:α测试没有β测试持续时间长