软件测试之随机测试

news2025/1/12 13:17:54

目录

一、作随机测试之前的一些前提条件

二、随机测试功能点的选取

三、功能点的随机测试


在软件测试中除了根据测试用例和测试说明书进行功能测试外,还需要进行随机测试(Ad-hoc testing),随机测试是没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试。主要是根据测试者的经验对软件进行功能和性能抽查。随机测试 是根据测试说明书执行测试用例的重要补充手段,是保证测试覆盖完整性的有效方式和过程。

随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试样例 (TestCase)没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其 对以前测试发现的重大Bug,进行再次测试,可以结合回归测试(Regressive testing)一起进行。

随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例没有覆盖到的部 分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再 次测试,可以结合回归测试(Regressive testing)一起进行。

理论上,每一个被测软件版本都需要执行随机测试,尤其对于最后的将要发布的版本更要重视随机测 试。随机测试最好由具有丰富测试经验的熟悉被测软件的测试人员进行测试。对于被测试的软件越熟悉,执行随机测试越容易。只有不断的积累测试经验,包括具体 的测试执行和对缺陷跟踪记录的分析,不断总结,才能提高。

客户端随机测试思想

随机测试是根据测试者的经验随机的选取功能点对软件进行有针对性的测试。 这种测试没有用例的指导,完全根据测试员自己的经验和相关知识来测试。

一、作随机测试之前的一些前提条件

1)熟悉产品的各项功能和产品的逻辑结果

2)熟悉测试用例

3)完整的执行过测试用例

4)熟悉在用例测试阶段所发现的缺陷和缺陷的分布情况

5)测试人员具备一定的测试经验,对缺陷有敏锐的洞察力。

二、随机测试功能点的选取

1)根据用例测试阶段对产品的了解选取缺陷比较密集的功能模块。

在发现很多缺陷的地方,一定可以发现更多的缺陷。我们在做随机测试的时候,首先会先统计一下,之前哪些模块被发现的缺陷最多,那么接下来一定要重点的在那个模块里发掘一下缺陷。

2)根据发现的一次性缺陷或重现率比较低的缺陷涉及的功能点选取随即测试功能点。

缺陷产生的过程一定可以重现,重现率比较低的缺陷是隐藏比较深的缺陷,这些缺陷可能正是导致软件无法上线的原因。因此重现这些隐藏缺陷是十分重要的工作。

3)与开发人员沟通了解软件的缺陷。

首先可以了解到程序本身哪些地方最复杂,最薄弱,这些地方最容易发生什么错误,其次可以了解程序员最容易在哪些地方犯哪些错误。前者通过对程序的熟悉可以比较好的掌握,后者可以通过对缺陷的分析得到。

4)根据经验选取功能点。积累了一定的测试经验以后,有时测试就是一种感觉。

5)随机选取功能点。经过上述四种情况对功能点进行筛选后,剩下的功能点可以随机的选取。随机选取功能点只是在随机测试中选取功能点的一个方面,更多的时候还是要有针对行的选取功能点。

三、功能点的随机测试

1)以测试用例为基础。

首先要明确随机测试是对功能点进行随机测试而不是随机测试功能点。因此每一个功能点都是测试对象,依照测试用例可以有效地覆盖所有的功能点。

2)考虑操作前的状态

3)操作过程中的状态改变

4)考虑到其他功能对该功能点的影响

5)考虑该功能点直接对其他功能点的影响

6)考虑该功能点间接对其他功能点的影响

7)操作步骤地追踪。

在测试中常常会出现这样的情况,进行一系列复杂的操作之后缺陷突然呈现在眼前。这个时候如果能清 晰地描述出具体的操作过程对于缺陷的重现是十分有利的,这也对最后的缺陷定位和简化缺陷的重现步骤提供了保障。交互性的模块追踪步骤主要考虑自己操作步骤 地最终和对方操作步骤地追踪。有时缺陷的出现并不是完全是由自己的操作而发生的,别人的操作也有可能导致缺陷,只有综合自己和对方的操作才能是完整的过程 追踪。

8)简化缺陷重现步骤。

寻找缺陷要准确定位,开发和测试是一个整体,时间是等量的,时间不在你身上浪费,就是在他身上浪费。如果测试人员每次发现的缺陷 描述不清楚或者重现缺陷的过程非常复杂,并且多个问题潜在的错误原因是一个,虽然操作可能稍微有些变化。这样开发人员在重现缺陷 的时候他要调试跟踪判断,很花费时间,而且效率低。如果测试人员发现缺陷 的时候多尝试可以更加准确的定位缺陷 步骤和原因,给开发人员最精确的步骤和准确的描述,这样整个团队才能高效。简化缺陷重现的步骤主要体现在减少涉及的功能点的操作上。

9)测试经验的积累

经验是来之不易的东西,我们需要在日常测试中不断的积少成多,并且多和同行交换测试心得和测试经验丰富自己的测试手段和测试角度。经验在随机测试中可以帮助我们少走弯路,让我们的目标更加明确,更容易发现缺陷.

10)测试心态

做测试最重要的是心态,这里说的心态一方面指的是测试人员对程序的看法。作为测试人员,在拿到测 试程序时,一定要保持悲观的心态,认定这个程序有很多缺陷和错误,甚至认定这个程序很垃圾,想像微软出来的程序都有很多缺陷,那我们的程序也一定需要我们 去狠狠的去发掘缺陷。不能因为这个模块已经被测试过好多遍,或者这个这个模块非常小非常简单就忽略了对这个模块的测试。另一方面,要有足够的耐心。首先, 在作随机测试之前比较明显的缺陷和操作步骤比较简单的缺陷已经基本上被找到,随即测试主要是挖掘深层次的缺陷。相对用例测试操作步骤相对复杂,因此随机测 试可能会出现长时间找不到缺陷的情况,如果心浮气躁可能放过对该模块的测试,这时需要耐心的测试才能找到缺陷。

11)与程序员进行沟通

在和程序员沟通的过程中,你可以知道很多你前所未知的东西例如功能的实现过程,功能模块间的内在联系等,你可以通过验证这些东西,来发现未知的缺陷,并且可以激发你运用更多的测试手段来测试。

12)一反三

首先通过以前发现的缺陷反映出可能出现的一类缺陷,通过缺陷重现的步骤反映出一类操作可能会导致缺陷

13)突破测试思想上的束缚

测人人员的测试手段和测试角度往往是从别人那里得到的,因此测试人员常常受到传统测试思想的束缚。挖掘更深层次的缺陷需要测试思想有所创新和升华,这一点比较难做到,需要更多的对测试方式和测试角度进行独立思考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/981336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法】插入排序

插入排序 插入排序代码实现代码优化 排序: 排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录&…

【算法】归并排序 详解

归并排序 详解 归并排序代码实现1. 递归版本2. 非递归版本 排序: 排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性: 假定在待排序的记录序列中,存在多个具有相…

dpkt 处理linux cooked capture

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

CUDA小白 - NPP(4) 图像处理 Data Exchange and Initialization(1)

cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus&#xf…

QT 初识多线程

1.QThread线程基础 QThread是Qt线程中有一个公共的抽象类,所有的线程类都是从QThread抽象类中派生的,需要实现QThread中的虚函数run(),通过start()函数来调用run函数。 void run()函数是线程体函数,用于定义线程的功能…

借助CIFAR10模型结构理解卷积神经网络及Sequential的使用

CIFAR10模型搭建 CIFAR10模型结构 0. input : 332x32,3通道32x32的图片 --> 特征图(Feature maps) : 3232x32即经过32个35x5的卷积层,输出尺寸没有变化(有x个特征图即有x个卷积核。卷积核的通道数与输入的通道数相等,即35x5&am…

01-从JDK源码级别剖析JVM类加载机制

1. 类加载运行全过程 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM。 public class Math {public static final int initData 666;public static User user new User();public int compute() { //一个方法对应一块栈帧…

整理mongodb文档:事务(一)

个人博客 整理mongodb文档:事务(一) 原文链接,个人博客 求关注,本文主要讲下怎么在mongose下使用事务,建议电脑端看 文章概叙 本文的开发环境为Nodejs,在‘单机模式’讲解最基本的事务概念。并没有涉及分片以及集群&#xff0…

《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3新功能

New Feature Upsert 功能 支持用户通过 upsert 接口更新或插入数据。已知限制,自增 id 不支持 upsert;upsert 是内部实现是 delete + insert所以性能上会有一定损耗,如果明确知道是写入数据的场景请继续使用 insert。 Range Search 功能 支持用户通过输入参数指定 search 的…

TortoiseGit设置作者信息和用户名、密码存储

前言 Git 客户端每次与服务器交互,都需要输入密码,但是我们可以配置保存密码,只需要输入一次,就不再需要输入密码。 操作说明 在任意文件夹下,空白处,鼠标右键点击 在弹出菜单中按照下图点击 依次点击下…

LLVM 与代码混淆技术

项目源码 什么是 LLVM LLVM 计划启动于2000年,开始由美国 UIUC 大学的 Chris Lattner 博士主持开展,后来 Apple 也加入其中。最初的目的是开发一套提供中间代码和编译基础设施的虚拟系统。 LLVM 命名最早源自于底层虚拟机(Low Level Virtu…

LEARN GIT

概念 基础概念 本地电脑 代码区:工作区间,放代码的地方 暂存区:git所管理的暂存区域 本地仓库:git所管理的本机的硬盘区域 远程电脑 远程仓库:github、gitee 代码提交管理的过程 代码区------->暂存区-------&…

关于 RK3568的linux系统killed用户应用进程(用户现象为崩溃) 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/132710642 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

模拟Proactor模式实现 I/O 处理单元

编写main.cpp 1.socket通信 服务器应用程序可以通过读取和写入 Socket 对象 来监听来自客户端的请求并向客户端返回响应 #define MAX_FD 65536 // 最大的文件描述符个数 #define MAX_EVENT_NUMBER 10000 // 监听的最大的事件数量 // 添加信号捕捉 void addsig(int sig, …

【MySQL】索引 详解

索引 详解 一. 概念二. 作用三. 使用场景四. 操作五. 索引背后的数据结构B-树B树聚簇索引与非聚簇索引 一. 概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各…

机器学习的特征工程

字典特征提取 def dict_demo():"""字典特征提取:return:"""data [{city: 北京, temperature: 100}, {city: 上海, temperature: 60}, {city: 深圳, temperature: 30}]# data [{city:[北京,上海,深圳]},{temperature:["100","6…

《机器人学一(Robotics(1))》_台大林沛群 第 5 周【机械手臂 轨迹规划】 Quiz 5

我又行了!🤣 求解的 位置 可能会有 变动,根据求得的A填写相应值即可。注意看题目。 coursera链接 文章目录 第1题 Cartesian space求解 题1-3 的 Python 代码 第2题第3题第4题 Joint space求解 题4-6 的 Python 代码 第5题第6题其它可参考代…

leetcode 88:合并两个有序数组 。 双指针解法

题目 算法 双指针 code var merge function(nums1, m, nums2, n) {// 其实就是一个nums1数组从后向前的降序重排,从最后开始,比较nums1有效位置和nums2当前位置数的大小,依次填入,nums2最后若有剩余,则再多一步从后…

9、补充视频

改进后的dijkstra算法 利用小根堆 将小根堆特定位置更改,再改成小根堆 nodeHeap.addOrUpdateOrIgnore(edge.to, edge.weight + distance);//改进后的dijkstra算法 //从head出发,所有head能到达的节点,生成到达每个节点的最小路径记录并返回 public static HashMap<No…

Bytebase 和 GitLab 签署 Technology Partner 技术合作伙伴协议

Bytebase 和 GitLab 签署技术合作伙伴协议&#xff0c;携手为开发者提供流畅的数据库协作开发和管理体验。 GitLab 是世界领先的开源 AI 驱动 DevSecOps 平台&#xff0c;旨在帮助开发者团队更好协作、更高效交付软件。Bytebase 是一款为 DevOps 团队准备的数据库 CI/CD 工具&a…