【笔记】软件测试的艺术

news2024/11/23 20:56:14

软件测试的心理学和经济学

测试是为发现错误而执行程序的过程,所以它是一个破坏性的过程,测试是一个“施虐”的过程。

软件测试的10大原则

1、测试用例需要对预期输出的结果有明确的定义

做这件事的前提是能够提前知晓需求和效果图,如果不知晓则需要根据经验判断,沟通获取预期结果。

体现在文档上就是写下预期结果、输入的描述。

2、程序员应该避免测试自己写的程序

程序员会下意识地避免找出错误,因为担心受到上级,同事,客户的惩罚。也有可能错误地理解了需求。

3、编写软件的组织不应当测试自己编写的软件

4、仔细检查每个测试的执行结果

5、编写测试用例不仅包括有效的输入,还应包括无效的输入

6、检查程序“未做其应该做的”仅占测试的一半,测试的另一半是检查程序是否“做了不应该做的”

比如说工资管理程序应该只为正式员工生成工资单,但它不仅为正式员工生成,还未非正式员工生成了工资单。

7、应避免测试用例用后即弃,除非软件是个一次性的软件

测试用例的编写花费了时间,如果程序之后发生了变更,还可以直接时候或者改造后使用。

8、计划测试工作时不应假定程序不会发生错误

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

9、程序某部分发现更多错误的可能性,与该部分已经发现的错误数量成正比

为了发现更多的错误,在测试完毕后进行统计,对发现错误最多的模块进行额外的测试。

10、软件测试是一件富有创造性、智力挑战性的工作

测试用例的设计

黑盒测试

进行黑盒测试的前提是知晓需求,比如通过阅读需求规格说明书,设计文档,产品图等,这样就能明确正确的输入和输出。

边界值分析

这种方法比等价划分法的测试回报率更高,所谓边界条件,是指输入、输出的等价类恰好处于边界、高于边界、低于边界的状态。

它与等价划分法的不同在于:

1、需要编写的测试用例更多

2、不仅仅是关注输入,还要关注输出

关注输出的例子:比如在一页显示10条订单的页面中,分4种情况考虑:

总数为0条的情况下

总数为1条的情况下,关注第一页第一条的订单

总数为10条的情况下,关注第一页第一条的订单,第一页最后一个订单

总数为11条的情况下,关注第一页第一条的订单,第一页最后一个订单,第二页的第一条订单

拓展:

测试回报率(Test Return on Investment,Test ROI)是指通过进行测试活动所带来的投资回报。它是衡量测试活动效果和价值的指标,用于评估测试活动对企业或组织的盈利能力和效率的影响。

还有一种测试方法叫做错误猜测,这是一种无法用语言,文字描述传授的经验。

更高级别测试

软件开发周期的模型可以归纳为以下7个步骤:

0、甲方

1、需求

2、目标

3、外部规格说明

4、系统设计

5、程序结构设计

6、模块接口规格说明

7、代码

从0-1的步骤是将用户的需求转换为书面上的需求,这些需求是该产品要实现的目标。

1-2通过评估可行性和成本、消除相抵触的用户需求、排序,将用户需求转换为具体的目标。

2-3将产品视为一个黑盒,仅考虑接口与用户的交互,不考虑具体的细节

3-4将系统分隔为一个个的子系统,并定义它们的接口

4-5进一步将子系统分隔为模块,并确定模块的功能,层次结构(比如依赖关系),模块之间的接口。

5-6定义每个模块的接口和功能

6-7用编程语言实现具体的功能

以下是从其他角度审视上述过程:

需求规格说明定义了为什么要开发程序(Why)

目标定义了程序要做什么,以及怎么做(What,How)

外部规格说明定义了程序对用户的准确表现

针对不同的开发过程,有着不同的测试方法:

0、甲方 - 安装测试

1、需求 - 验证测试

2、目标 - 系统测试

3、外部规格说明 - 功能测试

4、系统设计 - 集成测试

5、程序结构设计 - 集成测试

6、模块接口规格说明 - 模块测试

7、代码

功能测试

功能测试又称为黑盒测试,它的目的是发现与外部需求规格的不一致。可以使用等价分析,边界值分析,因果图和错误猜测法。软件测试的10大原则也可以被拿来使用。

系统测试

能力测试

最简单的做法是判断目标文档中描述的内容在程序中是否实现。

强度测试

对于Web应用程序而言,并发数是一个重要的指标。

对于移动设备可以使用低配置手机,打开大量程序后,试着拨打一个电话,再打开GPS(这通常会持续占用大量CPU和无线电信号),然后试着运行程序看能否正常运行。

可用性(用户体验)测试

可用性测试可以换来更好的市场和经济回报。

从12个问题中获得测试灵感。P117 - P118

安全性测试

可以测试操作系统的内存保护机制、数据库管理系统的数据安全机制。

性能测试

很多软件都有特定的性能和效率目标,例如吞吐量和响应时间。

配置测试

如今很多软件都设计为可在多种操作系统下运行,如果要测试这种程序,应在不同的操作系统中,测试不同的浏览器。需要注意的是,即使是同一种浏览器,在不同的操作系统之下,运行方式也会有所不同。

兼容性测试

大多数开发的软件并不是全新的,常常是为了替换某些不完善的系统。这样的软件往往有着特定的目标,涉及到与现有系统的兼容以及从现有系统的替换过程。

例如对数据库管理系统进行升级就是一个例子,需要将现有的数据迁移到新的系统中。

安装测试

有些软件的安装过程非常复杂,测试安装过程是系统测试中一个重要的部分。

可恢复性测试

操作系统,数据库管理系统和远程处理系统等软件通常都有可恢复性的目标,说明系统如何从程序错误,硬件失效和数据错误中恢复过来。

我们可以故意将程序错误置入某个系统中,判断系统是否可以从中恢复。例如I/O设备错误,网络通讯故障等。

可维护性测试

可维护性包括:调试问题的平均时间,维护过程,内部业务文档的质量。

测试结束的准则

由于资源是有限的,但发现Bug的可能性无限的,所以必须定义何时停止测试。

比较合适的方式是:

对于功能测试,根据经验和项目成熟度估计一个Bug数,测试的目标是发现该目标数的Bug。

对于系统测试,可以是发现预估的Bug数,或者用完了计划的时间(前提是一定时间内发现Bug的频率已经很低了)

互联网应用测试

Web服务器常见的是三层结构,即表现层,业务层和数据层。

表现层提供了GUI(用户图形接口)

业务逻辑层提供了业务流程,比如用户身份认证,事务处理等。

数据访问层存储系统使用的数据(如数据字典)和从用户收集来的数据。

下列是测试三层结构的例子:

表示层的测试聚焦于易用性人机交互方面,第一印象非常重要。

业务层的测试聚焦于性能财务数据的完整性网络连通性

数据层的测试聚焦于性能可用性安全性

测试的策略

表现层测试

表现层测试包含的主要内容:

1、内容测试。包括整体审美,字体,色彩,拼写,内容准确度和默认值。

2、Web站点结构,包括无效的链接和图形。

3、用户环境。包括Web浏览器版本和操作系统配置。

业务层测试

进行业务层测试时,需要模拟用户在购买某个产品或服务时执行的步骤。例如:对于一个购物网站需要模拟搜索商品分类,整理购物车,创建或登录用户,结账,通知用户交易完成,向用户推荐商品。除了内部事务,还包括外部事务,如:第三方支付,收件地址确认。

业务层测试包含的主要内容:

1、性能,检查系统是否满足书面规格说明书的要求。

2、数据有效性(数据验证),测试的目的在于发现从客户那里采集到数据中的错误。

3、事务,测试的目的在于发现事务处理过程中的错误。

数据层测试

数据层最大的挑战之一,是复制应用系统的运行环境。必须使用相同的硬件平台和软件版本来进行有效的测试。

数据层测试包含的主要内容:

1、响应时间,应量化执行SQL语句的消耗时间,测试环境必须与实际运行环境一致,否则得到的结果将会无效。

2、数据完整性,测试的目的是发现数据存储方式的问题,比如数据类型和长度可能导致数据截断或失去精准度,对于日期和时间字段,会出现时区问题,存储时间依据的是客户端,Web服务器,应用服务器还是RDBMS的时间?多字节字符集可能需要双倍的存储容量。

3、容错性和可恢复性,最大化MTBF,最小化MTTR

移动应用测试

移动环境下测试时需要考虑的因素:

移动应用面临的挑战:设备的多样性,网络基础设施,脚本编程,可用性测试。

如何应对这些挑战呢?

使用模拟器是一个不错的方法,它可以模拟各种各样的设备和系统。

如果想要模拟用户的网络情况,可以亲身前往使用地活着雇佣当地人进行测试。

使用模拟器可以完成自动化的回归测试和系统测试。

测试人员亲自使用应用程序,以期找出界面以及人机交互的Bug。

测试方法

1、可以参考互联网应用的测试方法

2、在网络条件不那么好的条件下测试系统的反应,比如:在断网后恢复网络,会重复下订单吗?

3、测试缓存可能导致的Bug

移动应用测试分类:

基于模拟器的测试:

优点:最节约成本和最实用的方法(模拟多种设备),容易管理,可进行自动化测试。

缺点:不能100%模拟设备,所以兼容性和性能不能完全确保没问题。

从哪里开始呢?

首先制定测试计划,确定想要兼容的手机操作系统,品牌,型号。

在真机和模拟器中寻找一个平衡。

对测试用例进行版本控制,控制变更。

定期审核测试用例,剔除无效脚本。

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

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

相关文章

测评补单成为亚马逊、速卖通等跨境电商趋势:解析需求背后的原因

今天就不分享测评技术知识点了,来聊一聊如今做跨境电商为什么对测评补单有这么大的需求。 如今在跨境电商行业,测评补单的需求日益增长,尽管平台一直对其进行禁止。这主要是出于以下几方面的原因,使得测评越来越成为一种趋势&…

方案展示 | RK3588开发板Linux双摄同显方案

iTOP-RK3588开发板使用手册更新,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。 RK3588开发板载4路MIPI CAMERA摄像头接口、MIPI CSI DPHY的4.5Gbps、2.5Gops的MIPI CSI CPHY,四路同时输入&#xf…

每天一个工业通信协议(2)2023.8.28 (CAN协议)

文章目录 参考资料1.CAN协议介绍2.CAN的特点3.CAN的通信单元始终处于错误的三种状态之一4.CAN协议的基本概念5.CAN协议的两种ISO标准的不同6.CAN协议6.1 帧的种类6.2 数据帧6.3 遥控帧6.4 错误帧6.5 过载帧参考资料 瑞萨电子《CAN入门书》 1.CAN协议介绍 答: CAN 是 Contro…

编程学习的方向与赛道的选择没有最优解的

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

超越传统营销:海外网红带货能力的6大关键特质!

随着社交媒体的崛起和全球互联网的普及,海外网红已经成为了商业领域中不可忽视的力量。这些具有强大带货能力的网红不仅仅是广告代言人,更是品牌营销的重要合作伙伴。他们凭借其独特的魅力和行动力,在市场中掀起了一股风潮。社交媒体里网红那…

ChatGPT可以生成Windows密钥

ChatGPT 可以回答许多问题、生成和修改代码,最近还可以生成 Windows 10 和 Windows 11 的许可证密钥。自从 OpenAI 的 ChatGPT 推出以来,人工智能已成为许多用户面临的挑战。 他们不断地试图削弱这种智力,或者想尝试它的局限性和可能性。例如…

国内较好的iPaaS供应商有哪些?

iPaaS是什么 iPaaS,全称Integration Platform as a Service,集成平台即服务。 集成一般说的是系统集成(System Integration),通常是指将软件、硬件与通信技术组合起来为用户解决信息处理问题的业务,集成的…

城市小车的优势,用五菱宏光mini,轻松应对城市拥堵与环保挑战。

掌握五菱宏光mini的驾驶技巧,让拥堵不再困扰你 合理利用车辆尺寸,轻松穿梭于城市道路 五菱宏光mini的尺寸小巧,长度不到3米,宽度不到1.5米,让你可以在狭窄的城市街道上轻松穿梭。掌握这一技巧,让你在拥堵…

MySQL 如何避免 RC 隔离级别下的 INSERT 死锁?

本文分析了 INSERT 及其变种(REPLACE/INSERT ON DUPLICATE KEY UPDATE)的几个场景的死锁及如何避免。 作者:张洛丹,DBA 数据库技术爱好者~ 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编…

Python类的方法

Python类的方法主要分为实例方法、类方法和静态方法三种。 1 实例方法 以self作为第一个参数的方法,就是类的实例方法。该方法由类的实例调用,Python会把调用该方法的实例对象传递给self。 如下代码定义了一个名为A的类。 class A:def __init__(self…

无频闪护眼灯哪个好?什么是无频闪

随着科技的不断发展,工作时使用电子设备越来越普遍,如何保护我们的眼睛不受蓝光、频闪等危害就变得极其重要了。护眼台灯,顾名思义就是保护眼睛的台灯,其工作原理是在光源处使用特殊的防蓝光灯珠,并通过控制电流的稳定性来达到防频…

【STM32】文件系统FATFS与Flash的初步使用

文件系统简介 简介可以不看,直接看移植步骤 文件系统是介于应用层和底层间的模糊层。底层提供API,比如说使用SDIO或者SPI等读写一个字节。文件系统把这些API组合包装起来,并且提供一些列函数,我们可以使用这些函数进行更进一步的…

开发指导—利用组件插值器动画实现 HarmonyOS 动效

一. 组件动画 在组件上创建和运行动画的快捷方式。具体用法请参考通用方法。 获取动画对象 通过调用 animate 方法获得 animation 对象&#xff0c;animation 对象支持动画属性、动画方法和动画事件。 <!-- xxx.hml --><div class"container"> <di…

IntelliJ IDEA中用git提交代码时忽略文件的设置

设置IDEA自动过滤掉不需要提交的文件或文件夹&#xff1a;如*.iml, .idea,target 文件夹 1、进入idea设置界面 Windows环境&#xff1a;File - Settings - Editor - File Types Mac环境&#xff1a;Preferences… - Editor - File Types 2、在下面的ignore files and folders…

SPA和MPA

SPA与MPA是什么 **SPA&#xff08;Single Page Application&#xff0c;单页应用&#xff09;**在首次加载时会下载一个单独的HTML文件&#xff0c;然后通过JavaScript动态加载内容&#xff0c;无需每次页面刷新时重新加载整个页面。**MPA&#xff08;Multi-Page Application&…

【校招VIP】java语言考点之关键字string

考点介绍&#xff1a; string作为一个特殊类&#xff0c;正常情况下&#xff0c;是遵循对象的值和引用的使用。有一定的考察频度&#xff0c;但有的时候也能代表相等&#xff0c;与常量区的插入有关。 java语言考点之关键字string-相关题目及解析内容可点击文章末尾链接查看&a…

redis缓存失效时间没到,数据莫名丢失问题排查

述&#xff1a;redis缓存了token&#xff0c;失效时间为24小时&#xff0c;可是每次不到多久&#xff0c;就提示token失效&#xff0c;重新登录后&#xff0c;没用多久&#xff0c;又提示token失效。查看了下缓存&#xff0c;发现数据全部没掉了&#xff0c;并且多了几个back1&…

电脑提示“系统找不到指定的文件”怎么办?

“系统找不到指定的文件”对于Windows用户来说是一个很常见的错误&#xff0c;尤其是Win10用户&#xff0c;经常会遇到Win10提示找不到指定文件。在此错误后面有时还会出现错误代码&#xff1a;0x80070002&#xff0c;但是&#xff0c;故障类型或代码在不同的操作系统规范上是不…

史上最全PMP学习资料、项目管理资料、备考经验包,3A一次通过

你是否也有过类似的经历&#xff1f; 为了获取备考资料&#xff0c;有的同学在论坛、知乎或者相关垂直类网站下载了很多的资料&#xff0c;这些资料大部分是机构进行获客引流的资料&#xff0c;没有真正的干货。 经常会看到10G、20G的资料包&#xff0c;感觉内容很丰富&#xf…

Spring学习|Spring简介、IOC控制反转理解、IOC创建对象方式

Spring Spring:春天------>给软件行业带来了春天! 2002&#xff0c;首次推出了Spring框架的雏形: interface21框架! Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。 RodJohnson&#xff0c;Spring Framework创始人&…