什么是软件测试:预期结果和实际结果做对比
软件测试的分类
方法分类
黑盒测试:把程序比作是遥控器,不用管内部结构,只测试遥控器是否能正常使用
白盒测试:把遥控器拆开,直接检查内部结构(查看代码)
灰盒测试:既测功能也检查代码
方向分类
功能测试:用黑盒,白盒,灰盒去测试软件的功能
性能测试:测试在不同的情况下,软件响应的时间
性能测试包含:
压力测试:最多能支持多少人同时操作
负载测试:发现软件在用户使用数达上线时,能坚持正常工作多长时间
并发测试:用户同时使用同一功能时是否会出错(例如秒杀活动)
安全测试:防止黑客攻击我们的系统(目的:不让黑客攻击成功)
安全测试包含:
渗透测试:防止黑客渐进的并且逐步深入的过程
流量攻击:大数据,大流量来压垮网络设备和服务器,或有意制造大量无法完成的不完全请求来快速耗尽服务器资源
SQL注入:通过把SQL命令输入到web表单提交或输入域名,页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
跨域攻击:利用网站程序对用户输入过滤不足(恶意链接盗取token)
兼容性测试
web:在不同的浏览器上表现是否正常(谷歌,火狐,edge,ie,QQ,safeir,opra,夸克),按照市场份额,从高到低的进行测试
app:ios-在不同的苹果手机上测试使用
andriod-在不同的安卓设备上测试使用;按照当前市场所占份额进行选择性的测试;选取不同的安卓版本,系统版本,屏幕分辨率,屏幕形状综合考虑进行选择进行测试;公司提供部分型号测试用,覆盖度不够时找同事众筹;使用云测试平台进行测试
ui测试:检查界面好不好看(风格统一,布局合理,配色合理)
易用性测试:好不好用(操作步骤越少越好,学习成本越低越好)
稳定性测试:长时间运行使用看会不会出问题
APP专项测试
弱网测试:模拟软件在不同的网络下的表现(2/3/4/5/WiFi/热点/飞行模式;不同的网络本质区别就是网速不同,所以可以通过软件来模拟)
权限测试:权限不给的时候,是否还能正常的使用其他功能
安装,卸载,更新测试:是否能成功安装卸载更新(更新只能跟新到高版本,如要安装低版本应先卸载高版本)
场景交互测试:来电话了,来短信了,听歌,分屏使用,微信语音,前后台切换,不同的应用切换,单手模式……
资源争用测试:例如正在微信通话,又打开了音乐播放器,这时喇叭应该由谁用(调用优先级)
消息推送测试:消息推送标准的都是消息服务器在推送,和软件无关;消息推送的顺序(断网重新联网后,消息推送是否按顺序显示)
资源监控:内存,cpu,流量,电量(求平均值),硬盘
兼容性测试
易用性测试
稳定性测试
ui测试
阶段分类
单元测试:函数,方法,类等等;使用白盒测试方法,直接查看代码(一般单元测试是开发自己做)
集成测试:测试不同的模块和模块之间是否正确的连接(测试接口)
系统测试:测试软件的整个整体(功能,安全,性能……)
验收测试:甲方或者客户来验收这个软件是不是他要的软件(验收测试不是测试做的,只是协助别人验收)
验收测试包含:公测,内测
对象分类
APP测试;WEB测试;物联网测试;车联网测试;大数据测试;AI测试;小程序测试……
状态分类
动态测试
静态测试
其他分类
回归测试:检查之前提交给开发的bug有没有修改完成
冒烟测试:测试前的测试(检查软件是否具备可测试性)
埋点测试:例如写段代码,点击这个按钮操作成功则给出提示,不成功不提示;一般通过打日志来实现
MOCK/打桩测试:提前写脚本执行,等开发写完代码再替换进去;一般做自动化测试才会用到