软件测试目标
测试效率
测试覆盖率

软件测试的原则
一、测试证明缺陷存在,但不能保证系统不存在缺陷
二、穷尽测试不可能,设置终止条件
三、测试尽早进行
四、缺陷具备群集特性
五、测试的杀虫剂悖论:不定期修改测试用例和方法
六、测试的二八原则:20%重要模块测试
七、测试活动依赖于测试背景:安全性/并发性
这里写图片描述

软件测试分类

———————————————————————————

一、按测试阶段分类

单元测试、集成测试、系统测试、验收测试

1、单元测试

定义: 对软件中的最小可测试单元进行检查和验证
原则:
1)尽可能保证各个测试用例相互独立;
2)单元测试一般由代码的开发人员来实施;
好处:
1)能尽早发现缺陷;
2)有利于重构;
3)简化集成;
4)文档;
5)用于设计
限制:
1)不可能覆盖所有的执行路径,所以不能保证捕捉到所有路径的错误;
2)每一行代码,一般需要3~5行测试代码才能完成单元测试,所以存在投入和产出的一个平衡。
java单元测试框架:JUint

2、集成测试

**定义:是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动

和单元测试区别:
1)测试对象不同;
类 、模块
2)测试依据;
3)测试方法;

3、系统测试

定义:是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效的测试,以发现软件潜在的问题,保证系统的正常运行。
关注点:

4、验收测试

定义:也称为交付测试。针对用户需求、业务流程的正式的测试,确定系统是否满足延后标准,由用户、客户或其他授权机构决定是否接受系统。
细分:
用户验收测试
运行验收测试
合同和规范验收测试
alpha测试:开发端
Beta测试:用户端
——————————————————————————————-

二、按测试手段分类

黑盒测试、白盒测试
静态测试、动态测试
手工测试、自动化测试

1、黑盒测试

不关注内部,更贴近用户

一般系统测试阶段采用黑盒测试

测试覆盖率低<40%
复用率低,维护成本高

黑盒主要测试什么?
1、是否有不正确或遗漏功能?
2、在接口上,输入是否能正确的接收?是否输出正确的结果
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能满足要求?
这里写图片描述

2、白盒测试

强调逻辑覆盖
主要逻辑单位:语句、条件、条件组合、分支、路径
优点:迫使思考软件爱你实现原理、覆盖率高
缺点:昂贵、无法检测代码遗漏路径
这里写图片描述

3、静态测试

无需执行程序,通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,从而减少错误出现的概率。

4、动态测试

通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率,正确性和健壮性等。

5、手工测试

由专门测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观判断的测试。

6、自动化测试

使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。‘
单元测试、接口测试、性能测试等
这里写图片描述
——————————————————————————————

三、按测试模式分类

1、传统的瀑布模型
这里写图片描述
![这里写图片描述](https://img-blog.csdn.net/20180901120015424?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZmVuZ2xpYW4=/font/5a6L5L2T/fontsize/400/fill/I0J BQkFCMA==/dissolve/70)
2、V模型
这里写图片描述
3、W模型
这里写图片描述
4、X模型
这里写图片描述
5、H模型
这里写图片描述

6、敏捷测试
这里写图片描述
这里写图片描述
7、基于脚本的测试-SBT
—————————————————————————————–

四、按测试类型分类

这里写图片描述

1、功能测试**

这里写图片描述
这里写图片描述

2、性能测试

性能测试:负载测试、压力测试、稳定性测试
这里写图片描述
这里写图片描述

静态性能评估:对web应用的页面进行静态分析,给出评估结果的性能分析方法
工具:YSlow PageSpeed

应用性能管理(APM):提供对性能的实时监控以及性能管理、故障管理的解决方案。

3、安全测试

对软件产品进行测试以确保其符合产品安全需求和质量标准

OWASP(open web application security project) :开放的web应用安全项目
The OWASP Top 10 2017 (10项最严重的 Web 应用程序安全风险)

A1:2017-注入
将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS
注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预
期命令或访问数据。
A2:2017-失效的身份认证
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,
或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
A3:2017-敏感数据泄露
许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可
以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据
容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据
以及浏览器的交互数据。
A4:2017-XML 外部实体(XXE)
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数
据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
A6:2017-安全配置错误
安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云
存储、错误的 HTTP 标头配置以及包含敏感信息的详细错误信息所造成的。因此,我们不仅需要对所
有的操作系统、框架、库和应用程序进行安全配置,而且必须及时修补和升级它们。
A7:2017-跨站脚本(XSS)
当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或
JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器
中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
A8:2017-不安全的反序列化
不安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以
利用它们来执行攻击,包括:重播攻击、注入攻击和特权升级攻击。
A9:2017-使用含有已知漏洞的组件
组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏
洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组
件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响。
A10:2017-不足的日志记录和监控
不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持
续性或转向更多系统,以及篡改、提取或销毁数据。大多数缺陷研究显示,缺陷被检测出的时间超
过200天,且通常通过外部检测方检测,而不是通过内部流程或监控检测。
这里写图片描述

4、渗透测试

通过模拟对软件系统的恶意攻击行为来评估系统安全性的一种测试

渗透测试VS安全测试
攻———-防
点———-面

5、兼容性测试

软件本身的兼容性:
不同平台下的兼容性
不同系统发行版
软件运行设备的兼容性:
32/64位系统,手机,平板,pc,电视盒子
软件互操作性:
比如开发的软件是否和主流微信兼容
浏览器兼容性:
浏览器内核不同

6、文档测试

针对软件产品的交付品,配套的文档类部件的测试。如用户手册、使用说明、用户帮助文档等。
文档测试关注要点
完整性、正确性、一致性、易理解性、易浏览性

7、可靠性测试

软件可靠性、硬件可靠性

8、易用性测试

是测试用户使用软件时是否感觉方便,是否能够保证用户使用体验的测试类型

9、本地化测试

针对软件的本地化版本实施的针对性测试
主要测试内容:
语言、书写习惯
时区、时期格式、货币
当地风俗、法律法规
政治敏感内容

10、部署测试

安装测试,验证系统部署过程,确保软件经过安装测试之后可以正常使用
主要测试内容:
在不同环境下的部署验证
参照部署文档执行,过程的合理、正确性
基础数据

11、无障碍测试

可访问测试,针对有障碍人士的测试

—————————————————————————————–

五、其他分类

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

总结

这里写图片描述

Logo

领路信创诚邀您共建高质量内容社区,投稿申请~

更多推荐