软件测试 -进阶篇

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

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

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

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

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

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

  • 1. 按照测试对象划分
    • 1.1 界面测试
    • 1.2 可靠性测试
    • 1.3 容错性测试
    • 1.4 文档测试
    • 1.5 兼容性测试
    • 1.6 易用性测试
    • 1.7 安装卸载测试
    • 1.8 安全性测试
    • 1.9 性能测试
    • 1.10 内存泄漏
  • 2. 按照是否查看代码划分
    • 2.1 黑盒测试
    • 2.2 白盒测试
    • 2.3 灰盒测试
  • 3. 按照开发阶段划分
    • 3.1 单元测试阶段
    • 3.2 集成测试
    • 3.3 系统测试
    • 3.4 回归测试
    • 3.5 冒烟测试
    • 3.6 验收测试
  • 4. 按照实施组织划分
    • 4.1 α测试
    • 4.2 β测试
    • 4.3 第三方测试
  • 5. 按照代码是否运行划分
    • 5.1 静态测试
    • 5.2 动态测试
  • 6. 按照是否手工划分
    • 6.1 手工测试
    • 6.2 自动化测试
  • 7. 按照地域划分
    • 7.1 软件国际化测试
    • 7.2 软件本地化测试

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 白盒测试

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

白盒测试的方法:
语句覆盖、路径覆盖、逻辑覆盖、判定覆盖、条件覆盖、判定组合覆盖、判定和条件覆盖、条件和条件组合
软件测试 -进阶篇_第1张图片

2.3 灰盒测试

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

3. 按照开发阶段划分

测试金字塔
软件测试 -进阶篇_第2张图片

特点:

  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 软件本地化测试

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

你可能感兴趣的:(软件测试,测试用例)