一、为什么要对软件测试进⾏分类?
软件测试是软件⽣命周期中的⼀个重要环节,具有较⾼的复杂性,对于软件测试,可以从不同的⻆度 加以分类,使开发者在软件开发过程中的不同层次、不同阶段对测试⼯作进⾏更好的执⾏和管理测试 的分类⽅法简单来说,很多测试的名称,需要了解每个测试是干什么的。
二、按照测试⽬标分类
2.1 界面测试(UI测试)
⼀般包括如下内容:• 验证界⾯内容显⽰的完整性,⼀致性,准确性,友好性。⽐如界⾯内容对屏幕⼤⼩的⾃适应,换⾏,内容是否全部清晰展⽰;• 验证整个界⾯布局和排版是否合理,不同板块字体的设计,图⽚的展⽰是否符合需求;• 对界⾯不同控件的测试,⽐如,对话框,⽂本框,滚动条,选项按钮等是否可以正常使⽤,有效和 ⽆效的状态是否设计合理;• 界⾯的布局和⾊调符合当下时事的发展。(每个软件都有自己的风格和主色调,例如淘宝就是橙色、支付宝就是蓝色、美团就是黄色的)
界面自适应
例如:
正常情况的网页是这样
其他屏幕由于尺寸等原因,图片文字等被遮挡
对比设计图,界面有所差异也是bug
例如原设计图
实际前端页面
有缺少的信息,或者图片大小比例不一致
2.2 功能测试
根据产品特性、操作描述和⽤⼾⽅案,测试⼀个产品的特性和可操作⾏为以确定它们满⾜设计需求。
为了确保程序以期望的⽅式运⾏⽽按功能要求对软件进⾏的测试,通过对⼀个系统的所有的特性和 功能都进⾏测试确保符合需求和规范
如何进⾏功能测试?设计功能测试⽤例,参考产品规格说明书进⾏⽤例的编写,具体的测试⽤例需要使⽤黑盒设计测试⽤例的⽅法,如等价类、边界值、判定表法、正交法、场景法、错误猜测法等。(黑盒测试:不关注程序内部代码逻辑,只关注功能最终测试结果。使用前面的设计测试用例的方法,就称之为黑盒测试用例方法。)
2.3 性能测试
我们在使⽤软件的时候有时会碰到软件⽹⻚打开时越来越慢,查询数据时很⻓时间才显⽰列表,软件运⾏越来越慢等问题,这些问题都是系统的性能问题引起的。例如从时间看,响应时间越短(毫秒内),性能越好
2.3 可靠性测试
可靠性(Availability)即可⽤性,是指系统正常运⾏的能⼒或者程度,⼀般⽤正常向⽤⼾提供软件 服务 的时间占总时间的百分⽐表⽰。可靠性 = 正常运⾏时间/(正常运⾏时间+⾮正常运⾏时间)*100%例如:让⽼王请吃饭,要求了⼗次,但是他只请了⼀次,那么我们说⽼王的可靠性是10%,那么我们称⽼ 王这⼈不可靠
可⽤性指标⼀般要求达到4个或5个“9”,即99.99%或者99.999%如果可⽤性达到 99.99% ,对于⼀个全年不间断(7*24的⽅式)运⾏的系统,意味着全年 正常工作时间约为525547min,不能正常⼯作的时间只有53min,不到⼀个⼩时。如果可⽤性达到 99.999% ,意味着全年不能正常⼯作的时间只有5min。不同的应⽤系统,可⽤性的要求是不⼀样的,⾮实时性的信息系统或⼀般⽹站要求都很低,99%和 99.5%就可以了,但是军事系统,要求则很⾼;
2.4 安全性测试
安全性是指信息安全,是指计算机系统或⽹络保护⽤⼾数据隐私,完整,保护数据正常传输和抵御 ⿊ 客,病毒攻击的能⼒。一般安全测试由专门的网络安全人员进行测试。网络安全人员将模拟黑客的攻击方式,对网站进行攻击分析,找安全漏洞,提交安全测试报告。安全性测试属于⾮功能性测试很重要的⼀个⽅⾯,系统常⻅的安全漏洞和威胁如下• 输⼊域,如输⼊恶性或者带有病毒的脚本或⻓字符串;• 代码中的安全性问题,如SQL/XML注⼊• 不安全的数据存储或者传递• 数据⽂件,邮件⽂件,系统配置⽂件等⾥⾯有危害系统的信息或者数据;• 有问题的访问控制,权限分配等• 假冒ID:⾝份欺骗• 篡改,对数据的恶意修改,破坏数据的完整性
2.4.1 SQL注入
sql注入本质上是在对数据库进行攻击。程序员对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步获取到数据信息。
例如万能的sql注入语句:
' or 1=1 --
、' or '1'='1
、" or 1=1 --
例如用户登录
正常情况应该是在用户名的输入框中 输入用户id,然后数据库查询是否有这个用户,再进行下一步判断。
但是这个用户故意输入 1'or'1=1
用户点击提交,发送请求后,后端会将1'or'1=1拼接到查询语句select * from user where userId ='用户id'这里面。
结果,将整个数据库的user表的数据返回了。这造成了严重的数据泄漏,非常危险。
2.4.1 XSS攻击
XSS攻击(Cross Site Scripting)中文名称为:跨站脚本攻击
XSS的重点不在于跨站点,而在于脚本的执行。
XSS的原理是:
恶意攻击者在web页面中会插