局部探索式测试法

2024-06-18 13:08
文章标签 测试法 探索 局部

本文主要是介绍局部探索式测试法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

定义

局部探索式测试法重点是把测试经验、专业知识、软件构建和运行环境结合在一起,做出正确的决定。
根据软件的各种属性,决策可以分为5部分:输入、状态、代码路径、用户数据、执行环境。

用户输入

输入指的是由环境产生的一种刺激,该刺激导致被测试的应用程序有所响应。
比如:用户单击一个按钮属于一种输入,但是在文本框中键入文本就不算输入,只有文本被实际传递给应用程序,应用程序有机会处理时,才算得上是一种输入。输入必须导致软件执行某些代码,并以某种方式做出反应。
在选择输入集合时,需要考虑两个因素:
1.软件分别处理两个或多个原子输入时没有问题,但是当这些输入组合起来时,可能会报错。如分别查找所有的CD文件、查找所有视频文件没有问题,但是查找所有的视频+CD文件时可能就会出错。
2.输入值的组合可能导致问题。输入a和输入b没有问题,但是输入aa,ab,bb,ba可能有问题。
测试人员应该牢记,大多是开发人员都不喜欢编写错误处理代码。开发人员更愿意编写功能代码。在遇到需要错误处理的地方时,开发可能会加一个注释“此处需要添加错误处理代码”,然后继续实现功能。结果就忘记处理了;如果开发去实现错误处理,那么就会被打断思路。。。
默认输入
看到开发设置的默认值后,首要任务就是把默认值删除,留下空白的字段,或者改为默认值附近的其他值,尝试一下。
一个字段如果被预先设置好默认值,便和不含默认值的字段在程序处理时往往有很大 的不同。
二次输入
当软件第一次针对输入产生某种响应时,通常处于一种默认的情形,很多内部的变量和数据结构刚刚被初始化,输出结果第一次被生成。当输出结果被第二次生成时,很多变量的值还是上一次运行时被设定的值。这意味着第二次测试的情况和第一次的完全不同。第一次我们测试的是软件处于一个未被初始化的状态下如何产生输出的,第二次我们测试的是软件处于一个被初始化过后的状态下如何产生输出的。

状态

单个输入、一些输入会被软件“记住”,可能被存储于软件的内部数据结构中。我们在选择下一个输入时,必须考虑从前重用过的那些输入所造成的累积效应。软件的一个状态就是状态空间中的一个点,它由所有内部数据结构的取值来唯一确定。软件状态的复杂性在于它自身可以牢记已经处理过的输入,还牢记从前发生过的状态叠加效果。
当程序终止时,软件的状态可能会被忘却,也可能被存储在数据库里或一个文件内以便将来程序运行时再次取出,这两种状况被称为数据辖域,检测软件是否正确地实现了数据辖域也是一个很重要的测试。数据辖域有问题,可能导致安全隐患,比如软件接受一个信用卡号输入,该卡号应该只局限于当前使用,不能被存储起来重复利用。
例子:电话交换机控制软件
输入:接电话的动作
状态及反应:
A.电话连接的电话网没有开通——电话没有反应,或者发出一个表示错误的回应。
B.当前电话没有在振铃——收到拨号提示或者显示最近拨号列表供选择
C.当前电话在振铃——电话被接通,用户可以和拨打该号码的人进行通话
建议
A. 使用状态信息来帮助寻找相关的输入
如果我们需要测试一个网站,它允许使用折扣券,但是折扣券不能用于打折商品,这时就要在购物车中放入打折商品,然后输入折扣券来进行测试。
B. 使用状态信息来辨识重要的输入序列
当一个输入导致状态信息被更新时,紧接着再多次使用同样的输入会导致一连串的状态变化。如果状态变化在某种方式上被累加起来,就必须考虑是否会发生溢出。是不是存放了太多数值?是不是一个数会变得很大?比如购物车会不会被装满?用于存放的数据列表是不会变得很大?通过观察被测应用程序中状态的累积程度,然后重复使用相同或不同的输入来检验这种累积是否会带来副作用。

这篇关于局部探索式测试法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072082

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

探索Elastic Search:强大的开源搜索引擎,详解及使用

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选,相信大家多多少少的都听说过它。它可以快速地储存、搜索和分析海量数据。就连维基百科、Stack Overflow、

ROS2从入门到精通4-4:局部控制插件开发案例(以PID算法为例)

目录 0 专栏介绍1 控制插件编写模板1.1 构造控制插件类1.2 注册并导出插件1.3 编译与使用插件 2 基于PID的路径跟踪原理3 控制插件开发案例(PID算法)常见问题 0 专栏介绍 本专栏旨在通过对ROS2的系统学习,掌握ROS2底层基本分布式原理,并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。 🚀详情:《ROS2从入门到精通》 1 控制插

深入探索 Nuxt3 Composables:掌握目录架构与内置API的高效应用

title: 深入探索 Nuxt3 Composables:掌握目录架构与内置API的高效应用 date: 2024/6/23 updated: 2024/6/23 author: cmdragon excerpt: 摘要:“本文深入探讨了Nuxt3 Composables,重点介绍了其目录架构和内置API的高效应用。通过学习本文,读者将能够更好地理解和利用Nuxt3 Composabl

【智能优化算法改进策略之局部搜索算子(五)—自适应Rosenbrock坐标轮换法】

1、原理介绍 作为一种有效的直接搜索技术,Rosenbrock坐标轮换法[1,2]是根据Rosenbrock著名的“香蕉函数”的特点量身定制的,该函数的最小值位于曲线狭窄的山谷中。此外,该方法是一种典型的基于自适应搜索方向集的无导数局部搜索技术。此法于1960年由Rosenbrock提出,它与Hooke-Jeeves模式搜索法有些类似,但比模式搜索更为有效。每次迭代运算分为两部分[3]: 1)

局部刷新ListView,实现点赞功能

今天看到一个需要实现一个点赞的功能。自己想没想明白,后来看了http://blog.csdn.net/nupt123456789/article/details/39432781 这篇博客,才有了思路。特意感谢 这是我要用的ListView的item。要给ListView设置单个刷新,实现点击事件。 1.布局  (不要问我为什么是绝对布局,,我开心) <?xml version

智能优化算法改进策略之局部搜索算子(六)--进化梯度搜索

1、原理介绍     进化梯度搜索(Evolutionary Gradient Search, EGS)[1]是兼顾进化计算与梯度搜索的一种混合算法,具有较强的局部搜索能力。在每次迭代过程中,EGS方法首先用受进化启发的形式估计梯度方向,然后以最陡下降的方式执行实际的迭代步骤,其中还包括步长的自适应,这一过程的总体方案如下图所示:     文献[1]

三十八篇:架构大师之路:探索软件设计的无限可能

架构大师之路:探索软件设计的无限可能 1. 引言:架构的艺术与科学 在软件工程的广阔天地中,系统架构不仅是设计的骨架,更是灵魂所在。它如同建筑师手中的蓝图,决定了系统的结构、性能、可维护性以及未来的扩展性。本节将深入探讨软件架构的定义、其在系统设计中的核心作用,以及不同架构风格对系统特性的影响。 软件架构的定义及其在系统设计中的核心作用 软件架构,简而言之,是指软件系统的基本组织结构,

uni-CMS:全端开源内容管理系统的技术探索

摘要 本文介绍了uni-CMS,一个基于uniCloud开发的开源内容管理系统(CMS)。该系统旨在帮助开发者快速搭建并管理内容丰富的网站、小程序和移动应用。通过其全端渲染、内容安全检测、广告解锁付费内容以及AI生成文章等特性,uni-CMS不仅提高了开发效率,还促进了内容生产效率的提升和变现能力的增强。本文详细探讨了uni-CMS的技术架构、功能特性以及实施步骤,为开发者提供了一个全面的技术参