软件测试理论基础 --- 模型介绍
- 软件测试定义
- 软件测试流程
- 软件测试分类
-
- 按照方法分类
-
- 黑盒测试
- 白盒测试
- 灰盒测试
- 按照方向划分
-
- 功能测试
- 性能测试
- 安全测试
- 兼容性测试
- UI测试
- 易用性测试
- 稳定测试
- 按阶段划分
- 按照对象划分
- 按状态划分
- 其他分类
- APP专项测试
软件测试定义
软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别
软件测试流程
需求评审–>需求分析–>测试计划–>用例设计–>用例评审–>测试环境准备–>执行测试–>bug跟踪–>回归测试–>测试报告–>发布上线–>线上环境冒烟测试
软件测试分类
按照方法分类
黑盒测试
测试人员在不考虑任何程序内部结构和特性的条件下,检查程序的功能是否能够按照规范说明准确无误的运行(功能测试、界面测试属于黑盒测试)
白盒测试
测试程序内部逻辑结构及相关信息(检查程序源代码)
灰盒测试
是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态
按照方向划分
功能测试
功能测试就是对产品的各功能进行验证,检查产品是否达到用户要求的功能。
性能测试
- 压力测试:给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,包括内部内存、CPU 可用性、磁盘空间和网络带宽
- 负载测试:逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试
- 并发测试:主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题,
安全测试
安全测试是检查系统对非法侵入渗透的防范能力(渗透测试、流量攻击、SQL注入、跨域攻击)
兼容性测试
兼容性测试是指要测试的软件在不同的硬件平台上、不同的应用软件之间、不同的操作系统中、不同的网络环境中是否可以正常的运行、有无异常的测试过程。即是通常说的软件的可移植性
-
Web兼容性测试:
浏览器上的兼容性:
Google 、saferi、Firefox、opra、eadge、360、QQ、夸克、搜狗…根据市场所占份额,从高到低进行测试
第三方测试工具:
推荐IEtester(离线)、SuperPreview(离线)、Browsershots:http://browsershots.org(在线)
-
操作系统兼容性:
windows系列、Mac OS X系列、UNIX/Linux系列
-
APP兼容性测试:
a. Android:不同安卓设备、安卓版本、系统版本、屏幕分辨率、屏幕大小、屏幕形状等综合考虑情况下测试
注意:安卓机型较多,实际情况下怎样进行测试
公司提供部分型号的手机进行测试,如果覆盖率不够时,还可以采用百度众测平台和云测平台,这两款测试工具里面包含了安卓和iOS的测试(收费)
b. iOS兼容性:各型号的iPhone手机上进行测试
UI测试
界面是否符合用户使用风格、设计风格是否统一、布局是否合理、配色是否合理,界面设计是否美观
易用性测试
操作是否简单、学习成本越低越好
稳定测试
长时间运行会不会出问题
按阶段划分
- 单元测试:是指对软件中的最小可测试单元进行检查和验证(方法、函数、类等,一般由程序员自己完成,属于白盒测试、静态测试)
- 集成测试:也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试,一般是对接口进行测试
- 系统测试:对软件整体进行测试,是否满足用户所提要求,需要对功能、性能、安全、界面等所有方面进行测试
-
验收测试:与系统测试相比仅仅为测试人员上的区别,测试人员辅助甲方进行测试
– α测试:内测,内部人员测试
– β测试:公测,客户或用户测试
按照对象划分
APP测试、web测试 、物联网测试、嵌入式测试、大数据测试、车联网测试、AI测试、小程序测试等等
按状态划分
- 静态测试:软件不运行,如测试源代码,测试需求分析说明书等等
- 动态测试:程序运行情况下的测试
其他分类
- 回归测试:开发人员修改了旧代码后,测试人员重新进行测试,确认bug是否修改以及有没有引入新的错误或导致其他代码产生错误。
- 冒烟测试:测试前的测试,检查软件是否有可测试
- 埋点测试:埋点测试数据采集的一种术语,而数据采集是提供给运营工作人员去了解手机app对于某些模块、场景的用户使用情况,进行的一个触发埋点,将埋点采集到的数据到的数据进行上报的过程。采集数据只是起点,将数据进行分析、整理、汇总以及报表展示,最终得出用户对app普遍对使用行为,从而实现app面向用户的改良
- 打桩测试 :在我们进行单元测试的时候,单元本身无法构成一个切实可运行的程序系统,所以我们需要为单元测试来开发桩模块和驱动模块,从而完成我们的单元测试目的(自动化测试会用到)
APP专项测试
- 弱网测试:模拟软件在不同网络下的表现(2G/3G/4G/5G/WIFI/热点/飞行模式/断网),不同网络实质是网速不同,可以通过软件进行模拟(Fiddler,Charles)
- 权限测试:不给某个权限时,软件是否能正场运行(禁止使用相机权限时,看app是否正常运行)
- 安装、卸载、更新测试
-
更新测试
– 当客户端有新版本时,是否有更新提示
– 用户取消版本更新时,老版本是否可以正常使用,下次启动应用时,是否出现更新提示
– 当有新版本时,不删除客户端的情况下,老版本是否可用
– 保留新版客户端的前提下,使用老版本安装包能否正常安装(要求不能安装,版本不可逆)
– 出现跨版本更新的时候,是否可以更新成功
-
场景交互测试:是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试。
– 多个APP同时运行是否影响正常功能
– APP运行时前/后台切换是否影响正常功能
– APP运行时拨打/接听电话
– APP运行时发送/接收信息
– APP运行时发送/收取邮件
– APP运行时切换网络(2G、3G、4G 、 5G 、 Wi-Fi)
– APP运行时浏览网络
– APP运行时使用蓝牙传送/接收数据
– APP运行时使用相机、计算器等手机自带设备。
– 单手模式
– 分屏使用
- 资源争用测试:(多个app同时使用某一功能,比如手机喇叭,谁的优先级更高的测试)
-
消息推送测试:(消息推送都是消息服务器在推送,与app无关)
消息推送是否成功、顺序是否正确…
- 资源监控测试:测试CPU、硬盘、内存、流量、电量使用情况是否合理(CPU、内存、流量、电量一般采用求平均值的方法,即软件运行规定的时间内(半小时或者1小时)使用情况)
- 兼容性测试
- 易用性测试
- UI测试
- 稳定性测试