• 软件测试 -进阶篇


    回顾上一篇博客主要内容: 用例篇

    如何根据需求去设计测试用例?

    1. 验证需求的正确性,合理性,无二义性,逻辑自洽
    2. 分析需求,细化需求,从需求中提出测试项,根据测试项找到测试点,根据测试点去具体的设计测试用例

    根据需求设计测试用例分为哪两个方面?
    功能性和非功能性

    1. 功能性
      界面的所有功能不能遗漏(从上到下,重左到右)
      把功能串起来,形成场景或者业务,对场景和业务进行测试
      一个功能的多个输入要进行测试
      功能的异常数据输入,异常操作进行测试
    2. 非功能性
      可靠性,易用性,容错性,兼容性,可移植性,性能,安全,可维护性
      不同类型的软件,非功能性测试的侧重点是不一样的
      大型商用软件(淘宝,微信,微博等),客户端安装的软件,B/S 企业内部使用的软件,Word,office(单机安装)

    具体的设计测试用例的方法有哪些?
    等价类,边界值,场景法,错误猜测法,因果图法,正交法

    1. 按照测试对象划分

    1.1 界面测试

    用户是通过界面和软件之间进行交互的,界面设计的好坏,直接影响了用户对软件的映像。

    界面测试(简称UI测试),指按照界面的需求(一般是UI设计稿)和界面的设计规则,对我们软件界面所展示的全部内容进行测试和检查,一般包括如下内容:

    1. 测试软件界面元素完整性,正确性,一致性。
    2. 软件界面排版布局合理,字体,颜色。
    3. 测试界面的自适应性,界面适应不同的页面大小(文字没有重叠,消失,功能都在,可以正常使用,图片清晰排版合理,手机,iPad,电脑屏幕,界面重大到小(从小到大)变化的过程中,功能完整,文字完整,图片完整,不出现叠加,消失,功能无法使用的情况)。
    4. 界面控件功能正常,对话框滚动条,按钮。按钮的有效状态和失效状态时可以区分。
    5. 界面设计(颜色,布局)。

    1.2 可靠性测试

    可靠性指软件正常运行的能力,软件正常运行的时间和总体运行的时间的百分比。

    可靠性 = 正常运行时间/(正常运行时间+非正常运行时间)*100%

    影响软件可靠性的因素: 网络,软件环境(安装),硬件环境,软件自身,环境的异常都会使得软件运行异常

    不同的软件对可靠性要求不一样,非实时性软件可靠性要求一般为 99.99% ,99.95%(邮件系统)
    特殊软件对可靠性就很高,99.999%(军事系统)

    如果可用性达到99.99%,对于一个全年不间断(7*24的方式)运行的系统,意味着全年(252600min)不能正常工作的时间只有52min,不到一个小时。
    如果可用性达到99.999%,意味着全年不能正常工作的时间只有5min。

    怎样测试软件的可靠性?
    一个周,出现故障的时间记下来,去计算百分比

    1.3 容错性测试

    系统发生异常,或者由于错误操作导致软件系统发生错误,软件自我消化掉错误,或者进行修改,不让客户知道,叫做系统的容错性。

    1. 常见的容错性处理
      数据容错性: 取款机输入小于 100 的钱数 (给出提示)时间: 25时70分这样、年月日: 二月份 30号这样,其他月份 32号(都给出提示)
      校验容错性: 前后空格(自动化过滤);校验大小写字母(验证码:自动转化为大小写),同一个表格或文件前后的信息校验(身份证,学号,自动前后校验)
      界面容错性:复杂操作的提示,危险操作的提示;危险按钮的屏蔽
      环境容错性:软件所在的环境发生故障,软件有备用方案;可以让用户无感知切换。(网络,电,硬件环境,软件部署的软件环境)
    2. 灾难恢复测试
      人为让系统发生故障,看系统自身,对于用户数据的存储和回复是否快速

    1.4 文档测试

    软件开发的相关文档的测试。

    文档测试的关注点:

    1. 文档的术语
    2. 文档的正确性
    3. 文档的完整性
    4. 文档的一致性
    5. 文档的易用性

    1.5 兼容性测试

    1. 软件自身的兼容性
      软件前后的兼容性,软件开发的新功能不能影响旧功能的使用,不能够影响后续功能的开发
    2. 软件对于数据的兼容性(用户数据)
      设计功能的时候,要考虑用户已有的数据
    3. 软件对应用平台的兼容性(安装软件的环境,硬件环境,APP,浏览器)
      APP / IOS / Android 不同品牌手机 ,不同型号,web 不同浏览器,不同浏览器在不同的电脑设备上
    4. 软件对于第三方软件或者第三方软件数据的兼容性(相关软件)
      淘宝 / 支付宝 / 微博 / 第三方登录

    1.6 易用性测试

    就是用户的体验测试

    1. 标准性和规范性
      界面上的各种信息应该符合规范和习惯,否则用户使用起来会不舒适,并得不到用户的认可。测试人员需要把与标准规范,习惯不一致的问题报告为缺陷
    2. 直观性
      用户期望的操作在用户可见的范围之内
    3. 灵活性
      键盘: 九宫格、全键盘、手写、拼音
    4. 舒适性
    5. 实用性

    1.7 安装卸载测试

    1. 不同的安装路径,安装卸载软件正常
      APPstore、安装包、第三方(软件小助手)、命令行等
    2. 安装或者卸载过程中是否暂停,暂停后还可以正常安装卸载
    3. 安装过程中空间不足,有提示
    4. 正常卸载软件,如果卸载取消,那么软件可以正常使用(数据恢复)
    5. 安装过程中出现异常,软件可以正常处理(断电、断网连接异常等)

    1.8 安全性测试

    安全性指信息安全,软件保护用户的数据,隐式,以及数据传输过程的安全性,防止病毒侵入和黑客攻击。

    1. 输入域,如输入恶性或者带有病毒的脚本或长字符串
    2. 代码中的安全性问题,如SQL/XML注入
    3. 不安全的数据存储或者传递
    4. 数据文件,邮件文件,系统配置文件等里面有危害系统的信息或者数据;
    5. 有问题的访问控制,权限分配等
    6. 假冒ID:身份欺骗
    7. 篡改,对数据的恶意修改,破坏数据的完整性

    对于安全性测试,可以有代码走读,工具检测的方式

    1.9 性能测试

    系统性能问题的表现:资源泄漏;资源分配不均衡;线程死锁;查询速度越来越慢;响应越来越慢
    性能指标: TPS(每秒事务处理量),每秒HTTP请求数,点击率,吞吐量,响应时间,CPU和资源利用率

    1.10 内存泄漏

    内存泄漏产生的原因: 程序中写的有问题,没办法回收内存;API 函数使用不正确,无法回收内存;分配内存后,忘记回收内存。

    检查代码是否资源泄漏: 人工检查,工具检查

    2. 按照是否查看代码划分

    2.1 黑盒测试

    不去关心代码内部的逻辑结构,不去查看代码,只关心软件功能的外部的输入和输出是否满足用户的需求(相当于把软件的内部实现屏蔽掉了)

    优点:

    1. 不用去关心软件内部的实现,不用去看代码
    2. 站在用户角度去设计测试用例,容易培养产品思维
    3. 设计测试用例是根据软件需求来设计的,不容易遗漏需求

    黑盒测试的方法:
    等价类、边界值、场景法、因果图、错误猜测法、正交法

    2.2 白盒测试

    查看代码是否规范,代码的风格是否和公司设计一致,分析代码的逻辑结构,对代码进行测试,看代码是否实现了需求.

    白盒测试的方法:
    语句覆盖、路径覆盖、逻辑覆盖、判定覆盖、条件覆盖、判定组合覆盖、判定和条件覆盖、条件和条件组合
    在这里插入图片描述

    2.3 灰盒测试

    既关心软件功能的输入输出,也关心软件内部程序的实现

    3. 按照开发阶段划分

    测试金字塔
    在这里插入图片描述

    特点:

    1. 越往底层走,测试效率越高
    2. 越往底层走,定位问题越容易
    3. 越往底层走,测试独立性越高,耦合性变低

    3.1 单元测试阶段

    值得是对软件组成的最小的单元进行测试,查看测试单元的功能是否正常

    1. 测试阶段:一般单元测试之后进行
    2. 测试对象:模块间的接口
    3. 测试人员:白盒测试工程师或开发工程师
    4. 测试依据:单元测试的模块+概要设计文档
    5. 测试方法:黑盒测试与白盒测试相结合
    6. 测试内容:接口测试,局部数据结构测试,路径测试,边界测试,循环测试,错误处理测试,局部变量测试

    3.2 集成测试

    按照一定的逻辑和策略把单元模块组合在一起,形成一个具有完成功能的大模块。

    1. 测试阶段:一般单元测试之后进行
    2. 测试对象:模块间的接口
    3. 测试人员:白盒测试工程师或开发工程师
    4. 测试依据:单元测试的模块+概要设计文档
    5. 测试方法:黑盒测试与白盒测试相结合
    6. 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响

    3.3 系统测试

    对软件系统进行全面的功能和非功能测试

    1. 测试阶段:集成测试以后
    2. 测试对象:整个软件系统
    3. 测试人员:黑盒测试工程师
    4. 测试依据:需求设计文档
    5. 测试方法:黑盒测试
    6. 测试内容:系统的功能,界面,可靠性,容错性,易用性,可移植性,兼容性,安全性,性能,安装卸载(新软件)

    3.4 回归测试

    当系统引入了新代码的时候,测试人员往往需要验证新的代码对旧的功能产生的影响,所做的测试就叫回归测试。(增加新功能的时候 -> 修改BUG)

    3.5 冒烟测试

    在软件开发完成后,要对软件的基础功能和核心流程进行测试,测试通过之后,才可以进入正式的测试环境,如果测试不通过,测试人员有权利打回,让开发重新修改直到冒烟成功。

    回归测试和冒烟测试都属于系统测试。

    3.6 验收测试

    软件上线前的最后一次测试,也称为交付测试。

    1. 测试阶段:系统测试之后
    2. 测试对象:整体软件系统
    3. 测试人员:用户
    4. 测试依据:用户需求
    5. 测试方法:黑盒测试
    6. 测试内容:同系统测试(文档测试),可用性分析文档,需求设计文档,软件设计文档,软件开发文档,功能手册,用户手册

    4. 按照实施组织划分

    4.1 α测试

    在 β 测试之前进行的

    把用户或者非测试和开发的人请到开发现场进行测试;
    测试环境:开发现场
    测试人员:非开发和测试的人

    4.2 β测试

    让实际用户在实际使用环境中进行测试,测试完成后对问题进行统一汇总反馈

    α 测试和 β 测试的区别:
    测试环境不同;测试时间集中程度不同;α 测试优先 β 测试的

    4.3 第三方测试

    是软件第三方测评机构,按照软件行业的标准规范对软件进行测试

    5. 按照代码是否运行划分

    5.1 静态测试

    不运行代码,检查代码的风格,格式是否符合公司的规范标准,检查代码的逻辑结构是否满足需求需要实现的功能。

    5.2 动态测试

    运行代码,给程序响应的输入,看是否得到期望的输出

    大多数软件测试工作都属于动态测试。

    6. 按照是否手工划分

    6.1 手工测试

    按照测试用例,手工去测试系统的功能

    缺点:量大容易出错;效率低;有些极端情况无法测试到
    优点:进行探索性测试,比较灵活

    6.2 自动化测试

    机器按照认为设定好预设条件运行,这些预设包括正常的异常的,去检查软件系统有没有符合设定的条件。

    自动化测试把手工测试用例转化为脚本运行。

    7. 按照地域划分

    7.1 软件国际化测试

    软件国际化:进行软件设计和开发的时候,使用一种工程技术,使得软件在转化为不同的国家语言的时候,可以不用修改源码,适应不同的语言,不同国家人民的风俗习惯等(苹果手机 , 华为手机 ,office , Word)

    1. 外观上看界面功能没有缺失,正常使用
    2. 是否适应这个国家人的使用习惯,文字,日期,风俗习惯
    3. 度量单位,货币,重量单位
    4. 不同分辨率下,软件正常展示和使用
    5. 不同硬件设备

    7.2 软件本地化测试

    具体到某一个国家,上面讲的全是本地化测试

  • 相关阅读:
    textarea文本展示,定时器模仿一个一个出字的效果。
    【Vue项目复习笔记】详情页--首页和详情页监听全局事件和mixin的使用
    多巴胺修饰ZnS硫化锌量子点 Dopamine-ZnS QDs
    linux luasocket 使用
    B. AND Sequences
    Java数字处理类--数字格式化
    终于明白:有了线程,为什么还要有协程?
    Dart基础知识
    利用OPNET进行网络仿真时网络层协议(以QoS为例)的使用、配置及注意点
    Cy3/Cy5/Cy5.5/Cy7荧光标记抗体/蛋白试剂盒(10~100mg标记量)
  • 原文地址:https://blog.csdn.net/chenbaifan/article/details/126625546