您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 其他相关 > 正文

软件测试各阶段测试方法

发表于:2021-07-16 作者:m0_51902990 来源:CSDN

软件测试过程

一、单元测试

单元测试又称为模块测试,是最小单位测试。

· 单元测试具有独立性,可以与系统其他部分分隔离出来,从而完成测试,其依据是详细设计。

· 其测试对象是软件设计的最小单位模块与组件,类、文件、窗口、函数、菜单、报表或一个存储过程都可以作为一个单元进行测试。

单元测试可以发现的缺陷类型:

· 计算错误

· 需求或功能遗漏

· 程序路径选择错误

· 执行方法:

· 代码扫描工具:SonarQube + PMD

测试原则

· 尽可能保证测试用例相互独立(测试用例中不能直接调用其他类的方法,而应在测试用例 中重写模拟方法)。

· 此阶段一般由软件的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。

单元测试的好处

· 尽早的发现缺陷

· 利于重构 

· 简化集成

单元测试的不足

不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误 ? 每行代码需要3~5行代码进行单元测试,存在投入与产出的平衡。

二、集成测试

是将已分别通过测试的单元按设计要求组合成系统或子系统,再 进行的测试。目的在于检查这些单元之间的接口是否存在问题。

测试目标:API

对集成的组件之间的接口和组件与组件的协同工作进行测试。

测试依据

· 软件和系统设计文档

· 系统架构

· 定义和描述接口的文档、工作流和用例等

执行方法:

· 工具:Postman

· 自动化测试框架:python + requests + ddt + nose2

测试原则

· 尽早集成测试关键模块

· 尽早测试包含I/O的模块

集成测试的好处

· 可以检查一系列的环境配置正确与否

· 可以迅速定位BUG

· 可以为功能测试和性能测试提供支持

集成测试的不足

· 难以完成业务场景测试

· 无法测试前端页面

三、系统测试

是充分运行软件系统,以验证系统是否满足产品的质量需求。系统测试分为:

· 功能测试

· 非功能测试

· 性能测试、容量测试

· 安全性测试

· 兼容性测试

· 可靠性测试

集成测试和系统测试之间的比较:

测试内容:集成测试是测试各个单元模块之间的接口,系统测试是测试整个 系统的功能和性能;

测试角度:集成测试偏重于技术的角度进行测试,系统测试是偏重于业务的 角度进行测试。

四、验收测试

验收测试:也称交付测试,是针对用户需求、业务流程进行的正式 的测试,以确定系统是否满足验收标准,由用户、客户或其他授权机 构决定是否接受系统。在软件产品完成了系统测试之后、产品发布之前所进行的测试。验收测试一般会根据产品产品需求(用户故事),严格的逐项的检查产 品,确保所开发的软件产品符合用户预期的各项要求。

静态测试与动态测试

静态测试的特点:静态测试不必动态运行程序,也不必进行测试用例设计和结果判断等工作。静态测试可以由人工进行,充分发挥人的逻辑思维优势。静态测试实施不需要特别的条件,容易开展。

动态测试的特点

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

白盒测试和黑盒测试

白盒测试的重点是进行代码覆盖,而黑盒测试着重进行功能、性能的测试。 白盒测试中可能不考虑软件的外在表现特性,往往根据运行的代码来判 断测试的结果。而黑盒测试则不关心程序的内部逻辑结构,只提供输入和操 作过程,通过软件运行给出的运行结果来判断测试是否通过。 在实践中,单元测试主要是采用白盒测试方法,而除单元测试之外其他 阶段的测试则大都采用黑盒测试方法。有时并不能完全区分进行的是哪种测 试,往往把两者结合起来会得到更好的测试效果。

灰盒测试

是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试 阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰 盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻 辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。灰盒测试关注的是一个模块或模块之间的接口问题。

手工测试与自动化测试

手工测试:就是由人去一个一个的输入用例,然后观察结果,和 机器测试相对应,属于比较初级但是必须的一个步骤。

自动化测试:通过将测试执行部分或者全部交由机器执行的一种 测试,叫做自动化测试。这种测试不需要人的实时参与。同时这 种测试在小规模应用时会比手动测试昂贵许多。

测试自动化:这是一种让测试过程脱离人工的一次变革。对于 控制成本,控制质量,回溯质量和减少测试周期都有积极影响 的一种研发过程。

适合使用自动化测试的情况

版本稳定、项目周期长、脚本可复用。

不适合使用自动化测试的情况

· 定制型项目(一次性的)

· 项目周期很短的项目

· 涉及业务规则复杂的对象

· 关于美观、声音、易用性的测试

· 很少运行的测试

· 测试的软件不稳定

· 涉及物理交互的测试

冒烟测试过程中,需要注意的是:

· 开发协同

· 注重效率

· 评估用例

回归测试

过一段时间以后再回过头来对以前修复过的缺陷重新进行测试,看该缺陷是否会重新出现 ? 修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误 ? 回归测试贯穿整个测试活动,且占据很大的工作量。

功能测试:对产品的各功能进行验证,根据功能测试用例,逐项测试,检查 产品是否达到用户的要求。

性能测试:观察系统在一个给定的环境和场景中的性能表现是否与预期目标 一致,评判系统是否存在性能缺陷,并根据测试结果识别性能瓶颈,改善系统性 能的完整的过程。

负载测试:在一定的软件、硬件及网络环境下,通过改变系统负载方式、增加负 载等来发现系统中所存在的性能问题。用于确定系统所能承载的最大用户数、最 佳用户数。关注不同用户数下的系统响应时间及服务器的资源利用率。

压力测试:在一定的软件、硬件及网络环境下,通过模拟大量的虚拟用户向服务 器产生负载,使服务器的资源处于极限状态下长时间连续运行。目的测试服务器 在高负载情况下是否能够稳定工作,挖掘系统最脆弱的位置。

稳定性测试(可靠性测试):在一定的软件、硬件及网络环境下,模拟一定数量 虚拟用户运行一种或多种业务,长时间的运行(7*24小时)系统。目的是检测系统 在长时间运行下的稳定性和性能相关指标是否符合预期。

易用性测试:指用户使用软件时是否感觉方便,也称为用户体验测试。

界面测试:测试用户界面的布局是否合理、整体风格是否一致、各个控件的 放置位置是否符合客户使用习惯,此外还要测试界面操作便捷性、导航简单 易懂性,页面元素的可用性,界面中文字是否正确,命名是否统一,页面是 否美观,文字、图片组合是否完美等。

安装测试:确保该软件在正常情况和异常情况的不同条件下都能进行安装。 https://baike.baidu.com/item/

首次安装、重复安装

卸载

升级

文档测试:检验各种文档的完整性、正确性、一致性、易理解性、易浏览性。软件产品的文档分为三大类、开发文档、用户文档、管理文档

兼容性测试:指检查软件之间能否正确地进行交互和共享信息。软件兼容性 测试工作的目标是保证软件按照用户期望的方式进行交互。

兼容性分类

向前兼容与向后兼容:向前兼容是指可以使用软件的未来版本,向后兼容是指可 以使用软件的以前版本。

硬件兼容:与整机兼容、与外设兼容。

软件兼容:操作系统/平台、应用软件之间的兼容、不同浏览器的兼容、数据库的 兼容、软硬件配合兼容。

数据兼容:不同版本间的数据兼容、不同软件间的数据兼容。

安全测试:指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。

安全性测试方法:

功能验证:权限管理、加密、认证等。

漏洞扫描:使用工具。

模拟攻击试验:跨站攻击。

侦听技术:在数据通信或数据交互过程中,对数据进行截取分析的过程。

恢复测试:主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。 

应该检验以下内容:

·自动恢复:重新初始化、数据恢复以及重新启动是否正确。

·人工恢复:还需估测平均修复时间,确定其是否在可接受的范围内。

为什么要编写测试计划?

· 领导能够根据测试计划做宏观调控,进行相应资源配置等。

· 测试人员能够了解整个项目测试情况,以及项目测试不同阶段所要进行的工作等。

· 便于其他人员了解测试人员的工作内容,进行有关配合工作。

什么时间开始编写测试计划?

测试需求分析前总体测试计划,测试需求分析后详细编写测试计划。

测试计划编写六大要素?

· Why -为什么要进行这些测试。

· What -测试哪些方面,不同阶段的工作内容。

· When -测试不同阶段的起始时间。

· Where-相应的文档、缺陷的存放位置、测试环境等。

· Who- 项目相关人员组成,安排哪些测试人员测试。

· How-如何去做,使用哪些测试工具以及测试方法进行测试。

什么是测试报告?

· 测试报告是测试阶段最后的文档产出物。

· 测试报告是指把测试的过程和结果写成文档,对发现的问题和缺陷进 行分析,为纠正软件中存在的质量问题提供依据,同时为软件验收和交付打下基础。

测试报告的元素?

· 引言(目的,背景,缩略语,参考文献);

· 测试概要(测试方法、范围、测试环境、工具);

· 测试结果与缺陷分析(功能、性能);

· 测试结论与建议(项目概况、测试时间、测试情况、结论性汇总);

· 附录(缺陷统计)。

配置管理

通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范 的一系列措施。配置管理的目标是记录软件产品的演化过程,确保软件开 发者在软件生命周期中各个阶段都能得到精确的产品配置。

配置管理工具是指支持完成配置项标识、版本控制、变化控制、审计和状 态统计等任务的工具,如cvs、vss、Harvest、ClearCase等。

禅道的使用

·需求管理

·用例管理

·bug管理