1.软件测试的定义
软件的预期结果与实际结果做对比。
2.软件测试的分类
如果分类要进行比较,必须同类型之间才能够比较。
(1)按方法分类(最常见的测试方式)
黑盒测试:把软件比喻成一个黑色的不透明的盒子,检查输入与输出是否对应的上,完全不考虑程序内部结构和内部的特性,着重于程序外部结构,不考虑内部逻辑结构,针对软件界面和软件功能进行测试。
白盒测试:把软件比喻成一个透明的盒子,通过检查软件内部的结构来测试。通过去检查代码的方式来判断软件的功能有没有问题。
灰盒测试:把软件比喻成一个半透明的盒子。介于黑盒测试和白盒测试之间,在看内部结构的时候我们也在外部进行点击来检查有没有问题。
(2)按阶段分类(对应于软件研发进行的阶段)
单元测试:去测试代码模块有没有问题;测试对象是测试开发写的代码块,函数,方法等。用白盒测试,一般单元测试由开发自己做。
集成测试:又叫做接口测试。把代码块和代码块连起来的过程,我们就把它叫做集成,测试的是不同的大的模块和大的模块连接的对不对,他们是通过接口连接的。所以我们测试代码块和代码块连接的对不对就是测试的接口。用灰盒测试比较多
系统测试:对整个完整的软件进行测试。
验收测试:交付时进行的测试,协助领导验收。确定产品是否满足合同或者用户所规定需求的测试。
α测试:内测
β测试:公测
(3)按方向分类(在系统测试阶段做的)
功能测试:功能测试用到的大多数的测试手段都是黑盒测试。
性能测试:软件反应的速度快不快,响应的速度越快,性能就越好。
分为:
压力测试:找到系统的极限在哪里
负载测试:系统在极限工作的情况下可以持续多久。会造成内存泄漏,内存溢出。内存泄漏/溢出是指随着软件的不断运行,用户产生的数据不断堆积,没有位置给它存放就会导致内存溢出。
并发测试
安全测试:和黑客有关系,防范的就是黑客,自己学会黑客的各种技术,然后通过这些技术去攻击自己家的系统,看能不能攻破。
渗透测试:比如有的地址是藏起来的,外人是不知道的,但是可以根据经验一个一个去试,去找到这一个渗透,找到这一个可以访问内部的连接,然后就进入你们家的系统。
DDOS攻击:就是流量攻击,防不了的。
跨域攻击:打开陌生网站时的一瞬间可以偷走你的账号密码。现在浏览器限制跨域的访问,所以现在不容易被跨域攻击。
SQL注入:
select * from t_student where sname like '%';
drop database *;
%';
暴力破解:试你的密码,多试几次就可以把你的密码给试出来。是因为密码设置的太简单了,而且最好不要开放远程访问,会增加被别人攻破的几率。
UI界面测试:不管app还是web都有自己的页面,检查界面好不好看。
界面的风格是否保持一致
界面的按钮大小是否保持一致
界面是否和设计图保持一致
兼容性测试:
app:
分为Android和IOS,两种都需要测。
Android:在不同的系统,屏幕,分辨率,品牌等Android手机上进行测试。综合的考虑市场占有率,去选择需要测哪些型号的手机。
ios的系统一般都是互相兼容的,并且必须保持一致,是苹果公司要求的,所以一般不需要进行测试。
可以用云测平台。
web:
在不同的浏览器上运行。
谷歌浏览器,新的edge,火狐浏览器,IE等
易用性测试:就是用户体验测试。
学习成本越低越好
功能越简洁越好
稳定性测试:能不能长时间稳定的运行。
后端:7*24小时
前端:3-5个小时,一般会用工具长时间的去运行
App的专项测试:
弱网测试:APP能不能在不同的网络环境下正常的运行。可以模拟不同的网络环境:2G,3G,4G,5G,wifi ,热点
场景交互测试:不同的APP相互切换;前后台切换;来电话了;来短信了;微信语音。。。
资源征用测试:同类型的APP同时工作的情况。
权限测试:通讯录权限,相册权限等。当我们关闭了某个权限然后进行测试,是否影响其他功能的使用,使用对应的功能时,是否提醒你打开权限。
离线测试:断开网络后,app还能不能用,有的功能还能不能用。
安装,卸载,更新:
消息推送:消息推送的服务器,由手机厂家提供。当我们断开网络后,有消息推送,然后我们连上网络后,能不能收到这个消息推送,以及这个消息推送显示的时间会不会出问题。APP关闭后还能收到消息推送吗;断网后再联网之前的消息能收到吗。
资源监控:APP的大小(越小越好);流量(平均每小时消耗多少流量);电量(平均每小时消耗多少电量);内存;cpu的消耗
(4)按对象分类
APP测试;web测试;小程序测试;物联网测试;车联网测试;AI测试;大数据测试
(5)按状态分类
动态测试:黑盒测试
静态测试:白盒测试
(6)其他测试
回归测试:检查上一次发现的问题有没有被修改。
冒烟测试:测试前的测试,检查软件是否具备可测试性。闪退/无法登录。