目录
一、按照开发阶段划分
1、单元测试
1)测试内容:输入输出参数测试,边界测试,异常错误测试,路径测试,局部数据结构测试。
2)测试方法:使用Junit框架,属于白盒测试。
2、集成测试
1)测试内容:接口测试,输入参数,全局数据结构测试,集成模块功能测试,单个模块的缺陷对整个集成后模块的影响,单元模块之间的功能是否有影响。
2)属于灰盒测试
3、系统测试
1)测试内容:对系统的功能进行全面的测试 ,功能、界面、兼容性、易用性、性能、安全、可靠性、可移植性。
2)属于黑盒测试。
3)回归测试和冒烟测试属于系统测试。
回归测试:系统引入新的代码,更改BUG或迭代新功能,担心新有的代码对原有的功能有影响。
冒烟测试:在正式测试之前,对系统主要的流程和系统的核心功能进行测试。
4、验收测试
1)测试内容:和系统测试的内容是一致的,包含一些文档的测试 。
2)属于黑盒测试。
二、按照实施组织划分
1、α测试
1)在开发环境下,让非开发人员和非测试人员来进行系统的测试。
2、β测试
1)在用户真实使用环境下,用户不受时间地点限制,进行测试,测试出的问题会反馈给开发人员,开发人员会不断进行修改,直到没有问题。
2)进行β测试之前要进行很长一段时间α测试。
3、第三方
1)第三方的软件测试机构按照一定的标准规范进行软件测试。
三、按照是否运行划分
1、静态测试
不运行代码,检查(代码走查,code review),看代码的书写规范,风格是否符合公司标准,看代码的逻辑结构、功能是否符合需求。
2、动态测试
运行代码部署系统,手工或者跑自动化脚本之类的测试。
四、按照是否手工划分
1、手工测试
1)具有一定的灵活性(根据实际系统的情况,随时改变测试的思路),探索性测试。
2)测试用例很多,比较繁琐,量大,时间长容易出错;效率低。
2、自动化测试
1)提前按照一定的脚本设定好条件,让机器自动去执行。
2)效率高,不会出错,除非机器本身出现故障。
3)不是所有的项目(系统)都适合自动化测试,功能比较稳定的系统适合自动化测试。
五、按照是否查看代码划分
1、黑盒测试
1)不关注软件内部的结构、逻辑、代码的实现,只关心输入和输出,看相应的输入是否对应着和需求一致的输出。
2)黑盒测试设计用例的方法有哪些?
等价类、边界值、因果图、场景法、错误猜测法、正交法
2、白盒测试
1)主要测试系统内部的逻辑结构是否符合需求,关注代码的实现功能,主要对代码进行测试。
2)白盒测试的方法有哪些?
语句覆盖、路径覆盖、条件覆盖、判定覆盖、条件组合覆盖、判定组合覆盖
条件和判定 多个条件的结果可能是一个判定,不同的条件也有可能对应不同的判定,判定是需要条件的
覆盖:把所有的情况都考虑到
3)单元测试是白盒测试的一种手段
3、灰盒测试
1)介于黑盒和白盒之间
2)集成测试
六、按照测试对象划分
1、业务测试(场景测试)
1)根据需求的设定,把不同的功能点按照一定的策略组合起来,形成一个业务流。
2)场景法
2、界面测试
1)用户通过界面和系统进行直接交互的,界面的设计直接决定了用户体验感官。
2)界面测试的依据:UI设计师的界面设计稿,元素的布局、排版、大小都标记清楚。
①字体:大小、类型、粗体、是否斜体、位置、缩进、行高、字体间距。
②图片:排版,画面是否清晰,样式。
③控件:按钮是否可用,滚动条,CheckBox是否可用,有效状态高亮展示,无效状态置灰。
④删除操作:是否有提示,提示信息是否完整。
⑤整个页面元素的排版布局,背景的颜色、透明度。
3)界面自应用测试:
①界面大小变化的时候,字体有没有模糊,消失或者重叠;
②界面大小变化的时候,图片有没有模糊、消失,重叠;
③界面大小变化的时候,功能有没有消失,能否正常使用;
④界面在不同的大小下,界面是否和UI设计稿一致。
3、容错测试
1)当系统由于外部的一些异常操作或者外部的环境引起系统的错误,但是系统可以自我消化这些问题。
2)不直接展示给用户,叫系统的容错性。
3)数据级别的容错性:
①限制输入长度 ②发红包人民币最小输入0.01 ③ATM取款机限制取款输入额度
4)校验级别
①输入框前后空格开发时直接去掉 ②大小写不敏感,大小写自动转换 ③同一个表单,填写信息前后不一致的时候,提交的时候会有提示。
5)界面级别
①对于一些危险的操作,在界面直接屏蔽掉不让用户使用。
②为了防止用户输入不符合规定的数据,直接下拉框,直接给选项让用户勾选。
③对于界面的一些复杂操作,用户很可能操作错误,会提供给用户操作提示。
6)环境级别
断电,断网,服务器瘫痪,有备选方案,可以让用户无感知切换
4、文档测试
5、兼容性测试
1)系统的兼容性
①web系统:不同浏览器上以及相同浏览器的不同版本都可以正常使用
为什么要测试系统在不同浏览器上的兼容性?
不同的浏览器内核不一样,解析出来的前端代码就不一样,所以在不同浏览器上显示的效果就不一样。
②APP系统:不同的手机系统以及相同系统的不同版本
2)系统本身向前或者向后的兼容性
系统本次迭代的功能不能影响系统之前的功能,也不能影响系统以后会增加的功能。
3)系统和其他相关软件的兼容性
不是腾讯的APP,但是可以通过微信或者QQ登陆,是怎么实现的?
开发者文档:接口
4)数据的兼容性
共享数据。eg:支付宝和淘宝
6、易用性测试
1)软件满足用户使用的标准和规范,使得用户使用软件的时候能够更加方便。
2)满足一定的标准和规范,满足用户的使用习惯。
①直观性:用户能直接第一眼看到自己想要操作的功能;
②灵活性:给不同的用户群体提供了不同使用功能的方式,可能会带给系统设计的复杂性,灵活性和复杂性做一个平衡;
③实用性:系统的功能和系统的设计关联,系统本身的功能和展示给用户的画面、信息要一致;
④适用性
7、性能测试
1)为什么要进行性能测试?
①系统是否可以快速响应用户的请求;
②在系统使用的用户高峰期(流量高峰期),系统本身可以处理所有的用户请求;
③在系统使用高峰期,系统可以稳定的运行;
④在流量的高峰期,系统不仅可以稳定运行,还可以快速响应用户请求; 3/5/8s
⑤系统可以处理预期的事务的数量。事务是一系列密切相关的操作集合,如果一个操作失败了,那这个事务就失败了,如果所有的操作都成功,事务成功。
2)进行性能测试主要看哪些指标
①响应时间 ②每秒事务处理数(TPS) ③点击率(HPS) ④吞吐量
3)系统的软硬件配置会对系统的性能有影响。
8、APP安装和卸载测试
1)安装APP的方式都有哪些?
①用户:应用商店,安装包,第三方(软件管家),扫码下载,adb(命令行安装)
②测试人员:命令行安装,软件编译包(apk,ipa)测试包
2)卸载
9、安全性测试
1)SQL注入,Xss注入,攻击性,防爬虫,检测到病毒
①SQL注入
正确:select * from Students where id=23;
错误:select * from Students where id=23333 or 1=1;
10、内存泄露测试
1)在设计系统的时候,内存分配好了之后没有及时释放,或者由于错误的使用一些API函数,导致无法释放内存,系统就会运行越来越慢,直到崩溃。
2)导致内存泄露的原因(一般都是代码级别的):①分配内存,忘记回收;②分配内存的方式有问题,造成无法回收的情况;③API函数使用不正确,导致内存无法回收。
3)防止内存泄露:①走查代码;②使用工具进行检测。
七、按照地域划分
1、软件本地化测试
2、软件国际化测试
1)软件国际化:软件在进行设计开发的时候使用了一种工程技术,这种工程技术可以使我们的软件在适用不同的国家语言或者风俗习惯的时候不需要改变源码,可以直接转换使用。