软件测试进阶篇

软件测试进阶篇_第1张图片

测试专栏

  • 软件测试的基本概念
  • 关于软件测试
  • 作为一个测试人员,这些基础知识必不可少
  • 关于测试用例

目录

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


前面介绍了测试用例的设计方法,但是并没有说明这些应该从哪些方面来考虑,那么这一篇就来介绍一下软件测试的各种技术,通过这些就可以更好的书写测试用例!

一.按照测试对象来划分

软件测试进阶篇_第2张图片

1.界面

界面是最直观展现给用户的,用户是通过界面和软件之间进行交互的,界面设计的好坏,是会直接影响到用户对软件的印象的,因此界面的测试也是非常重要的,而在公司里面基本都会有一个职位就是UI设计师,就是专门来设计界面的,因此界面测试又称为UI测试!
可以从以下几个方面来进行测试:

  • 测试软件界面元素的完整性,正确性,一致性(通过UI设计稿);
  • 测试软件界面的排版布局合理,字体,颜色;
  • 测试界面的自适应性,界面适应不同的大小(文字没有重叠,消失,功能都在可以正常使用,图片清晰且排版合理);
  • 界面的控件功能正常(对话框滚动条,按钮),按钮的有效状态和失效状态是可以区分的(有效高亮,无效置灰无法点击);
  • 界面设计(颜色,布局),需要考虑当下时事;

这里再介绍一些界面常见的错误:

  • 不合适的快捷键:软件测试进阶篇_第3张图片

  • 文字的丢失:
    软件测试进阶篇_第4张图片

  • 截断:
    软件测试进阶篇_第5张图片

  • 没有对齐:
    软件测试进阶篇_第6张图片

  • 文字的换行错误:软件测试进阶篇_第7张图片

  • 文字的重叠:
    软件测试进阶篇_第8张图片

  • 重复的快捷键:
    软件测试进阶篇_第9张图片

2.可靠性的测试

可靠性一般指软件正常运行的能力,软件正常运行的时间和总体运行的时间的百分比(可靠性 = 软件正常运行的时间 / (非正常运行的时间 + 正常运行的时间)),而影响软件的可靠性的因素有这些:网络,软件环境(安装),硬件环境,软件自身 (环境的异常都会使得软件运行异常)!
而不同的软件对可靠性的要求是不一样的,非实时(不需要立即收到)软件可靠性要求一般为99.99%,99.95%,一般特殊的软件(军事系统)对于可靠性的要求会高一些,一般为99.999%;
那怎么去测试软件的可靠性呢?
可以在一个周内,把出现故障的时间记录下来,然后计算出可靠性!

3.容错性

容错性就是系统发生异常,或者由于错误操作导致软件系统发生错误,软件可以自我消化掉错误,或者进行修改,不让客户感知到,这就是系统的容错性!

①.常见的容错性处理:

  • 数据容错性:类似于取款机小于100的钱数的温馨提示;时间的错误;
  • 校验容错性:前后空格(自动化过滤);校验登录时的大小写字母(验证码,自动进行大小写);
  • 界面的容错性:复杂操作的提示;危险操作的警告提示;
  • 环境容错性:软件所在的环境发生故障,软件有备用方案,可以让用户察觉不到(网络,电,硬件环境,软件部署的软件环境)

②.灾难恢复性测试
人为让系统发生故障,看系统自身,对于用户数据的存储和回复是否快速,这个不常见,就不过多介绍了!

4.文档测试

文档测试就是对软件开发的相关文档的测试,包括文档的术语,完整性,一致性,正确性,易用性(容易看懂)

5.兼容性测试

  • 软件自身的兼容性:软件前前后后的兼容性,软件开发的新功能不能影响旧功能的使用,也不能影响后续功能的开发;
  • 软件对于数据的兼容性(用户数据):设计功能的时候,要考虑用户已有的数据;
  • 软件对应于平台的兼容性(安装的软件环境,硬件环境,APP,浏览器):对各种不同品牌不同型号的手机,对不同的浏览器,不同的电脑;
  • 软件对于第三方软件或者第三方数据的兼容性(相关软件):例如淘宝和支付宝之间;

6.易用性测试

用户体验测试:

  • 符合标准和规范:类似于安装软件的界面,一些常见的标识;
  • 直观性:用户所期望的操作在用户可见的范围内;
  • 灵活性:键盘上面的九宫格,全键盘,手写…;
  • 舒适性:不能让用户感觉到不舒适的感觉;
  • 实用性:实现了该有的功能;

7.安装卸载测试

  • 不同的安装卸载途径,安装卸载软件正常:安装包,第三方(软件小助手)…;
  • 安装或者卸载过程中是否暂停,暂停后继续还可以正常安装和卸载;
  • 安装过程中空间不足,要有提示;
  • 要能正常的卸载软件,如果卸载取消了软件可以正常使用(数据的恢复);
  • 安装卸载过程中出现异常了,软件可以正常处理(断电,网络链接异常等);

8.安全性

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

  • 输入域能够检测带病毒的字符串或者文件;
  • 防止输入注入,XSS/SQL注入;
  • 权限的分配要合理;
  • 传输文件/数据要防止被拦截;
  • 防止爬虫,爬取信息;
  • 防止黑客的攻击;

安全性测试:代码走读,工具的检查;

9.性能测试

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

10.内存泄漏

分配的资源没有回收,导致内存越来越少,最后导致内存没有可用的,这就是内存泄漏,而内存泄漏产生的原因:

  • 程序写的有问题,没发回收内存;
  • API函数使用不正确,无法回收内存;
  • 分配内存后,忘记回收内存;

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


二.按是否查看代码划分

软件测试进阶篇_第10张图片

1.黑盒测试

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

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

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

2.白盒测试

白盒测试就是分析代码的逻辑结构,查看代码是否规范,分析代码的逻辑结构,对代码进行测试,看代码是否实现了需求,例如单元测试就可以使用白盒测试;
白盒测试的测试方法:语句覆盖(将每一处代码都走到),路径覆盖(if else switch case try catch finally),循环覆盖(while for),逻辑覆盖(包含后面的覆盖),判定覆盖,条件覆盖,判定组合覆盖,判定和条件覆盖,条件和条件组合;

3.灰盒测试

灰盒测试就是既关心软件功能的输入和输出,也关心软件内部程序的实现!


三.按照开发阶段划分

测试金字塔:
软件测试进阶篇_第11张图片
UI Tests是界面测试,Service Tests是集成,接口测试,Unit Tests是单元测试,代码层面的测试!
测试金字塔的特点:越往底层走,测试效率越高;越往底层走,定位问题越容易;越往底层走,独立性越高,耦合性越低;

1.单元测试阶段

单元测试指的就是对软件组成的最小单元的测试,就是对代码的某个类或是某个方法进行测试,就是查看测试单元的功能是否正常

  • 测试阶段:测试前(TDD测试驱动开发),测试后;
  • 测试方法:白盒测试;
  • 测试人员:白盒测试工程师,开发人员;
  • 测试依据:详细设计文档;
  • 测试内容:接口测试,局部数据结构测试(局部变量),路径测试,边界测试,循环测试,错误处理测试;

2.集成测试

集成测试就是按照一定的逻辑和策略把单元组合在一起,形成一个具有完整功能的大模块来进行测试;

  • 测试阶段:单元测试;
  • 测试方法:灰盒测试
  • 测试人员:黑盒测试工程师/白盒测试工程师;
  • 测试依据:概要设计文档;
  • 测试内容:模块功能的正确性,组成模块的单元之间的接口测试,全局数据结构测试,单个模块的功能缺陷对整个模块的影响

3.系统测试

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

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

补充:

  • 回归测试:当系统引入新代码的时候,测试人员往往需要验证新的代码对旧的功能产生的影响,所做的测试就叫回归测试(增加新的功能,修改BUG),现在一般都是自动化测试;
  • 冒烟测试:在软件开发完成之后,要对软件的基础功能和核心流程进行测试,只有测试通过了,才能进入正式的测试环境中,如果测试不通过,测试人员有权利打回,让开发重新修改直至冒烟成功,冒烟测试是测试/开发人员进行的,冒烟测试是一个准入原则,只有这个通过了,才能进行后面的工作

4.验收测试

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

  • 测试阶段:系统测试之后;
  • 测试对象:整体软件系统;
  • 测试依据:用户需求;
  • 测试人员:用户;
  • 测试方法:黑盒测试;
  • 测试内容:同系统测试(文档测试,包括可用性分析文档,需求设计文档,软件设计文档,软件开发文档,功能手册,用户手册…)

四.按照实施组织划分

1.α测试

α测试是在β测试之前进行的,把用户或者非测试和开发的人请到开发现场进行的测试;

  • 测试环境:开发现场;
  • 测试人员:非开发和测试的人;

2.β测试

β测试就是让实际用户在实际使用环境中进行测试,测试完成后对问题进行统一汇总反馈;
α测试和β测试的区别:

  • 测试环境不同;
  • 测试时间集中程度不同;
  • α测试优先于β测试的

3.第三方测试

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


软件测试进阶篇_第12张图片

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

1.静态测试

不运行代码,检查代码的风格,格式是否符合公司的规范标准,及检查代码的逻辑结构是否满足需求要实现的功能;
软件测试进阶篇_第13张图片

2.动态测试

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


六.按照手工划分

1.手工测试

按照测试用例,手工去测试系统的功能
缺点:两大容易出错;效率低;有些极端情况无法测试到;
优点:进行探索性测试,比较灵活;

2.自动化测试

自动化测试就是机器按照认为设定好预设人条件运行(脚本),这些预设包括正常的和异常的,去检查软件系统有没有符合设定的条件;自动化测试其实就是把手工测试用例转化成脚本运行的,这个后面再详细介绍!


七.按照地域划分

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

1.软件国际化测试

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

2.软件本地化

具体到某一个国家,这个简单了解就可以了!


软件测试进阶篇_第14张图片

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