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

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

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 本地化测试

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


相关文章
|
6天前
|
芯片
LDO的原理及测试方法
一、基本结构 这是LM317芯片的核心,这个电路单元称为Bandgap Reference带隙基准源。属于模拟集成电路中的经典电路结构。 LDO拓扑结构图 常见的基本结构 利用VBE的负温度系数,而VT是正温度系数,正负温度系数抵消就的得到稳定的基准参考电压了(三极管的方程VBE=VT*In(lC/IS))。 二、测试意义 了解集成电路的内部结构对测试有意义么? 1、了解内部结构,才能更好的理解测试原理或者设计测试方案2、可以学习提升对电路结构的理解能力。 针对LM317,了解了内部简单原理,可以知道1、内部结构设计针对的是温度系数,因此可能受温度的影响,实际也是会受到温度的影
152 88
|
5天前
|
机器学习/深度学习 敏捷开发 大数据
软件测试的演变之旅:从传统方法到自动化革命
在数字时代的浪潮下,软件测试作为保障产品质量的关键一环,经历了从手工测试到自动化测试的重大转变。本文将探讨这一演变背后的驱动力、所面临的挑战以及未来的发展趋势,为读者揭示软件测试领域的深层次变革。
|
9天前
|
测试技术 数据安全/隐私保护
软件测试的艺术:如何高效地编写测试用例
【9月更文挑战第2天】在软件开发的海洋中,测试用例是导航灯塔,指引着质量保障的航向。本文将带你航行于测试用例编写的技巧之海,从理解需求到设计思路,再到实际执行,我们将一起探索如何高效而精准地构建测试用例,确保软件的稳健与可靠。
20 0
|
11天前
|
测试技术 UED Python
探索软件测试的边界:自动化与手动测试的协同
【8月更文挑战第31天】 在追求效率和质量的软件生产中,自动化测试与手动测试的辩论从未停止。本文将通过实际案例,揭示二者如何相辅相成,共同构建更健壮的软件测试体系。我们将深入探讨自动化测试的优势、手动测试不可替代的角色以及它们如何在实际项目中协同工作,旨在为读者提供一种平衡的视角来看待软件测试的实践。
|
11天前
|
安全 数据安全/隐私保护 架构师
用Vaadin打造坚不可摧的企业级应用:安全性考虑全解析
【8月更文挑战第31天】韩林是某金融科技公司的架构师,负责构建安全的企业级应用。在众多Web框架中,他选择了简化UI设计并内置多项安全特性的Vaadin。韩林在其技术博客中分享了使用Vaadin时的安全考虑与实现方法,包括数据加密、SSL/TLS保护、结合Spring Security的用户认证、XSS防护、CSRF防御及事务性UI更新机制。他强调,虽然Vaadin提供了丰富的安全功能,但还需根据具体需求进行调整和增强。通过合理设计,可以构建高效且安全的企业级Web应用。
22 0
|
11天前
|
测试技术
软件测试的艺术与科学:探索自动化测试的最佳实践
【8月更文挑战第31天】在软件开发的海洋中,测试是确保航船稳健前行的罗盘。本文将带你揭开软件测试的神秘面纱,深入探讨自动化测试的魅力和挑战。我们将一起航行于代码的波浪之中,学习如何构建稳固的测试框架,以及如何利用这些框架来捕捉那些潜藏在深处的缺陷。加入我们,让我们一起提升软件质量,确保每一次航行都能抵达成功的彼岸。
|
11天前
|
测试技术 数据库
确保数据访问层的可靠性:详细解析使用Entity Framework Core进行隔离的单元测试方法
【8月更文挑战第31天】在软件开发中,单元测试是确保代码质量的关键。本文通过一个在线商店的商品查询功能案例,介绍了如何使用EF Core和Moq框架实现数据访问层的隔离测试。通过模拟`ApplicationDbContext`,我们能够在不访问真实数据库的情况下对`ProductService`进行单元测试,提高测试效率并保证测试稳定性。这种方法是实现高效、可靠单元测试的重要手段。
21 0
|
12天前
|
Web App开发 安全 测试技术
软件测试的艺术:探索自动化测试框架
【8月更文挑战第31天】在软件开发的海洋中,测试是确保船只安全航行的灯塔。本文将带你领略自动化测试框架的魅力,通过深入浅出的方式,让你快速掌握如何搭建和运用这一工具来提升软件质量。我们将从基础概念讲起,逐步深入到实战应用,最终实现代码与理论的完美结合。让我们启航,共同探索自动化测试的世界!
|
15天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
18天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~