首页 > 其他分享 >什么样的测试才是优秀的测试

什么样的测试才是优秀的测试

时间:2023-04-21 10:32:06浏览次数:42  
标签:它们 优秀 什么样 替身 测试 测试代码 代码 测试方法

  什么样的测试才是优秀的测试

  优秀的测试应该包括以下要素:

  · 测试代码的可读性和可维护性

  · 代码在项目中及特定源代码中的组织方式

  · 测试所检查的内容

  · 测试的可靠性及可重复性

  · 测试对测试替身的使用

  · 可读的代码才是可维护的代码

  代码较差的可读性与缺陷密度密切相关:虽然测试是为了捕获错误,防止缺陷,但是测试代码也是代码,其可读性也很容易变差。难以阅读的代码难以测试,难以阅读的测试代码难以调试和修复错误。

  结构有助于理解事物

  如果是个巨大的测试方法,花了很长时间执行完测试后报错,你可能要花一段时间才能在测试代码中找到确切的出错位置。测试代码缺乏结构,无助于你理清相互的影响,某个对象是在哪里初始化的,出错时某个变量的值是多少,等等。

  如果测试代码具有一个合理的结构并确保它有用,这样你才能:

  · 找到与手上任务相关的测试类

  · 从那些类中识别出合适的测试方法

  · 理解测试方法中对象的生命周期

  

什么样的测试才是优秀的测试_测试方法

  要注意测试所检查的内容

  用正确的方式测试正确的事物也很关键。

  不要太过相信测试的名称。有时那些测试其实完全是在测试不同的东西。这与良好的结构有关——如果测试的名字错误地表达了要测试的内容,那就像是跟着错误的路标驾驶。

  从可维护性角度尤其重要的是,你的测试应该检查预期行为而非具体实现。

  独立的测试易于单独运行

  测试代码要关注测试的独立水平,尤其是架构边界附近。在边界上容易出现代码坏味道。一看到外部信赖就特别小心,包括:时间、随机数、并发性、基础设施、现存数据、持久化、网络。

  隔离和独立很重要,因为没有它们就难以运行和维护测试。

  测试意外失败的最不寻常的例子之一,是一个测试作为套件的一部分时可以通过,但单独运行却神秘地失败。那些症状散发着测试相互信赖的臭气。

  当编写的测试涉及时间、随机数、并发性、基础设施、持久化或网络时,你就应该格外小心。尽量避免依赖它们,将它们限制到小的隔离单元中。

  在实践中要找到合适的方式做下面这些事:

  · 用测试替身替换对第三方库的依赖,根据需要将其包装到你自己的适配层中。

  · 将测试代码与其用到的资源放在一起,或许是在一个包里。

  · 让测试代码自己产生所需的资源,而不要让它们与源代码分开,,

  · 对于需要持久化的集成测试,使用内存数据库。用了干净的数据集,就能极大地简化测试的启动问题。还有,它们通常启动得超级快。

  · 令测试自行建立所需的上下文。不要依赖于任何之前运行的任何测试.

  · 将线程代码分为同步和异步两部分,所有程序逻辑都放在一个常规的同步代码单元中,将棘手的并发部分留给一小堆专用测试。

  可靠的测试才是可靠的

  几乎不会失败的测试就等于废物。这种测试我们称之为快乐的测试——某个测试快乐地执行一段生产代码,或者是全部的执行路径,却没有一句断言。它们根本什么都没测试。

  为了让测试值得依靠,它们就需要可重复。

  如果你的逻辑包含异步内容或依赖于当前时间,确保将它们隔离在一个接口之后,这样就可以用“测试替身”来替换它们从而使测试可重复。

  每个行业都有其工具而测试也不例外

  测试替身就是测试的工具,它是程序员熟知的stub(桩)、fake(伪造对象)、mock(模拟对象)等的总称。

  使用测试替身的好处:

  · 通过简化要执行的代码来加速执行测试

  · 模拟难以出现的异常情况

  · 观察那些对测试代码不可见的状态和交互

  但测试替身并不是行业中编写自动化测试的仅有工具,还有测试框架。

  如需了解更多测试技术信息请关注:深圳多测师软件与技术服务有限公司

标签:它们,优秀,什么样,替身,测试,测试代码,代码,测试方法
From: https://blog.51cto.com/u_15239049/6212136

相关文章

  • JavaScript 测试及效验工具
    JavaScript是一款强大的广泛运用于现代Web站点及应用的脚本语言。作为一个技艺精湛的Web开发者,掌握JavaScript可以增强用户的使用体验,提供交互及富客户端等功能。尽管JavaScript的语法非常简单,但对于写程序而言仍然是困难重重,就是因为它的运行环境:基于Web浏览器。以下您可以看......
  • 测试
    STP工作过程一、选出根桥优先级必须是4096的倍数stpinstance0priority4096桥ID:优先级+Mac地址(交换机VLAN的Mac)(最小的为根乔)二、选举出根端口(去往根乔的端口,在非根桥交换机选)BPDU最优的根桥ID根路径开销发送网桥ID发送端口ID--优先级+端口编号三、选举出指定端......
  • 【个人杂谈】什么样的人才能赚钱?(转载)
    转载自:https://zhuanlan.zhihu.com/p/384516446应该有不少的人每天都在思考一个问题,就是到底怎么样才能多赚点钱?做什么行业是最赚钱的?当然前提是合法(俗话说:赚钱的方法都写在刑法里......
  • 08 04 jmeter 性能测试案例 分布式压力测试
       打开虚拟机打开所在位置返回上一目录复制两个虚拟机查看虚拟机ip关闭防火墙 启动主要虚拟机的tomcat 另外两个虚拟机如果  将进程删除再进找到 #号去掉false改为true #去掉数字改为好记的端口之后两个虚拟机都要打开jmeter须在bin目录......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之week01 02-09 测试算法时间复杂度性
    1、数组生成器测试算法性能肯定不能自己手动声明创建数组了,在现代计算机上,对于O(n)级别的算法,都需要10W级别以上的数据才能看到性能,我们肯定不能手动声明10W个元素的数组吧?所以,创建数组生成器。这里,自己创建一个数组生成器——ArrayGenerator。packagecom.mosesmin.datastruc......
  • 01. 接口测试基础知识概要
    01.接口测试基础知识概要概要软件接口的分类:软件内部模块与模块之间的接口、不同平台间的外部接口常见接口:HTTP协议:最广泛;常用JMeter和Postman工具来测试WebService接口:使用soap协议,通过http传输,一般是xml格式,常用SoapUI工具测试什么是接口测试:基于某种协议,模拟客......
  • Junit启动测试mybatis xml文件BindingException: Invalid bound statement问题
    背景:1、正常启动,xml文件放在java目录和resource目录下均正常2、junit启动,xml文件放在resource目录下正常,放在java目录下报BindingException错误mapperlocation绑定地址为:"classpath:com/a/b/**/*.xml" 原因就在于绑定的地址有问题。 junit生成的test-classes下的测......
  • 年薪50W京东软件测试工程师的成长路 —— 我们都曾一样迷茫
    ​和朋友谈到软件测试行业的发展问题,其实软件测试现在已经不知不觉发生了非常大的变化,前几年的软件测试行业还是一个风口,人才缺口巨大,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和。当然,我说的是最基础的功能测试的岗位需求已......
  • Postman接口测试-变量
    postman的四种变量:全局变量、环境变量、集合变量(项目变量)、普通变量-----------------------------------------------------------------------------------------------------全局变量:整个postman中的请求都可以使用创建的两种方法:第一种方法:再界面右上角-MANAGEENVIRONM......
  • 软件安全测试担心效果不好?这3个安全测试工具你用了吗?
    其实在信息科技发展的初期,很多互联网公司就有意识到保护软件产品安全的重要性。但时至今日,我们还是经常能看到某某app软件泄露用户隐私信息,或遭受黑客攻击导致一些损失,其中不乏有一定市场地位的大厂。此类信息安全问题屡见不鲜,安全测试重要性不言而喻。软件安全测试要想获得更......