Tessy学习系列(一):软件测试的概念介绍与常见的测试策略

相关内容参考自《软件测试的艺术》

一、软件测试的概念

        所谓软件测试,就是一个过程或一系列过程.用来确认计算机代码完成了其应该完成的功能不执行其不该有的操作。软件应当是可预测且稳定的,不会给用户带来意外惊奇。

软件测试的作用主要体现在以下几个方面:

  1. 发现缺陷:软件测试的主要目标是发现软件中的缺陷和错误。通过执行各种测试用例和场景,测试人员可以检测出软件中的潜在问题,包括功能错误、性能问题、安全漏洞等。这有助于提前发现和修复问题,以确保软件的质量和可靠性。

  2. 提高软件质量:通过不断进行测试和修复,软件的质量可以得到提高。测试可以帮助开发团队识别和解决软件中的问题,确保软件在交付给用户之前达到预期的质量标准。这有助于减少用户在使用过程中遇到的问题,提高用户满意度。

  3. 降低风险:软件测试可以帮助识别和降低软件开发过程中的风险。通过测试,可以发现潜在的问题和风险,并及时采取措施进行修复和改进。这有助于减少软件在实际使用中可能导致的损失和风险。

  4. 改进用户体验:通过测试,可以确保软件的功能和性能符合用户的期望。测试可以帮助发现并解决用户可能遇到的问题,提高软件的易用性和用户体验。

 

二、常见的测试策略

(1)黑盒测试

        黑盒测试是一种重要的测试策略, 又称为数据驱动的测试输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子。测试目标程序的内部机制和结构完全无关,而是将重点集中放在发现程序不按其规范正确运行的环境条件
        在这种方法中,测试数据完全来源于软件规范(换句话说,不需要去了解程序的内部结构)。如果想用这种方法来发现程序的所有错误,判定的标准就是“穷举输入测试”将所有可能的输入条件都作为测试用例但穷举输入测试是无法实现的,所以需要根据实际情况,根据实际测试单元的需求规划,设计合适的测试数据集
 

(2)白盒测试

        白盒测试又称逻辑驱动的测试,允许我们检查程序的内部结构。这种测试策略对程序的逻辑结构迸行检查从中获取测试数据
        在这里我们的目标是针对达种测试策略,建立起与黑盒测试中穷举输入测试相似的测试方法。也许有一个解决的办法,即将程序中的每条语句至少执行一次。但是我们不难证明,这还是远远不够的。这种方法通常称为穷举路径测试。所谓穷举路径测试,即如果使用测试用例执行了程序中所有可能的控制流路径,那么程序有可能得到了完全测试但穷举路径测试就如同穷举输入测试,非但不可能,也是不切实际的所以也需要根据实际情况与设计需求,来设计合适的测试用例。


三、软件测试的几个原则

(1)原则1:测试用例中一个必需部分是对预期输出或结果的定义

        测试用例有明确的输入与准确的输出

(2)原则 2:程序员应当避免测试自己编写的程序

        由干程序员错误地理解了疑难定义或规范,导致程序中存在错误。如果情况是这样,程序员可能会带着同样的误解来测试自己的程序。

(3)原则 3:编写软件的组织不应当测试自己编写的软件

        理由同原则2类似

(4)原则 4:应当彻底检查每个测试的执行结果

        后续发现的错误中可能是前面的测试遗漏掉的

(5)原则 5:测试用例的编写不仅应当根据有效和预期的输入情况,而且也应当根据无效和未预料到的输入情况

        针对未预料到的和无效输入情况的测试用例,似乎比针对有效输入情况的那些用例更能发现问题

(6)原则 6:检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”

        必须检查程序是否有我们不希望的负作用,比如,某个工资管理程序即便可以生成正确的工资单,但是如果也为非雇员生成工资单或者它覆盖掉了人员文件的第一条记录,这样的程序仍然是不正确的程序

(7)原则 7:应避免测试用例用后即弃,除非软件本身就是一个一次性的软件

        测试用例需要可复用!如果对程序的更改导致了程序某个先前可以执行的部分发生了故障,这个故障往往是不会被发现的,保留测试用例,当程序其他部件发生更动后重新执行,这就是我们所谓的“回归测试”

(8)原则 8:计划测试工作时不应默许假定不会发现错误

        所谓测试,就是为发现错误而执行程序的过程

(9)原则 9:程序某部分存在更多错误的可能性, 与该部分已发现错误的数目成正比

        例如,假如某个程序由两个模块、类或子程序 A 和 B 组成,模块A 中已经发现了五个错误,而模块 B 中仅仅找到了一处错误。如果模块 A 所经过的测试并不是故意设计得更为严格,那么该原则告诉我们,模块 A 与模块 B 相比,存在更多错误的可能性要大

(10)原则 10:软件测试是一项极富创造性、极具智力挑战性的工作

         测试一个大型软件所需要的创造性很可能超过了开发该软件所需要的创造性.我们已经看到,要充分地测试一个软件以确保所有错误都不存在是不可能的

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

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

相关文章

Langchain-Chatchat之pdf转markdown格式

文章目录 背景开发环境loader文本解析步骤markdown格式的文本为什么选择markdown格式测试markdown格式提取表格原pdf表格markdown格式的表格 测试markdown格式的知识库运行项目修改文件加载器loader 其他问题运行项目报错查看系统当前的max_user_watches修改sysctl.conf配置 图…

AWS迁移与传输之AMS/MGN

AWS Application Migration Service(AWS Application Migration Service简称为AWS MGN,MGN是migration的缩写。)是一项全面的迁移服务,旨在帮助企业将其本地服务器和虚拟机迁移到云端,包括AWS和VMware Cloud on AWS。 …

OrangePi AIpro初体验:开启嵌入式开发之旅

概述 随着物联网和智能设备时代的到来,单板电脑因其独特的优势成为创新项目和教育实践的重要工具。在众多单板电脑中,香橙派以其出色的性能和亲民的价格,十分吸引博主这初涉嵌入式开发的新手。博主有幸被CSDN邀请对OrangePi AIpro进行测评。…

Netty-选择器-监听

归档 GitHub: Netty-选择器-监听 介绍 参考 NioEventLoop 类结构:基础类介绍-NioEventLoop 主要逻辑为:死循环监听 selector总结: 创建的线程是 FastThreadLocalThread 实例 原理 io.netty.channel.nio.NioEventLoop /*** NIO 事件轮循 …

vivado设置Vscode为默认编辑器

D:\vscode\Microsoft VS Code\Code.exe -g [file name]:[line number]

鸿蒙ArkUI-X跨平台开发:【资源分类与访问】

资源分类与访问 应用开发过程中,经常需要用到颜色、字体、间距、图片等资源,在不同的设备或配置中,这些资源的值可能不同。 应用资源:借助资源文件能力,开发者在应用中自定义资源,自行管理这些资源在不同…

话术巧妙分隔沟通效果更佳看看这个小技巧

客服回复客户咨询,如果遇到比较复杂的问题,经常会有大段的文字回复,用聊天宝的分段符功能,在需要分段的地方点击右上角的“插入分隔符”,就可以在指定位置分段,实现多段发送的目的。 前言 客服回复客户咨询…

干冰清洗机的清洗原理及应用

干冰清洗机的清洗原理及应用可以详细阐述如下: 一、清洗原理 干冰清洗机的清洗原理主要基于干冰的低温冷冻作用。干冰在常温下会迅速升华,吸收大量的热量,使周围的温度迅速降低。当干冰颗粒通过特殊的干冰清洗机喷射到清洗物体表面时&#…

系统架构设计师【第1章】: 绪论 (核心总结)

文章目录 1.1 系统架构概述1.1.1 系统架构的定义及发展历程1.1.2 软件架构的常用分类及建模方法1.1.3 软件架构的应用场景1.1.4 软件架构的发展未来 1.2 系统架构设计师概述1.2.1 架构设计师的定义、职责和任务1.2.2 架构设计师应具备的专业素质1.2.3 架构设计师的知识…

Java入门基础学习笔记45——String使用的注意事项

String使用时的注意事项: 1)String对象的内容不可改变,被称为不可变字符串对象。 Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are im…

C++代码使用ClangCL编译注意事项

遇到cmake指定模板类工程使用msvc的clang编译器编译代码,代码变量出现与预期不符的问题; 如下: clangcl将实现放到头文件里则不会出现这样的情况; 最后按照pcl的模板类写法则解决这个问题;

前端常见的页面自适应布局方案

流式布局 使用百分比单位等单位来表示长度和宽度&#xff0c;这样在整体的长度和宽度变化的时候&#xff0c;里面的内容也会发生变化。 使用 % 直接使用百分比&#xff0c;在页面宽度变化的时候会对应放大缩小。 <!DOCTYPE html> <html lang"en"><he…

vue3 RouterLink路由query传参

vue route query传参 一、传参页面,需要传id、title、content三个参数 <ul> <li v-for"news in newsList" :key"news.id"> <!--/news/detail--> <RouterLink :to"{ path:/news/deta…

[SCTF2019]Who is he

unity 游戏&#xff0c;直接输入字符串 直接修改 if 判断&#xff0c;看能不能直接输出flag 修改了程序逻辑&#xff0c;但还是输出了 明明已经把这个 if 删了 不知道为什么还会输出这串字符 应该程序还有什么引入吧&#xff0c;看 wp 应该先查一下程序的动态链接库 DLL 是…

瓦罗兰特账号怎么注册 瓦罗兰特延迟高用什么加速器

《瓦罗兰特》&#xff08;Valorant&#xff09;是由拳头游戏&#xff08;Riot Games&#xff09;开发并发行的一款免费的多人在线第一人称射击游戏&#xff08;FPS&#xff09;&#xff0c;它结合了传统的硬核射击机制与英雄角色的能力系统&#xff0c;为玩家提供了独特的竞技体…

【加密与解密(第四版)】第十七章笔记

第十七章 软件保护技术 17.1 防范算法求逆 17.2 抵御静态分析 反汇编算法&#xff1a;线性扫描&#xff08;无法正确地将代码和数据分开&#xff09;、递归进行 巧妙构造代码和数据&#xff0c;在指令流中插入很多“数据垃圾"&#xff0c;干扰反汇编软件的判断&#xf…

为什么要学习c++?

你可能在想&#xff0c;“C&#xff1f;那不是上个时代的产物吗&#xff1f;” 哎呀&#xff0c;可别小看了这位“老将”&#xff0c;它在21世纪的科技舞台上依旧光芒万丈&#xff0c;是许多尖端技术不可或缺的基石&#xff01; 1. 无可替代 c源于c语言&#xff0c;它贴近于硬…

地下停车场FM信号覆盖系统技术原理用与应用

随着我国城市化水平的快速推进与房地产的快速发展&#xff0c;城市停车场称为每栋建筑物的硬性配套建筑&#xff0c;尤其是商业综合体、医院、政府机关、机场、高铁站等场所出现了超大规模停车场&#xff0c;停放车辆可达数千辆&#xff0c;停车场的智能化与信息化水平也越来越…

Java | Leetcode Java题解之第104题二叉树的最大深度

题目&#xff1a; 题解&#xff1a; class Solution {public int maxDepth(TreeNode root) {if (root null) {return 0;}Queue<TreeNode> queue new LinkedList<TreeNode>();queue.offer(root);int ans 0;while (!queue.isEmpty()) {int size queue.size();wh…

Llama模型家族之使用 Supervised Fine-Tuning(SFT)微调预训练Llama 3 语言模型(十) 使用 LoRA 微调常见问题答疑

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…