首页 编程语言 如何设计功能测试用例

如何设计功能测试用例

最近招聘面试测试工程师,发现很多测试工程师都是半路出家,对一些基本的测试概念,思路与技术没有认知。在设计测试用例的时候只是基于直觉与经验去测试。这就导致测试用例的设计既不全面,也不科学。

一般功能测试指的都是黑盒测试。就是测试工程师基于需求文档,对开发完的功能进行测试。也就是说,功能测试都是基于需求的黑盒测试。而需求主要归为两大类:

  • 显式功能性需求:指的是需求中明确规定且用户可以感知到的需求,比如“访客用户访问管理员页面时会跳转到登录页”。
  • 非功能性需求:指的是用户无法直接体验到的,非具体功能性的需求,但这种非功能性需求在做功能性测试的时候也会涉及到,因为很多非功能性的需求会影响到功能的可用性与用户体验,比如性能测试。

下边我们分别来看一下两类不同的需求都有哪些测试用例设计方法或思路。

1、显式功能性需求

对于显式功能性需求我们最长用到的方案主要有三种:

  • 等价类划分法
  • 边界值分析法
  • 错误推断法

1.1、 等价类划分法

我们如果想测试一个功能的最傻的办法就是穷举。比如说一个密码验证功能,我们把所有的可能的密码都尝试一遍,自然就可以覆盖掉到所有的问题与可能。但是这种穷举的方法明显是做不到的。因此我们要用到等价类划分法。

等价类划分法就是说我们将所有可能的输入数据或操作分为多组不同的子集,每个子集中的数据与操作对发现程序中的潜在错误都有同等的效应。这样我们就将一个子集称为一个等价类。比如输入各种与用户名不相符的密码,是一个等价类;输入各种不存在的用户名是另一组等价类。这样在测试的时候,我们只要在每个等价类中选择一个典型操作,就可以达到较好的测试覆盖度。

等价类还会分为有效等价类和无效等价类两种。有效等价类指的是合理的、有意义的输入,主要用来验证功能是否实现了某个功能。无效等价类与有效等价类相反,指的是无意义的,超过软件规格的,不合理的输入,主要用来测试功能的健壮性,看是否考虑了如何处理不合理的情况。

1.2、边界值分析法

在我们在测试合理与不合理的数据的时候,往往最容易出现问题的就是合理与不合理的边界,这时我们就需要使用边界值分析法了。边界值分析法,就是对恰好大于、小于和等于边界的值进行测试,来验证程序是否做到了合适的处理。边界值分析法一般是作为等价类的补充,来加强测试功能实现的程度与健壮性保障的程度,是否符合规格。

1.3 错误推测法

在测试的时候就算我们使用了等价类划分法和边界值分析法,也很可能会遗漏一些需求中没有清晰提出,技术上比较隐蔽的错误。这种错误就需要测试人员通过已有的经验、对功能实现可能的方法的理解或直觉,来推测出软件中可能存在的各种错误与场景,然后编写测试用例来进行验证,这就叫做错误推测法。比如,登录超时后,某个需要权限操作的功能在使用的时候,是否跳到了登录页,还是直接报错,甚至说依旧可以操作。这种错误是需要测试人员一定的经验、技术积累与直觉的。

虽然说功能性测试往往是黑盒测试,但是如果测试工程师对于功能的实现有一定的理解——比如说是否用了缓存、是否使用了消息队列、是否某个地方会消耗极大的性能等等——将会更容易的推断出哪些地方会产生错误。

2、非功能性需求

在测试工程师测试完显示功能需求之后,还要考虑到系统的非功能性需求。这种需求可能在文档中有明确提到,也可能并没有明确的提出。但是我们的测试工程师在测试的时候却必须要关注到。

2.1 兼容性测试

兼容性指的是开发的软件是否在各种平台都可以使用。比如我们开发一个网站,我们的用户可能会用到各种不同的浏览器访问我们的网站。这样我们在测试的时候,就不能只考虑到某一种浏览器。我们需要考虑到多种浏览器的兼容性。

兼容性测试可能会涉及到:

  • 不同厂商的浏览器及相同厂商不同版本的浏览器。
  • 不同的设备终端及操作系统
  • 不同的屏幕分辨率
  • 不同的用户软件环境(比如是否禁用了cookie、是否可以连接外网等)

2.2 安全性测试

我们的测试人员还需要关注到开发软件的安全性。这涉及到:

  • 用户隐私信息是否加密
  • 需要权限的资源是否有没有权限也可以被拿到的风险
  • 会不会受到跨站脚本的攻击
  • 会不会受到sql注入攻击
    等等

2.3 压力测试

测试人员也需要考虑的软件是否能够承载其需求所需的压力,例如:

  • 软件是否能在合理的时间内响应用户行为
  • 软件是否可能承载足够的请求
  • 软件在处理大数据量时会不会产生资源锁死
    等等

站心网

最近招聘面试测试工程师,发现很多测试工程师都是半路出家,对一些基本的测试概念,思路与技术没有认知。在..

为您推荐

DISC测试,让你轻松读懂领导

我们常说“性格决定命运”,企业家的性格决定着企业的命运,而身处企业中的我们,如何和不同性格的老板相处,则直接关系到我们的职场命运。企业家作为掌舵者,他的行为自然决定了整条大船如何行进。行为来自于习惯,..

使用 html2canvas 实现截图功能

html2canvas 是一个开源的 JavaScript 库,用于将网页上的 HTML 元素渲染成图像。它通过遍历页面的 DOM 树和计算样式,然后将其绘制到 <canvas> 元素上,最终生成图片。该库不依赖服务器端,而是通过浏览器端的 Java..

C#使用 Attribute 实现 AOP 功能

在 C# 中,通过自定义 Attribute 并结合一些技术(如动态代理、反射等)可以实现 AOP(面向切面编程)。AOP 通常用于日志记录、性能监控、权限验证等横切关注点。以下是一个使用 C# Attribute 实现 AOP 功能的示例。..

.NET 9 中System.Text.Json 的新增功能

在 .NET 9 中,System.Text.Json 进行了多个重要的更新和增强,进一步提升了 JSON 处理的性能、灵活性和易用性。以下是 .NET 9 中 System.Text.Json 的一些主要新增功能:1. 类型转换器 (Type Converters) 支持.NET ..

.NET 9 即将推出的功能Task.WhenEach

.NET 爱好者!我刚刚偶然发现了一个非常酷的新 PR,它被合并到 .NET 运行时存储库中,我想分享一个例子。希望您能为新的 .NET 版本大肆宣传!在即将到来的 .NET 9 版本中,我们预计会有一个名为 .它在这里让您的异步..

类似php iconv的函数功能,C#实现方法

在与一个第三方接口对接时,发现对方无法用GZip解压我发过去的数据,看了对方PHP的示例代码,发现对方使用的是PHP的$file = iconv("IOS-8859-1","UTF-8",gzencode($data_json));大致意思是要先压缩,在把压缩的数组..

系统架构7个非功能性需求

在软件系统里面,功能性需求是面向用户、详细明确的需求,由产品人员根据市场的需要提炼出来,是产品生命周期里最重要的一环。比如电商系统里面的优惠券功能,通常包含需求:优惠券分类、细分领券人群、核销优惠券等..

使用剪映图文成片功能将文章转为视频教程

最近因为ChatGPT的火爆也带火了很多AI工具,今天试用了剪映,它有一个图文成片的功能很强大,我用它尝试把一篇文章转为视频。首先准备文章内容,我直接复制了网站里的这边文章:https://www.leavescn.com/Articles/C..

4款功能强大桌面虚拟机软件推荐

虚拟机软件是现代计算机中必不可少的工具之一,它可以让我们在一台计算机上运行多个操作系统,这为开发人员、测试人员以及研究人员带来了很多便利。在这里,我们将探讨四款最强大的桌面虚拟机软件:VMware Workstati..

C# winform实现文件下载进度条功能

C#在winform中使用HttpClient类来执行文件下载,并结合ProgressBar控件来显示进度条。下面演示如何获取文件下载的状态并实现进度条功能:using System;using System.IO;using System.Net.Http;using System.Windows...

飞飞feifeicms定时自动采集插件程序,飞飞CMS自动采集功能

用途可采集单个资源站也可以采集多项资源资源站使用方法1.首先你要保证你的采集的资源站可以使用2.在飞飞后台创建一个管理员账号,给予采集权限3.下载压缩包,解压放在网站根目录里面有文件linux.php和cfg.phplinux...

.Net测试模拟库FakeItEasy用法示例

FakeItEasy简介FakeItEasy是一个.NET平台的简单mocking开源库,它提供了一个简单的方式来模拟对象和创建伪造对象,方便我们在单元测试中更容易地创建模拟对象。FakeItEasy库使用非常简单,方便开发者模拟各种情况,..

Quartz.NET高级功能应用实例

Quartz.NET 是一个强大的开源作业调度库,提供了许多高级功能。Quartz.NET官网:https://www.quartz-scheduler.net/以下是 Quartz.NET 的常用高级功能:Cron 表达式触发器: 使用 Cron 表达式定义灵活的调度规则,实..

winform最小化到系统托盘

在 WinForms 中,你可以实现将应用程序最小化到系统托盘的功能。以下是实现该功能的一般步骤:添加命名空间引用:确保你的项目中引用了以下命名空间:using System.Windows.Forms;创建一个 NotifyIcon 控件:在你的..

ScottPlot:功能强大且开源免费的C#绘图控件

概述ScottPlot是可以用于交互显示大数据集合的一个免费开源的.NET绘图控件类库,只需要用几行代码,就可以画出各种曲线,条形图,饼图,散点图等等。快速开始在各个C#的开发框架ScottPlot的快速开始代码如下:Window..

Google Duet AI值得关注的7个功能点

Google最近推出了Duet AI,以下7个功能特点值得关注:1、编程助手Duet AI是一个代码助手,帮助你快速解决问题。它可以即时为你提供解决方案,并通过AI的聊天功能在VS Code中提供更多的调试支持。2、谷歌幻灯片Duet的..

.NET实现发送邮件功能

在 .NET(C#)中发送邮件通常使用 System.Net.Mail 命名空间中的 SmtpClient 类。以下是一个示例代码,演示了如何在 .NET 中使用 SmtpClient 发送邮件:using System;using System.Net;using System.Net.Mail;class ..

C#如何实现截屏功能

在 C# 中实现截屏功能可以使用 .NET Framework 或 .NET Core 中提供的一些类库和方法。以下是其中一种实现方法:使用 System.Drawing 命名空间:using System;using System.Drawing;using System.Drawing.Imaging;us..

C#使用NBuilder库产生测试数据

NBuilder 是一个基于 C# 的构建器工具,用于生成可重用的、可测试的、可维护的对象。它使用注解来生成构建器 API,该 API 可用于以链式的方式初始化对象。以下是NBuilder库的一些主要用途:生成测试数据:在进行单元..

开发转测试需要掌握哪些技能?

当开发人员转向测试岗位时,需要掌握以下技能和知识:测试基础:熟悉软件测试的基本概念、方法和流程,包括单元测试、集成测试、系统测试等。测试工具:掌握常用的测试工具和框架,如Selenium、Appium、JUnit、TestN..

发表回复

返回顶部