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

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

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

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


相关文章
|
9天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
23天前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
13天前
|
测试技术 开发者 UED
探索软件测试的深度:从单元测试到自动化测试
【10月更文挑战第30天】在软件开发的世界中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的不同层次,从基本的单元测试到复杂的自动化测试,揭示它们如何共同构建一个坚实的质量保证体系。我们将通过实际代码示例,展示如何在开发过程中实施有效的测试策略,以确保软件的稳定性和可靠性。无论你是新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
11天前
|
jenkins 测试技术 持续交付
软件测试中的自动化测试策略
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和效率的关键工具。本文将探讨自动化测试的重要性、实施策略以及面临的挑战,旨在为软件开发团队提供实用的指导和建议。
|
15天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
30 2
|
20天前
|
测试技术
探索软件测试中的“思维侧翼”——如何以创新思维引领测试策略###
本文旨在探讨软件测试领域中,如何通过培养与运用创新思维,提升测试策略的有效性与效率。不同于传统的技术解析或理论阐述,本文将以“思维侧翼”为喻,启发读者从不同维度审视软件测试,寻找突破常规的思路与方法。我们相信,在快速迭代的软件开发周期中,灵活多变且富有创造力的测试思维,是发现潜在缺陷、保障产品质量的关键。 ###
|
21天前
|
测试技术 定位技术 UED
软件测试的艺术:探索性测试的深度与广度
【10月更文挑战第22天】在软件开发的广阔舞台上,测试扮演着不可或缺的角色。本文将带领读者深入理解探索性测试(Exploratory Testing)的精髓,揭示其在现代软件质量保证中的价值。我们将通过实际案例、生动比喻和具体步骤,展现如何像艺术家一样进行软件测试,确保产品质量的同时,提升测试的效率和乐趣。文章不仅适合初学者建立测试基础,也能帮助资深测试人员深化对探索性测试的理解和应用。
|
19天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
10天前
|
测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
【10月更文挑战第31天】 在当今快速迭代的软件开发环境中,自动化测试成为确保软件质量和加速产品上市的关键。本文探讨了自动化测试的重要性、实施策略以及一些最佳实践。通过分析不同类型的自动化测试工具和框架,本文旨在为软件开发团队提供一套实用的指导方案,以提高测试效率和质量。
|
7天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
36 3

热门文章

最新文章