软件测试用例篇

news/2024/9/19 17:37:16 标签: 测试用例, 软件测试

目录

一、测试用例的概念

二、设计测试用例的万能公式

1. 常规思考+逆向思维+发散性思维

2. 万能公式

3. 弱网测试 && 安装卸载测试


一、测试用例的概念

什么是测试用例

        测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。

设计测试用例原则一:

  • 测试用例中一个必需部分是对预期输出或结果进行定义。

        假如我们现在买回来了一个新的电视机,需要对其进行测试,根据经验我们需要进行以下测试:

  1. 开机测试
  2. 切换频道
  3. 测试一下网络电视
  4. 蓝牙功能
  5. ……

        这里一条一条的表述就是一个测试用例,以上这些是我们买完电视以后一定会做的测试内容,而这些测试内容并不会写在纸上以文字的形式展现出来。

        软件中涉及到的特性太多了,仅仅通过头脑风暴是无法完成一次完整的测试,那应该怎么办呢?

        这时候就需要我们去编写测试用例,通过测试用例我们可以想到要测试哪些内容,通过一次又一次的更新修改将测试用例写全,功能覆盖更高即可。

  • 笔试的时候编写测试用例题,需要按照 excel 表格的方式来答题(会涉及到测试用例的要素)
  • 而面试的时候回答测试用例题,按照思维导图的方式一一道来即可(不会涉及到测试用例的要素)

        什么是要素呢?我们在编写测试用例的时候,每个用例需要给出这些要素对应的信息。

用例编号test-01
标题成功注册网易邮箱
测试方式手工测试
功能模块注册登陆
重要性重要
测试前提系统运行正常,邮件服务器已开启
测试环境win10 Chrome版本103.0.5060.66(正式版本)(64位)
测试数据

邮箱地址:996402440@qq.com

密码:123456

手机号:12312341234

测试步骤

1.打开谷歌浏览器,输入网易注册地址:https://mail.163.com/register/index.htm

2.输⼊邮箱地址,密码,⼿机号,获取验证码并输⼊正确的验证码,勾选协议

3.点击注册按钮

期望结果展现注册成功的结果页,并且使用刚注册的账号可以正常登陆并进入邮箱首页

为什么需要测试用例呢,不写测试用例可以进行测试吗?测试中可能会遇到很多问题,诸如:

  • 不知道是否较全面的测试了所有功能
  • 测试的覆盖率无法衡量
  • 对新版本的重复测试很难实施(即回归测试无法仅通过人工测试的方式进行历史功能的回归)
  • 存在大量冗余测试影响测试效率

测试用例的出现就是解决这些问题。另外,测试用例的作用还可以避免测试人员被迫背锅~~

二、设计测试用例的万能公式

现在有一款产品,要求我们对“门锁”设计测试用例,假如你是测试人员,你会怎么设计呢?

        可以看出,用例的设计最重要的一点是保证功能是正确的。上图给出的案例,在互联网企业中,这样去设计测试用例的非常少,缺乏经验的铁子往往以这样的思路去设计。

1. 常规思考+逆向思维+发散性思维

正确设计测试用例的思想:常规思维+逆向思维+发散性思维

设计测试用例的原则二:

  1. 测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应该根据无效和未预料到的输入情况。
  2. 检查程序是否“未做其应该做的”仅是成功的一半,测试的另一半是检查程序是否“做了其不应该做的”。(是上一条原则的必然结果)
  3. 计划测试工作时不应默许假定不会发现错误。

        若仅仅通过头脑风暴去设计测试用例,那么当我们面对面试官时,能够想出来的用例是寥寥无几的,比如现在面试官突然让你说出你家里都有哪些电器,可能你会说:洗衣机、冰箱、电脑……突然,脑袋就宕机了,明明家里用到的电器非常多,但就是怎么都想不起来了。

        但是如果我们按照电器所处的空间去说,绝对会让面试官对你刮目相看,比如:

  1. 客厅

    • 电视
    • 空调
    • 音响系统(包括扬声器、功放等)
    • 电风扇
    • 吸尘器
    • 空气净化器
  2. 厨房

    • 冰箱
    • 微波炉
    • 电磁炉或燃气灶
    • 抽油烟机
    • 洗碗机
    • 烤箱
    • 咖啡机
    • 热水壶
  3. 卧室

    • 空调
    • 电视
    • 床头灯
    • 闹钟
    • 加湿器
    • 空气净化器
    • 电热毯
    • 电子设备充电器(手机、平板电脑等)
  4. 浴室

    • 电热水器
    • 吹风机
    • 电动牙刷
    • 剃须刀
  5. 书房/办公室

    • 电脑
    • 打印机
    • 扫描仪
    • 路由器
    • 台灯
    • 充电器
    • 多孔插座
  6. 洗衣房/阳台

    • 洗衣机
    • 烘干机
    • 熨斗
  7. 室外

    • 室外照明
    • 安全摄像头
    • 电动门(车库门等)
    • 室外音响系统

🌴所以在设计测试用例的时候我们需要有思路的去设计。 

2. 万能公式

设计测试用例的万能公式:

  • 功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试。

🍂功能测试:

        功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程。外部规格说明是一份从最终用户的角度对程序行为的精确描述。功能测试通常是一项黑盒操作。在进行功能测试时,需要对规格说明进行分析以提炼测试用例

        然而,不仅是工作中还是面试中,可能会存在需求不明确的功能?这种情况下该如何进行功能测试呢?

  • 查找其他相关文档,来帮助理解所要测试的产品需要完成的目标;
  • 尽量多参加项目组内的会议,比如需求讨论、设计讨论、计划讨论等,能够加深对产品的理解;
  • 召集相关人员,对你整理的结果进行讨论,通过评审后,这份文档就可以作为依据来设计你的case了;
  • 如果是一款已经上线的产品,可以多使用产品,有不懂的问产品经理;
  • 也可以去看历史bug,可以了解到一些需要关注的东西。

🍂界面测试:

对软件界面上所有的内容都需要进行测试。

要求:

1) 整体界面测试界面的实现与设计图要求一致。

2) 界面元素测试

  • 控件操作验证

🍂性能测试:

        性能测试和功能测试的区别是:功能测试检查软件是否做了,而性能测试是测试软件做的好不好。

🍂兼容性测试:

        软件是部署在硬件系统之上,并依赖所需要的软件环境。如QQ可以在PC端打开,也可以在移动端打开;移动端又分为IOS系统和Android系统,且市面上手机又有不同的品牌、不同的机型、不同的版本。软件是否能够在不同的环境下正确运行需要测试人员进行验证。

        问题:既然市面上有众多版本的机器,那么在执行兼容性测试时难道所有的机型都需要全面覆盖吗?

选取标准:

1)优先选择使用当前产品top级别的机型进行测试。

  • 实际在企业中,后台是可以获取到使用产品的机型,并以报表的形式统计在后台,供产品人员或其他人员制定策略参考。

2)选择主流的浏览器/机型进行测试。

🍂易用性测试:

        易用性测试的标准是检查产品是否具备简单易上手的属性。假如测试人员从来没有安装或使用过该产品,作为⼀个新用户,对当前产品是否能够快速适用产品的使用流程。

🍂安全测试:

安全测试和性能测试⼀样都是比较大的领域。

常见的安全问题如:

  • 隐私数据明文显示。
  • 参数未强校验导致SQL注入。
  • 越权:普通用户也可以执行管理员权限的操作。

3. 弱网测试 && 安装卸载测试

除了万能公式之外,还有二个比较常用的测试类型:弱网测试、安装卸载测试

🍄弱网测试

弱网测试的目的就是尽可能保证用户体验,关注的关键点包括:

  • 页面响应时间是否可以接受,关注包括热启动、冷启动时间、页面切换、前后台切换、首字时间,首屏时间等。
  • 页面呈现是否完成一致。
  • 超时文案是否符合定义,异常信息是否显示正常。
  • 是否有超时重连。
  • 安全角度:是否会发生dns劫持、登陆ip更换频繁、单点登陆异常等。
  • 大流量事件风险:是否会在弱网下进行更新apk包、下载文件等大流量动作。

弱网测试需要借助工具来构造弱网,这里推荐使用fiddler

1)fiddler配置代理

2)fiddler进行抓包(桌面/移动端)

3)fiddler构造弱网条件

🍄安装卸载测试

        针对需要进行部署的软件,除了软件功能外,我们还需要关注软件能够成功的安装和卸载。


http://www.niftyadmin.cn/n/5665910.html

相关文章

windows环境下安装python第三方包

python环境下,通常通过Anaconda来管理多个python环境; 即通过Anaconda创建python不用的虚拟环境; 1. 安装更新python第三方包,打开Anaconda,在右侧的搜索需要的python包并进行安装; 2.如果没有搜索到&…

达梦数据库导入xml迁移到达梦数据库大文件导致中断问题解决方案记录?

问题:我将同事给我的xml文件迁移到盗梦数据库,xml文件大约2G,在导入过程中,总是导入一半都不到就失败了。 原因:我的原因是我的电脑的系统的运行内存是16G的,后来我发现在没导入之前,其他进程已…

General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model

摘要 https://arxiv.org/pdf/2409.01704 传统的OCR系统(OCR-1.0)越来越无法满足人们对智能处理人造光学字符的需求。在本文中,我们将所有人造光学信号(例如,普通文本、数学/分子公式、表格、图表、乐谱,甚至是几何形状)统称为“字符”,并提出了通用OCR理论以及一个优秀…

.net core8 使用JWT鉴权(附当前源码)

说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。 该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。 说明:OverallAuth2.0 是一个简单、易懂、功能强…

MySQL-binlog、redolog和undolog的区别

区别: 1、binlog是mysql server层面的,用与数据备份和主从复制,每个执行引擎都有这个文件,比如Myisam和InnoDb 2、redoLog是InnoDb引擎特有的(实现了持久性),用于数据update,先将数据…

7.7opencv中(基于C++) 翻转图像

基本概念 在OpenCV中,翻转图像指的是沿着一个或多个轴翻转图像。OpenCV提供了一个函数 flip 来完成这个任务。这个函数可以沿着水平轴、垂直轴或者同时沿着水平和垂直轴翻转图像。 函数原型 void flip(InputArray src,OutputArray dst,int flipCode );参数说明 •…

使用python操作数据库

文章目录 一、问题背景二、安装python三、代码示例四、总结 一、问题背景 在日常开发过程中,随着项目进展和业务功能的迭代,我们需要对数据库的表结构进行修改,向部分表中追加字段,并对追加后的字段进行数据填充。但是如果需要追加…

platform与驱动框架之间的关系

文章目录 详细解释platform 与 Linux 驱动框架的关系 在 Linux 内核中, platform 是指 Linux 驱动模型中的一个子系统或框架,用于管理无总线的设备(例如 SoC 内部的设备),而不是一个完整的驱动框架。 详细解释 Platfo…