
测试专栏
- 软件测试的基本概念
- 关于软件测试
- 作为一个测试人员,这些基础知识必不可少
- 关于测试用例
目录
- 一.按照测试对象来划分
-
- 1.界面
- 2.可靠性的测试
- 3.容错性
- 4.文档测试
- 5.兼容性测试
- 6.易用性测试
- 7.安装卸载测试
- 8.安全性
- 9.性能测试
- 10.内存泄漏
- 二.按是否查看代码划分
-
- 三.按照开发阶段划分
-
- 1.单元测试阶段
- 2.集成测试
- 3.系统测试
- 4.验收测试
- 四.按照实施组织划分
-
- 五.按照代码是否运行划分
-
- 六.按照手工划分
-
- 七.按照地域划分
-
前面介绍了测试用例的设计方法,但是并没有说明这些应该从哪些方面来考虑,那么这一篇就来介绍一下软件测试的各种技术,通过这些就可以更好的书写测试用例!
一.按照测试对象来划分

1.界面
界面是最直观展现给用户的,用户是通过界面和软件之间进行交互的,界面设计的好坏,是会直接影响到用户对软件的印象的,因此界面的测试也是非常重要的,而在公司里面基本都会有一个职位就是UI设计师,就是专门来设计界面的,因此界面测试又称为UI测试!
可以从以下几个方面来进行测试:
- 测试软件界面元素的完整性,正确性,一致性(通过UI设计稿);
- 测试软件界面的排版布局合理,字体,颜色;
- 测试界面的自适应性,界面适应不同的大小(文字没有重叠,消失,功能都在可以正常使用,图片清晰且排版合理);
- 界面的控件功能正常(对话框滚动条,按钮),按钮的有效状态和失效状态是可以区分的(有效高亮,无效置灰无法点击);
- 界面设计(颜色,布局),需要考虑当下时事;
这里再介绍一些界面常见的错误:
-
不合适的快捷键:
-
文字的丢失:

-
截断:

-
没有对齐:

-
文字的换行错误:
-
文字的重叠:

-
重复的快捷键:

2.可靠性的测试
可靠性一般指软件正常运行的能力,软件正常运行的时间和总体运行的时间的百分比(可靠性 = 软件正常运行的时间 / (非正常运行的时间 + 正常运行的时间)),而影响软件的可靠性的因素有这些:网络,软件环境(安装),硬件环境,软件自身 (环境的异常都会使得软件运行异常)!
而不同的软件对可靠性的要求是不一样的,非实时(不需要立即收到)软件可靠性要求一般为99.99%,99.95%,一般特殊的软件(军事系统)对于可靠性的要求会高一些,一般为99.999%;
那怎么去测试软件的可靠性呢?
可以在一个周内,把出现故障的时间记录下来,然后计算出可靠性!
3.容错性
容错性就是系统发生异常,或者由于错误操作导致软件系统发生错误,软件可以自我消化掉错误,或者进行修改,不让客户感知到,这就是系统的容错性!
①.常见的容错性处理:
- 数据容错性:类似于取款机小于100的钱数的温馨提示;时间的错误;
- 校验容错性:前后空格(自动化过滤);校验登录时的大小写字母(验证码,自动进行大小写);
- 界面的容错性:复杂操作的提示;危险操作的警告提示;
- 环境容错性:软件所在的环境发生故障,软件有备用方案,可以让用户察觉不到(网络,电,硬件环境,软件部署的软件环境)
②.灾难恢复性测试
人为让系统发生故障,看系统自身,对于用户数据的存储和回复是否快速,这个不常见,就不过多介绍了!
4.文档测试
文档测试就是对软件开发的相关文档的测试,包括文档的术语,完整性,一致性,正确性,易用性(容易看懂)
5.兼容性测试
- 软件自身的兼容性:软件前前后后的兼容性,软件开发的新功能不能影响旧功能的使用,也不能影响后续功能的开发;
- 软件对于数据的兼容性(用户数据):设计功能的时候,要考虑用户已有的数据;
- 软件对应于平台的兼容性(安装的软件环境,硬件环境,APP,浏览器):对各种不同品牌不同型号的手机,对不同的浏览器,不同的电脑;
- 软件对于第三方软件或者第三方数据的兼容性(相关软件):例如淘宝和支付宝之间;
6.易用性测试
用户体验测试:
- 符合标准和规范:类似于安装软件的界面,一些常见的标识;
- 直观性:用户所期望的操作在用户可见的范围内;
- 灵活性:键盘上面的九宫格,全键盘,手写…;
- 舒适性:不能让用户感觉到不舒适的感觉;
- 实用性:实现了该有的功能;
7.安装卸载测试
- 不同的安装卸载途径,安装卸载软件正常:安装包,第三方(软件小助手)…;
- 安装或者卸载过程中是否暂停,暂停后继续还可以正常安装和卸载;
- 安装过程中空间不足,要有提示;
- 要能正常的卸载软件,如果卸载取消了软件可以正常使用(数据的恢复);
- 安装卸载过程中出现异常了,软件可以正常处理(断电,网络链接异常等);
8.安全性
安全性指信息安全,软件保护用户的数据,隐私,以及数据传输过程中的安全性,防止病毒的侵入和黑客的攻击:
- 输入域能够检测带病毒的字符串或者文件;
- 防止输入注入,XSS/SQL注入;
- 权限的分配要合理;
- 传输文件/数据要防止被拦截;
- 防止爬虫,爬取信息;
- 防止黑客的攻击;
安全性测试:代码走读,工具的检查;
9.性能测试
系统性能问题的表现:资源的泄漏,资源分配的不均衡,线程的死锁;查询速度越来越慢;响应越来越慢…
性能指标:TPS(美妙事务处理量),每秒HTTP请求数,点击率,吞吐量,响应时间,CPU和资源利用率…
10.内存泄漏
分配的资源没有回收,导致内存越来越少,最后导致内存没有可用的,这就是内存泄漏,而内存泄漏产生的原因:
- 程序写的有问题,没发回收内存;
- API函数使用不正确,无法回收内存;
- 分配内存后,忘记回收内存;
检查代码是否资源泄漏:人工检测,工具检查;
二.按是否查看代码划分

1.黑盒测试
黑盒测试就是不去关心代码内部的逻辑结构,不去查看代码,只关心软件功能的外部的输入和输出是否满足用户的需求,相当于把软件内部的实现给屏蔽掉了
黑盒测试的优点:
- 不用去关心软件内部的实现,不用去看代码;
- 站在用户的角度去设计测试用例,容易培养产品思维;
- 设计测试用例是根据软件需求来进行设计的,不容易遗漏需求;
黑盒测试的方法:等价类.边界值,场景法,因果法,错误猜测法,正交法
2.白盒测试
白盒测试就是分析代码的逻辑结构,查看代码是否规范,分析代码的逻辑结构,对代码进行测试,看代码是否实现了需求,例如单元测试就可以使用白盒测试;
白盒测试的测试方法:语句覆盖(将每一处代码都走到),路径覆盖(if else switch case try catch finally),循环覆盖(while for),逻辑覆盖(包含后面的覆盖),判定覆盖,条件覆盖,判定组合覆盖,判定和条件覆盖,条件和条件组合;
3.灰盒测试
灰盒测试就是既关心软件功能的输入和输出,也关心软件内部程序的实现!
三.按照开发阶段划分
测试金字塔:

UI Tests是界面测试,Service Tests是集成,接口测试,Unit Tests是单元测试,代码层面的测试!
测试金字塔的特点:越往底层走,测试效率越高;越往底层走,定位问题越容易;越往底层走,独立性越高,耦合性越低;
1.单元测试阶段
单元测试指的就是对软件组成的最小单元的测试,就是对代码的某个类或是某个方法进行测试,就是查看测试单元的功能是否正常
- 测试阶段:测试前(TDD测试驱动开发),测试后;
- 测试方法:白盒测试;
- 测试人员:白盒测试工程师,开发人员;
- 测试依据:详细设计文档;
- 测试内容:接口测试,局部数据结构测试(局部变量),路径测试,边界测试,循环测试,错误处理测试;
2.集成测试
集成测试就是按照一定的逻辑和策略把单元组合在一起,形成一个具有完整功能的大模块来进行测试;
- 测试阶段:单元测试;
- 测试方法:灰盒测试
- 测试人员:黑盒测试工程师/白盒测试工程师;
- 测试依据:概要设计文档;
- 测试内容:模块功能的正确性,组成模块的单元之间的接口测试,全局数据结构测试,单个模块的功能缺陷对整个模块的影响
3.系统测试
系统测试就是对软件系统进行全面的功能和非功能的测试
- 测试阶段:集成测试之后;
- 测试对象:整个软件系统;
- 测试方法:黑盒测试;
- 测试人员:黑盒测试工程师;
- 测试依据:需求设计文档;
- 测试内容:系统的功能,界面,可靠性,容错性,易用性,可移植性,兼容性,安全性,性能,对新软件的安装卸载
补充:
- 回归测试:当系统引入新代码的时候,测试人员往往需要验证新的代码对旧的功能产生的影响,所做的测试就叫回归测试(增加新的功能,修改BUG),现在一般都是自动化测试;
- 冒烟测试:在软件开发完成之后,要对软件的基础功能和核心流程进行测试,只有测试通过了,才能进入正式的测试环境中,如果测试不通过,测试人员有权利打回,让开发重新修改直至冒烟成功,冒烟测试是测试/开发人员进行的,冒烟测试是一个准入原则,只有这个通过了,才能进行后面的工作
4.验收测试
软件在上线前最后一次测试,也称为交付测试;
- 测试阶段:系统测试之后;
- 测试对象:整体软件系统;
- 测试依据:用户需求;
- 测试人员:用户;
- 测试方法:黑盒测试;
- 测试内容:同系统测试(文档测试,包括可用性分析文档,需求设计文档,软件设计文档,软件开发文档,功能手册,用户手册…)
四.按照实施组织划分
1.α测试
α测试是在β测试之前进行的,把用户或者非测试和开发的人请到开发现场进行的测试;
- 测试环境:开发现场;
- 测试人员:非开发和测试的人;
2.β测试
β测试就是让实际用户在实际使用环境中进行测试,测试完成后对问题进行统一汇总反馈;
α测试和β测试的区别:
- 测试环境不同;
- 测试时间集中程度不同;
- α测试优先于β测试的
3.第三方测试
是软件第三方测评机构,按照软件行业的标准规范对软件进行测试;

五.按照代码是否运行划分
1.静态测试
不运行代码,检查代码的风格,格式是否符合公司的规范标准,及检查代码的逻辑结构是否满足需求要实现的功能;

2.动态测试
运行代码,给程序相应的输入,看是否得到期望的输出
六.按照手工划分
1.手工测试
按照测试用例,手工去测试系统的功能
缺点:两大容易出错;效率低;有些极端情况无法测试到;
优点:进行探索性测试,比较灵活;
2.自动化测试
自动化测试就是机器按照认为设定好预设人条件运行(脚本),这些预设包括正常的和异常的,去检查软件系统有没有符合设定的条件;自动化测试其实就是把手工测试用例转化成脚本运行的,这个后面再详细介绍!
七.按照地域划分
软件国际化:进行软件设计和开发的时候,使用一种工程技术,使得软件在转化为不同的国家语言的时候,可以不用修改源码,适应不同的语言,不同国家人民的风俗习惯等;
1.软件国际化测试
- 外观上看界面功能是否缺失,能否正常使用;
- 是否适应这个国家的使用习惯,文字,日期,风俗习惯;
- 度量单位(货币,重量单位);
- 不同分辨率下,软件的正常展示和使用;
- 不同的硬件设备;
2.软件本地化
具体到某一个国家,这个简单了解就可以了!
