【软件测试】进阶篇

文章目录

    • 按照测试对象划分
      • 界面测试
      • 可靠性测试
      • 容错性测试
      • 文档测试
      • 兼容性测试
      • 易用性
      • 安装卸载的测试
      • 安全测试
      • 性能测试
      • 内存泄漏
    • 按照是否查看代码
      • 黑盒测试
      • 白盒测试
      • 灰盒测试
    • 按照开发阶段划分
      • 单元测试
      • 集成测试
      • 系统测试
      • 验收测试
    • 按照实施组织划分
      • α测试
      • β测试
      • 第三方测试
    • 按照是否运行划分
      • 静态测试
      • 动态测试
    • 是否手工划分
      • 手工测试
      • 自动化测试
    • 按地域划分
      • 软件国际化测试
      • 软件本地化测试

按照测试对象划分

界面测试

也叫UI测试,直接和用户交互的,界面设计的好坏决定了用户使用软件的直观感受。

  • 保证界面和UI设计稿的一致性,正确性。

  • 测试界面的每一个功能的正确性。(从上到下,从左到右)

  • 界面的布局排版(字体大小,图片布局排版,清晰程度…)要合理

  • 界面的控件(滚动条,按钮,Checkbox,文本框)功能是否正常

  • 界面的自适应测试:要进行界面的不同分辨率的测试。(窗口由大变小时,字体是否重叠,图片是否模糊等)

  • 页面的状态(颜色、排版)和当下节日,时事相结合

  • 同一个web页面不同页面大小测试:

    页面从小到大变化过程中衔接顺滑,让用户可以接受;
    页面字体不模糊,不重影;
    页面图片不消失,排版布局合理;
    页面的功能可以正常使用

界面测试常见的错误:未选择适合的快捷键(键盘能打出来的)、文字丢失、文字截断(显示不清楚,有遮挡)、重复的快捷键等

可靠性测试

指系统正常运行的时间,一般用百分比表示
可靠性 = 正常运行时间 /(正常运行时间+非正常运行时间)
软件自身和软件所部署的环境(硬件、软件系统、网络等)有问题导致软件无法正常运行,都属于软件非正常运行时间
一般软件对可靠性的要求达到99.99% ,一年时间,软件出现故障的时间52min
特殊软件,比如军事系统99.999% ,一年时间,出现故障的时间5min

如何进行软件的可靠性测试?
软件的可靠性影响因素:软件本身,外界因素(电、网络、硬件设备、软件系统)

容错性测试

容错性:系统因为自身或者外部一些异常的操作使系统发生异常,系统能够自我处理这种操作或者异常的能力
数据级别:比如一周八天,5月32天,一天25小时等
校验级别:输入账号6~16位,最多只能输入16位,大小写校验,空格的校验,前后信息一致性的校验
界面级别:一些复杂的操作或者危险性较高的操作会给用户提示信息的;危险的按钮,直接屏蔽,禁用
环境级别:断电,断网,硬件设备出问题了,是否可以无缝切换(让用户无感知)到备用服务器
灾难恢复性测试,人为让系统发生故障,测试系统是否能够很快恢复稳定,数据恢复,不丢用户信息

文档测试

整个开发过程中产生的各种文档,需求文档,设计文档,功能文档,用户使用手册进行测试
检查文档的正确性、一致性、专业术语、完整性
文档和软件功能对比

兼容性测试

一般是平台的兼容性:APP【不同系统IOS/安卓】,Web网页【各种浏览器以及操作系统的兼容性】,不同品牌手机,不同系统版本
软件本身的兼容性:软件对本身功能前后的兼容性,比如开发的新功能不能影响老功能,也不能影响后续功能的开发
软件对用户数据的兼容性:比如数据库中某一张表增加字段,不能影响用户之前的数据存储
软件对第三方软件的兼容性:不影响其他软件的使用;如果和第三方软件有交互,数据要有兼容性

易用性

用户使用软件的体验,用户体验测试
(1)符合标准和规范
严重错误:红色
警告:黄色
提示
(2)直观性
让用户直接看到自己期望的操作,或者预期结果
(3)灵活性
用户可以根据自己的习惯选择适合自己的操作方式(比如手机上的键盘:9键,26键,手写,五笔)
在灵活性与复杂性之间找一个平衡点
(4)舒适性
让用户对自己进行的操作有感知,不产生焦虑情绪
安装软件:会有进度条
(5)实用性

安装卸载的测试

软件可以正常的安装和卸载
软件更新
安装软件时断网,断电,死机等异常情况下,软件的响应
安装软件内存不足是否有提示
卸载软件暂停,是否可以继续卸载
卸载软件到一半,取消卸载,看软件是否可以正常使用
卸载过程中异常情况的测试(断网,断电,死机)
卸载后软件的数据文件信息是否清理干净

安全测试

安全指的是信息安全,指网络和系统保护用户的数据,隐私不被侵犯和泄漏。
防病毒,防黑客攻击,xss注入,SQL注入,防爬虫,输入域安全性,防止邮件文件有携带病毒,黑客攻击

性能测试

内存泄漏
资源分配不均
系统运行速度越来越慢
系统运行受外界影响越来越大
死锁
查询,加载信息速度很慢

内存泄漏

内存泄漏会导致系统运行越来越慢(可积累性的错误)
导致原因:(1)内存分配后没有回收
(2)API函数使用不正确,无法回收
(3)内存分配方式有问题,无法回收

按照是否查看代码

黑盒测试

黑盒测试不关心软件内部代码的实现,不关心代码的逻辑结构(看不见代码),只关心输入输出是否符合预期
黑盒测试的优点:
不用看代码(不懂代码也可以进行测试)
黑盒测试测试系统的功能,站在用户的角度去使用功能,有利于培养用户思维
黑盒测试的测试用例是按照需求设计的,不容易遗漏需求
黑盒测试设计测试用例的方法有哪些?
等价类、边界值、因果图、错误猜测法、场景法、正交法

白盒测试

白盒测试就是针对代码进行的测试,分析和测试代码的逻辑和结构,实现的功能,看是否符合用户的需求
白盒测试的方法:
不可靠:语句覆盖,路径覆盖(if-else,try-catch,finally,switch-case),
可靠的:判定覆盖,条件覆盖,判定组合覆盖,条件组合覆盖,判定和条件组合覆盖、循环覆盖
判定组合:FF、FT、TF、TT
条件组合:无穷尽 用等价类、边界值法
判定和条件的组合

白盒测试如何去测试某一个单元模块(方法)?(白盒测试的方式)
Java中Junit框架(也称Java的单元测试框架)

灰盒测试

介于黑盒测试和白盒测试之间

按照开发阶段划分

越往下测试效率越高,定位问题越容易
金字塔由上到下依次为:
界面
集成测试
单元测试

单元测试

针对软件组成最小的单元模块进行测试;(类、方法)、
测试阶段:编码前(TDD)(测试驱动开发:测试人员先写测试代码,空跑,开发人员根据异常写代码,直到测试用例代码通过),编码后
测试对象:组成软件的最小单元模块
测试方法:白盒测试
测试人员:白盒测试工程师或者开发人员
测试依据:详细设计文档(软件测试V模型)
测试内容:模块的接口,局部数据结构测试,边界测试,异常测试,路径测试

集成测试

按照一定的策略把单元模块组合起来形成一个大的功能模块,对这个功能模块进行的测试叫做集成测试
测试阶段:单元测试后
测试对象:集成模块
测试方法:灰盒测试(有黑有白)
测试依据:概要设计文档(V模型)
测试人员:黑盒测试工程师,开发人员
测试内容:整个模块功能的正确性,单元模块之间接口的正确性,全局数据结构测试,单个模块的缺陷对整个功能模块的影响,模块之间功能的冲突

系统测试

当软件开发完成,系统的全面的对软件功能进行测试
测试阶段:集成测试之后
测试对象:整个系统
测试方法:黑盒测试
测试人员:黑盒测试工程师
测试依据:需求设计文档
测试内容:系统的功能,界面,易用性,可靠性,容错性,可移植性,安全性,性能,兼容

回归测试:当系统引入了新的代码的时候(迭代,修改BUG),要查看新的代码是否影响了旧的功能,进行回归测试
自动化
冒烟测试:正式测试之前,对软件系统的基本流程和核心功能进行测试,如果测试通过,才同意正式测试
准入原则
回归测试与冒烟测试都属于系统测试

验收测试

软件上线前的最后一道测试,由用户或者产品经理发起的
测试阶段:系统测试后
测试内容:同系统测试
测试方法:黑盒模型
测试依据:用户需求 V模型
测试人员:用户/产品方
测试内容:同系统测试(包含一些文档,用户使用手册,功能设计文档)

按照实施组织划分

α测试

指的是让用户(除了开发和测试人员以外的公司内部人员)到达开发现场去进行测试
测试环境:开发环境
α测试先于β测试之前

β测试

让实际使用的用户在实际使用环境下进行测试,不限时间,不限地点

α测试与β测试区别:
测试环境不同;
时间集中程度不一样;
α测试先于β测试之前

第三方测试

第三方软件测评机构对软件进行测试

按照是否运行划分

静态测试

不运行代码,通过分析代码的风格是否符合公司的标准规范,分析代码的结构,逻辑,算法,方法的实现是否满足用户的需求
标准:ISO25010
只能看代码

动态测试

运行代码,执行测试用例,进行测试

是否手工划分

手工测试

手工执行测试用例,查看测试结果
缺点:量大容易出错,效率低
优点:不可替代的,无法被自动化测试替代,手工测试的过程人为可控的,有利于做探索性测试

自动化测试

系统按照预先设定好的条件(就是自动化测试脚本)去执行测试,这些条件包括正常和异常的方面
UI自动化
接口自动化
性能自动化
不是所有的项目都是和自动化

哪些项目不适合自动化测试?
自动化的价值和意义在于节省人力,自动化脚本运行的运用率越高越有价值
自动化不适合于项目不稳定,功能频繁变动的项目

按地域划分

软件国际化:开发软件的时候,使用了一种工程技术,使得软件在适用不同国家的语言,风俗使用习惯的时候不用去改变软件的源码就可以做到
比如:windows操作系统、微博国际版、苹果手机

软件国际化测试

软件本地化测试

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