软件测试2-测试必须有策略和测试有哪些最高原则

news2024/10/1 17:22:10

什么是软件测试

测试是为发现错误而执行程序的过程。

软件测试一个破坏性的过程,甚至是一个施虐的过程,也就是第一天说的“找茬”游戏。 当一个输入框让我输入手机号码时,我偏不,我要输入非手机号码,甚至不填。 当界面提示让我点击第一个按钮时,我偏不,我要点第二个,第三个。

这和开发是一个截然相反的工作,开发的思路是创造,把功能做出来,正常运行; 而测试的工作是找茬,故意让程序不正常运行,生活中经常挑别人的毛病的人,也许更适合做测试。

如果通过设计一条用例,成功的让程序触发某种异常和错误,那就可以让团队趁早发现这个问题,从而在产品正式发布之前,让软件有一个更好的质量。

测试人员是靠 bug 来提升话语权的,如果有开发宣传“我写的代码没有bug", 那我们反驳的最好方式是多找几个 bug 出来。

黑盒测试要精通

黑盒测试是一种重要的测试策略,所有刚入行的测试首先就是把黑盒测试玩得非常顺手。使用这种测试方法时,将程序视为一个黑盒子。测试目标与程序的内部机制和结构完全无关,而是将重点集中放在发现程序不按其规范正确运行的环境条件。

而白盒测试是测试程序的内部机制和结构,能够看到具体的代码,对测试人员的要求更高。

黑盒测试又称为数据驱动的测试或输入/输出驱动的测试。 因为关注不到具体的代码逻辑,所以只能控制盒子外面的数据(输入和输出)。

穷举法没用

穷举法是把所有可能的输入条件作为测试用例,但是一个功能的输入基本上都是无限的,使用穷举法意味着要对每个单一功能设计无限个测试用例,这当然是不可能做到的。

比如说用户界面中需要你输入一个手机号用来登录,去测试的时候不仅需要输入正确的手机号,而且还需要测试输入的不是手机号时,程序如何反应。 不是手机号的数据你永远都举不完。

穷举法不会用在实战当中的第二个原因是它不经济。 就算我们可以把所有的数据都列举出来,也没有足够的时间和精力对每个数据去执行测试。

好的测试策略是经济高效的

在测试一个软件时,一定要制定好策略。 如果所有的测试人员都不精通代码,那么最好以黑盒测试为主,白盒测试会花费大量的人员培养成本。

在设计用例的时候要根据具体的业务对测试进行划分,灵活使用各类用例设计方法。

在面试的时候,通常需要结合具体的业务谈谈上家工作怎么做测试,具体的测试流程是怎样的,测试策略是怎样的,这些可以看看我整理的真实面试题集锦,顺便求个赞,三连必回哦。

测试原则是一个测试人员时刻要铭记在心的,甚至要形成一种本能,指导测试工作。

原则1:测试找不出所有的Bug

软件的复杂性仅次于生命体,甚至现在很多软件都已经有了人工智能的属性。对于这样精妙的系统,一小点异常都有可能产生连锁反映,最终让整个系统无法运行。就好像人体只需要吸入一粒微小的尘埃,就可能感染病菌,从而引起人体的高能反应,最终导致人病倒,无法行动。

像软件这样的精妙系统,就算做再多测试,也无法找出所有的错误,就好像你永远无法保证,人不生病一样。

原则2:2/8 原则

少数功能模块会测试到大多数缺陷,用数字来表示就是 80%的问题出现在20%的功能模块中。在很多领域中都存在 2/8 原则,而在测试中同样会运用到这个原则。

为什么会这样的原因很多,我们只能适当分析。 比如开发某个功能模块的程序员水平不行,引入了大量缺陷; 也可能是这个功能模块非常复杂,可能出现大量没有考虑到的因素。

原则3:尽早介入测试

一个软件越复杂,越有可能产生新 bug。 热力学第二定律指出:孤立系统自发地朝著热力学平衡方向──最大熵状态──演化,同样地,第二类永动机永不可能实现。

这个定律同样适用于信息系统。 当一个软件引入越多的信息,越多的功能,会让软件变得越来越混乱,从而产生越来越多bug。

如果要少产生bug,首先是要保持软件整体的简单性,还有就是尽早介入测试。 因为在一个功能被开发的早期,功能还足够简单,早期介入测试能更高效的找到bug,如果一个功能演化到后期,被更多其他的程序使用,变得越来越复杂,找到bug会难很多。 尽早介入测试,还可以让开发快速得到反馈,从而尽快修复bug,不会把bug带到更复杂的代码世界中。

原则4:抗药性原则

抗药性原则又叫杀虫剂悖论(Pesticide Paradox)。随着时间的推移,重复使用相同的杀虫剂消灭昆虫会导致昆虫对农药产生抵抗力,从而使杀虫剂对昆虫无效,这同样适用于软件测试。

如果进行相同的重复测试,则该方法将无助于发现新的缺陷。为了解决此问题,需要定期检查和更新测试用例,添加新的和不同的测试用例以帮助发现更多的缺陷。测试人员不能简单地依靠现有的测试技术。他必须不断寻找改进现有方法的方法,以使测试更有效。

原则5:要有精确的预期结果

测试用例中一个必需部分是对预期输出或结果的定义,这条显而易⻅的原则在软件测试中却是最常犯的错误之一,很多测试人员对程序应该产生的结果没有明确定义,只是凭感觉判断结果是否异常。

尽管“软件测试是破坏性”的定义是合理的,但人们在潜意识中仍然渴望看到正确的结果,所以当程序运行符合测试人员的心理预期时,他们会自以为程序是正常的。没有期望,也就没有所谓的意外。

克服这种倾向的一种方法,就是通过事先精确定义程序的预期输出,鼓励人们对所有的输出进行仔细检查。因此,一个测试用例必须包括两个部分:1.对程序的输入数据的描述。2.对程序在上述输入数据下的正确

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

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

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

相关文章

定时任务使用总结

定时任务表达式生成工具网站:https://cron.qqe2.com/定时任务选型:xxl-job 官方文档:https://www.xuxueli.com/xxl-job/安装定时任务调度中心 xxl-job-admin第一步、先导入xxl-job的数据库:地址:https://gitee.com/xux…

2.2 多区域集成IS-IS

2.2.2 实验二:多区域集成IS-IS 1. 实验目的  实现IS-IS协议DIS优先级修改 实现IS-IS协议网络类型修改 实现IS-IS协议外部路由引入 实现IS-IS接口cost修改 实现IS-IS路由渗透配置2. 实验拓扑 配置多区域集成IS-IS如图2-5所示: …

Java 万年历、周六日计算、节假日导出

目录 通过 Java 的基本语法来实现万年历 Java 获取一年中所有的周六和周日 Java 节假日导入导出 通过 Java 的基本语法来实现万年历 在 Java 的时间计算方面还有很多好用的工具类,Java 常用的工具类封装框架链接如下:HUTool 框架官网 package com.ta…

企业降本增效的催化剂:敏捷迭代

伴随着开源技术的大爆发,新一代的软件技术如雨后春笋般层出不穷。每家企业在硬件及软件开发上都有许多开源技术可选,目的还是在于提高效率,降低开发成本。 本篇文章,带大家了解下促进企业降本增效的重要理念:敏捷迭代…

前端错误/性能监控(vue)

配置目录结构 错误监听:可以提前发现前端的错误,并且找到对应的位置进行修改。因为等等环境因素可能导致不同的问题,这些问题难以发现,影响用户体验。 性能监听:可以及时发现问题,比如下载的js文件、image时…

Stream流源码分析及技巧(含大量案例)

Stream流源码分析及技巧(含大量案例) 目录 Stream流源码分析及技巧(含大量案例) 更新说明 简介(这部分摘了部分官方文档) 特性 Stream接口关系图 Stream流接口方法 Stream流之间的转换 与Stream流相…

华为OD面试经验分享,尤其注意机试题部分

文章目录招聘流程和背景介绍面试准备机试题目类型和解答技巧在算法部分在操作系统部分面试官提问和答题技巧面试总结和建议推荐一些华为 od 常见的机试题题目:两数之和题目:二叉树的遍历题目:链表反转题目:最大子序和招聘流程和背…

解决QML debugging is enabled.Only use this in a safe environment.警告

系列文章目录 文章目录系列文章目录前言一、警告原因二、解决办法参考前言 我试图运行一个非常简单的程序,当单击退出按钮时关闭窗口,但获取以下输出,前提是包含按钮的应用程序窗口不显示: 您已启用QML调试(实际上它默认启用)&…

CleanMyMac4.12.5最新版Mac系统清理优化工具

CleanMyMac X可以优化Mac系统。mac系统用久了,用CleanMyMac清理一下效果还不错。可用来清理系统的缓存、日志、语言和垃圾文件,还能卸载应用程序。小编给您带来cleanmymac中文版,CleanMyMac是一款Mac系统清理优化工具,使用只需两个…

Java中Synchronized关键字的基本使用方法

Java中Synchronized关键字的基本使用方法 1.简介 Synchronized是java的关键字,synchronized可以保证在同一个时刻,只有一个线程可以执行某个方法或者某个代码块(主要是对方法或者代码块中存在共享数据的操作),synchronized可保证一个线程的变…

动态规划【Day01】| 669 · 换硬币、114 · 不同的路径、116 · 跳跃游戏

秘诀:确定状态转移方程初始条件和边界情况计算顺序 669 换硬币 669 换硬币 题目描述: 给出不同面额的硬币以及一个总金额. 写一个方法来计算给出的总金额可以换取的最少的硬币数量. 如果已有硬币的任意组合均无法与总金额面额相等, 那么返回 -1。 样…

元宇宙将如何彻底改变 K-12 和高等教育

欢迎来到Hubbleverse 🌍 关注我们 关注宇宙新鲜事 📌 预计阅读时长:9分钟 本文仅代表作者个人观点,不代表平台意见,不构成投资建议。 想象一下,你将作为一个微小的细胞去参观人类的循环系统。这只是元宇…

基于django搭建简单的个人博客

文章目录第一步、在Ubuntu中安装虚拟环境并进入第二步、安装blog所需要的包,在requirements.txt中安装mysqlclient可能会报错,输入下列命令后在安装即可成功第三步、创建好数据库,把测试数据导入第四步、修改DjangoBlog包中 settings中数据库…

企业如何做好EHS环境健康安全管理?

目前随着传统制造业企业安全管理制度的落实,工人的安全意识得到很大的提升,但企业内部的安全管理制度并不能完全避免意外发生。如受限空间人员闯入、特种设备伤人、人员作业不规范、危化品泄露、仓储车间发生火情、有毒有害气体超标等一系列安全隐患。对…

leaflet 修改popup的样式,个性化弹窗(069)

第069个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中修改popup组件的样式,个性化弹窗。主要方法是更改css, 中增加custom-popup类名,style的样式要做穿透处理 >>>.具体方法请参考源代码。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实…

使用Python绘制股票CCI指标曲线

本文使用Python语言绘制一只股票的CCI(Commodity channel index)曲线,论文参考《Commodity channel index: Tool for trading cyclic trends》,该指标可以用来测量股价、外汇或者贵金属交易是否已超出常态分布范围,​ …

MYSQL数据库-主从复制(原理及搭建)

文章目录1 概述2 原理3 搭建3.1 主库配置3.2 从库配置1 概述 主从复制是指将主数据库的DDL和 DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进…

周立功ZCANPRO基础使用教程

软件及驱动安装 1.安装ZCANPRO软件 ZCANPRO软件官网:USB接口CAN卡-广州致远电子股份有限公司 点击资料下载: 2.安装驱动 本人使用的USBCANFD-200U设备,大家可根据自己的设备下载对应的驱动。 设备驱动官网链接:https://manual.zlg.cn/web/#/42/2462 软件使用教程 1.选择…

嵌入式开发:你需要知道的5种简单

传达嵌入式软件体系结构设计意图通常伴随着基于嵌入式开发人员经验的假设。你可以从资源受限的基于微控制器的系统的角度来看架构设计。如何设计架构将取决于系统的嵌入式软件分类。有许多不同的方法可以对嵌入式软件进行分类。我发现有五种简单的嵌入式软件分类可以帮助我调整…

字符串内存分配

涉及三块区域:栈,堆,字符串常量池(jdk1.7之前在方法区,jdk1.7之后在堆中) 关于字符串常量池到底在不在堆中: jdk1.6及以前,方法区独立存在(不在堆里面)&…