【软件测试】软件测试的方法

简介: 非正常运行时间可能是由于硬件,软件,网络故障和其他因素如断电等造成的,这些可以使系统停止运行,连接中断不能被访问,性能降低导致不能使用软件现有的服务

1. 按照测试对象划分

1.1 界面测试

界面测试是指按照界面的要求(UI设计稿)和界面的设计规则,对软件界面所展示的全部内容进行测试和检查


界面是直接和用户交互的,界面设计的好坏决定了用户使用软件的直观感受


界面测试一般包含以下内容:


验证界面和UI设计稿的一致性和正确性

验证界面的排版布局是否合理(字体大小,斜体,图片布局排版,清晰程度…)

验证界面每一个功能的正确性

验证界面的控件功能是否正常(滚动条,按钮,文本框,选项按钮…)

验证界面的色调和布局是否符合当下实事的发展

对不同分辨率下的界面进行测试

1.2 可靠性测试

可靠性指系统正常运行的能力或程度


可靠性 = 正常运行时间 正常运行时间 + 非正常运行时间 \frac{正常运行时间}{正常运行时间+非正常运行时间}

正常运行时间+非正常运行时间

正常运行时间


∗ 100 \ast100∗100%


非正常运行时间可能是由于硬件,软件,网络故障和其他因素如断电等造成的,这些可以使系统停止运行,连接中断不能被访问,性能降低导致不能使用软件现有的服务


不同的软件,可靠性要求不同:


一般软件,可靠性要求99.99%

特殊软件,如军事系统,可靠性要求99.999%

1.3 容错性测试

容错性是指自身或者外部一些异常的操作使得系统发生异常,系统能够自我处理这种错误操作或者异常的能力


容错性可从以下几个方面测试:


数据容错性,时间,25时60分,日期,5月32号

校验容错性,输入账号为16位,输17位的时候就输不进去

界面容错性,复杂或危险性较高的操作给用户提示信息,危险的按钮可以屏蔽,禁用

环境容错性,断电,断网,硬件设备出问题了,是否可以切换(用户无感知)到备用服务器

灾难恢复性测试: 人为让系统发生故障,测试系统是否能够很快恢复稳定,测试丢失的数据是否很快恢复


1.4 文档测试

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


1.5 兼容性测试

对软件的兼容性进行测试,主要考虑以下几个方面:


平台的兼容性,如不同的浏览器,不同的系统版本,不同的操作系统

软件本身的兼容性,比如开发的新功能不能影响旧功能

软件对用户数据的兼容性,比如数据库中某张表增加一个字段,不能影响用户之前存储的数据

软件对第三方软件的兼容性,不能影响其他软件的使用,如果和第三方软件有交互,数据要有兼容性

1.6 易用性测试

易用性旨在用户使用软件的时候有舒适,易用的体验


易用性包含的几个要素:


标准性和规范性

用户界面上的各中信息应该符合规范和习惯,否则用户使用起来会不舒适,并得不到用户的认可


直观性

让用户直接看到自己期望的操作,或者预期的结果


灵活性

用户可以根据自己的习惯选择适合自己的操作方式,如手机上的键盘有手写,9键,五笔,全键盘


注意: 灵活性和复杂性是正相关的,在两者之间找一个平衡点


舒适性

舒适性主要强调界面友好,美观,操作过程顺畅,色彩用运恰当,按钮的立体感等


1.7 安装卸载测试

应用的安装和卸载是任何一款APP最基本的功能,主要考虑以下几个方面:


软件可以正确的安装和卸载

安装和卸载过程中是否可以手动的暂停或取消

是否可以在不同系统,版本下安装

安装软件内存不足时有提示

安装和卸载时,断网,死机等异常情况下,软件是否正确并合理的应对

1.8 安全性测试

安全性是指信息安全,是指计算机系统或网络保护用户数据隐私,完整,保护数据正常传输和抵御黑客,病毒攻击的能力


常见的威胁:


病毒

黑客攻击

SQL,XML注入

防爬虫

1.9 性能测试

我们在使用软件的时候有时会碰到软件网页打开时越来越慢,查询数据时很长时间才显示列表,软件运行越来越慢等问题,这些问题都是系统的性能问题引起的


常见的性能问题如下:


资源泄露

资源瓶颈

线程死锁,线程阻塞

查询,加载信息慢

系统受外界影响越来越大

1.10 内存泄露测试

内存泄露是会累积的,只要执行的次数足够多,最终会耗尽所有可用内存,使软件的执行越来越慢,最后停止响应


常见的内存泄露有以下几种:


内存分配后没有回收

API函数使用不正确,无法回收

内存分配方式有问题,无法回收


2. 按照是否查看代码划分

2.1 黑盒测试

黑盒测试就是不关系软件内部代码的实现,不关心代码的逻辑结构,只关心输入输出是否符合预期


黑盒测试的优点:


不需要了解代码的实现和代码的逻辑结构

测试系统的功能,站在用户的角度使用功能,有利于培养测试人员的产品思维

测试用例是基于需求设计的,不容易遗漏需求

黑盒测试设计测试用例的方法有等价类,边界值,因果图,错误猜测法,场景法,正交法


2.2 白盒测试

白盒测试就是针对代码进行的测试,分析和测试代码的逻辑和结构以及实现的功能,看是否符合用户的需求


白盒测试包含六种测试方法:


语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,路径覆盖


2.3 灰盒测试

灰盒测试是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关心输

出、输入的正确性,同时也关心程序内部的情况


3. 按照开发阶段划分

3.1 单元测试

单元测试是对组成软件的最小单元模块进行测试


测试阶段:编码后,编码前(TDD)

编码前指测试驱动开发,测试人员先写测试代码空跑,开发人员根据异常写代码只到测试用例代码通过


测试对象:组成软件的最小单元模块

测试方法:白盒测试

测试人员:白盒测试工程师或开发人员

测试依据:代码注释和详细的设计文档

测试内容:模块接口测试,局部数据结构测试,边界测试,异常测试,路径测试

3.2 集成测试

集成测试是按照一定的策略把单元模块组合起来形成一个大的功能模块,对这个功能模块进行测试


测试阶段:单元测试后

测试对象:集成模块

测试方法:灰盒测试

测试依据:单元测试的模块和概要设计文档

测试人员:黑盒测试工程师或开发人员

测试内容:整个功能模块的正确性,全局数据结构测试,单个模块对整个功能模块的影响,模块之间的冲突

3.3 系统测试

当软件开发完,系统的全面的对软件功能进行测试


测试阶段:集成测试后

测试对象:整个系统

测试方法:黑盒测试

测试人员:黑盒测试工程师

测试依据:需求设计文档

测试内容:系统的功能,界面,易用性,可靠性,性能,兼容性,安全性等

回归测试: 当系统引入新的代码的时候,要查看新的代码是否影响了旧的功能,进行回归测试


冒烟测试: 正式测试之前,对软件系统的基本流程和核心功能进行测试,如果测通过,才同意正式测试


回归测试和冒烟测试都属于系统测试


3.4 验收测试

验收测试是软件上线前的最后一道测试,由用户或产品径路发起


测试阶段:系统测试后

测试对象:整个系统

测试方法:黑盒测试

测试依据:用户需求

测试人员:用户或产品经理

测试内容:同系统测试


4. 按照测试实施组织划分

4.1 α \alphaα测试

α \alphaα测试是让除了开发人员和测试人员以外的公司内部员工到开发现场去进行测试


4.2 β \betaβ测试

β \betaβ测试是让实际用户在实际使用环境下进行测试,不限时间和地点


α \alphaα测试和β \betaβ测试的区别:


测试人员和测试环境不同

时间集中程度不同,α \alphaα测试优先与β \betaβ测试

4.3 第三方测试

第三方软件测评机构对软件进行测试,主要是对业界的便准和规范进行测试


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

5.1 静态测试

静态测试就是不运行被测软件,只是静态地检查程序代码、界面或文档中可能存在错误的过程,不以测试数据的执行而是对测试对象的分析过程,仅通过分析或检查源程序的设计、内部结构、逻辑、代码风格和规格等来检查程序的正确性


5.2 动态测试

动态测试指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符


大多数软件测试工作都属于动态测试


6. 按照是否手工划分

6.1 手工测试

手工测试就是手动的执行测试用例,查看测试结果


优点:不可替代,无法被自动化测试替代,手工测试的过程人为可控,有利于做探索性测试

缺点:量大容易出错,效率低

6.2 自动化测试

自动化测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常和异常条件


自动化测试按照测试对象可以分为:UI自动化测试,接口自动化测试,性能自动化测试


自动化实施步骤:


完成功能测试,版本基本稳定

根据项目特性,选择适合项目的自动化工具,并搭建环境

提取手工测试的测试用例转化为自动化测试的用例

通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期

生成自动测试报告

持续改进,脚本优化

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


7. 按照地域划分

按照地域可以划分为国际化测试和本地化测试


7.1 国际化测试

什么是软件国际化?


软件国际化是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,使创建不同语言版本时,不需要重新设计源程序代码的软件工程方法


国际化测试的要点


是否对所有界面元素都进行了国际化处理,包括对话框、菜单、工具栏、状态栏、提示信息(包括声音的提示)、日志等

是否存在不同的字体大小,字体设置是否恰当。

日期,数字格式,货币等是否适应不同国家的文化习俗,如中文是年月日,而英文是月日年

排序的方式是否考虑了不同语言的特点,如中文按照第一个字的汉语拼音顺序排序,而英文按照首字母排序

在不同的国家采用不同的度量单位,软件是否能自适应和转换。

软件是否能在不同类型的硬件上正常运行,特别是在当地市场上销售的流行硬件上。

软件是否能在Windows或者其他操作系统的当地版本上正常运行。

联机帮助和文档是否已经翻译,翻译后的链接是否正常。正文翻译是否正确、恰当, 是否有语法

错误


7.2 本地化测试

之前所讲的全部都是本地化测试


相关文章
|
3天前
|
机器学习/深度学习 人工智能 测试技术
软件测试中的自动化测试实践与挑战
本文深入探讨了软件测试领域中的自动化测试,从基本概念到实际应用案例,揭示了自动化测试在提升软件开发效率和质量中的关键作用。同时,文章也分析了在实施自动化测试过程中面临的主要挑战,并提出了相应的解决策略。
18 5
|
5天前
|
敏捷开发 测试技术 UED
软件测试的艺术:探索性测试的力量
【9月更文挑战第14天】在软件开发的海洋中,测试是确保航船不沉没的灯塔。本文将带你领略一种非传统的测试方法——探索性测试的魅力和力量。我们将一起揭开这种方法的神秘面纱,通过具体案例分析,理解它如何提升软件质量和用户体验。准备好扬帆起航,一起探索未知吧!
|
5天前
|
监控 jenkins 测试技术
软件测试中的自动化测试策略与实践
本文将深入探讨自动化测试在软件开发中的重要性及其实施策略。我们将从自动化测试的基本概念入手,分析其在提高软件质量、缩短开发周期和降低维护成本方面的优势。通过具体案例,展示如何有效地规划和执行自动化测试,以及如何评估其效果。
13 1
|
7天前
|
Devops jenkins 测试技术
敏捷测试价值观、方法和实践读书笔记(10)
本文介绍了敏捷测试的延伸实践,重点讨论了持续集成(CI)和持续部署(CD)的概念与实践方法。持续集成强调频繁提交代码至主干并自动化构建测试,确保快速反馈和高质量代码。持续部署则进一步实现自动化部署,通过蓝绿部署、金丝雀发布等方式提升软件交付效率。此外,文章还探讨了持续反馈机制,如A/B测试和混沌工程,以及DevOps文化下的测试策略,强调测试在整个开发流程中的重要性。
14 0
敏捷测试价值观、方法和实践读书笔记(10)
|
7天前
|
XML 存储 API
敏捷测试价值观、方法和实践读书笔记(8)
本文介绍了API的基础知识,区分了Web Service和Web API的概念,详细阐述了Web Service中的SOAP服务和REST服务的特点及区别。同时,文章还探讨了如何在项目中进行API测试,包括API测试的类型和实施阶段,强调了API在现代软件开发中的重要性和优势。
8 0
敏捷测试价值观、方法和实践读书笔记(8)
|
3天前
|
敏捷开发 测试技术 UED
软件测试中的探索性测试方法
在软件开发过程中,测试是确保产品质量的重要环节。本文将探讨一种常被忽视但极其重要的测试方法——探索性测试。通过分析其定义、优势及实际应用案例,揭示如何更有效地发现软件缺陷,提升软件质量。
11 0
|
5天前
|
测试技术 持续交付
软件测试中的自动化测试实践与探索
在软件开发生命周期中,测试阶段是确保产品质量和稳定性的关键环节。随着技术的快速发展,自动化测试逐渐成为提升测试效率和覆盖率的重要手段。本文将探讨自动化测试的基本概念、工具选择、实施策略以及面临的挑战,旨在为读者提供关于如何在项目中有效应用自动化测试的指导性见解。
11 0
|
6天前
|
监控 Java 测试技术
探索软件测试中的自动化测试策略
在软件开发的生命周期中,测试阶段是确保产品质量和性能的关键步骤。随着技术的进步,自动化测试已成为提高测试效率、减少人为错误的重要手段。本文将探讨自动化测试的基本概念、优势以及实施策略,旨在为读者提供一个关于如何有效利用自动化测试来提升软件开发质量的清晰视角。
|
8天前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
53 7
Jmeter实现WebSocket协议的接口测试方法
|
8天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
35 3
快速上手|HTTP 接口功能自动化测试