软件测试 52 讲
茹炳晟
腾讯 TEG 基础架构部 T4 级专家
71691 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 63 讲
结束语 (1讲)
软件测试 52 讲
15
15
1.0x
00:00/00:00
登录|注册

27 | 深入浅出之动态测试方法

思考题
自动动态方法
关联依赖的代码不可用
单元测试用例“预期输出”的复杂性
单元测试用例“输入参数”的复杂性
人工动态方法
代码级测试方法之动态测试方法

该思维导图由 AI 生成,仅供参考

你好,我是茹炳晟,今天我和你分享的主题是:深入浅出之动态测试方法。
相较于,静态测试方法是不需要实际执行代码去发现潜在代码错误的方法,我今天要和你讨论的动态测试方法,则是要通过实际执行代码去发现潜在代码错误的测试方法。
正如我在分享《不破不立:掌握代码级测试的基本理念与方法》这个主题时,将动态测试方法进一步划分为人工动态方法和自动动态方法,今天这次关于动态测试方法的分享,我也会从这两个方面展开。
由于自动动态方法并不能理解代码逻辑,所以仅仅被用于发现异常、崩溃和超时这类“有特征”的错误,而对于代码逻辑功能的测试,主要还是要依靠人工动态方法。

人工动态方法

人工动态方法,可以真正检测代码的业务逻辑功能,其关注点是“什么样的输入,执行了什么代码,产生了什么样的输出”,主要用于发现算法错误和部分算法错误,是最主要的代码级测试手段。
从人工动态方法的定义中,你可以很清楚地看出:代码级测试的人工动态测试方法,其实就是单元测试所采用的方法。所以,下面的分享,我会从单元测试方法的角度展开。
如果有一些代码基础,那么你在学习单元测试框架或者工具时,会感觉单元测试很简单啊,一点都不难:无非就是用驱动代码去调用被测函数,并根据代码的功能逻辑选择必要的输入数据的组合,然后验证执行被测函数后得到的结果是否符合预期。 但是,一旦要在实际项目中开展单元测试时,你会发现有很多实际的问题需要解决。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

动态测试方法是一种通过实际执行代码来发现潜在代码错误的测试方法,着重关注代码的业务逻辑功能。动态测试方法包括人工动态方法和自动动态方法。人工动态方法主要用于发现算法错误和部分算法错误,是最主要的代码级测试手段。在实际项目中,单元测试的输入参数的复杂性需要考虑多种情况,包括被测试函数的输入参数、全局静态变量、类成员变量、函数内部调用子函数获得的数据、函数内部调用子函数改写的数据以及嵌入式系统中,在中断调用中改写的数据。理解了输入参数的复杂性后,需要进一步了解预期输出的复杂性表现在哪些方面。单元测试用例的“预期输出”不仅仅包括函数返回值,还包括被测函数执行完成后所改写的所有数据,如输出参数、成员变量和全局变量的改写,以及文件更新、数据库更新、消息队列更新等。此外,关联依赖的代码不可用时,可以采用桩代码来模拟不可用的代码,并通过打桩补齐未定义部分。自动动态方法是基于代码自动生成边界测试用例并执行来捕捉潜在的异常、崩溃和超时的测试方法。自动动态方法的重点是实现边界测试用例的自动生成。总体而言,动态测试方法包括人工动态测试方法和自动动态测试方法,而人工动态方法在实际工程实践中会遇到很多困难,包括输入参数的复杂性、预期输出的复杂性和关联依赖的代码不可用等。自动动态方法则需要重点讨论如何实现边界测试用例的自动生成。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件测试 52 讲》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • llyl
    如果是遇到程序要等很久才有响应的事件,比如定时100小时后发生会什么,那这个时间要怎么处理呢?测试的话不应该要等这么久的时间吧?

    作者回复: 很长时间一般是调用了后台的异步处理操作,这种情况可以考虑用mock解决,即先只验证是否后台创建了必要的job,而且相关的参数传递是否都正确,其次单独的用例在验证job实现的正确性

    2018-09-07
    2
    3
  • 年轻人的瞎折腾^.
    感觉有点抽象,可能要多看几遍。另外打桩这种是需要开发弄好还是需要测试处理?

    作者回复: 这里讲的基本都是需要开发来做的测试

    2018-12-29
    1
  • Jecy-8
    除了mock还有其他好的方法吗?期待老师指点

    作者回复: 本质上就是mock了,但是mock的种类繁多,有些会提供很多特有的功能

    2018-09-03
    1
  • sylan215
    1.单元测试大部分还是需要开发做,如果测试做,那么测试人员的技术要求就比较高了; 2.可以折中的考虑是,测试提供单测需要覆盖的测试点,开发来保证测试的结果; 3.如果测试人员做单元测试,那么就需要开通代码权限,可一些公司的代码管理很严格,推动可能会比较困难,当然,如果一直有这个传统的倒还好; 4.茹老师提到的几个困难大部分是技术实现上面的,个人觉得策略制定上也有不少困难,比如之前提到的如何确定单元测试的范围(颗粒度),就是哪些代码需要做哪些不需要,这个直接影响了后续实际实施的难度,如果定的范围不好,有可能会出现所测函数的内部逻辑全部被 Mock 函数替代的情况。 以上,欢迎沟通交流,公众号「sylan215」
    2018-08-29
    24
  • 小老鼠
    1,如果输入参数或数出参数是一个集合类、哈希类甚至是一个自定义类,作单元测试就复杂了。 2,若输出是个随机变量如何作单元测试,比如一个随机函数的单元测试。 3,为什么讲了那么多代码级的测试用例,不介绍语句、条件、分支、条件分支、AC/DC、路径覆盖这些概念?
    2018-11-07
    1
    5
  • 五花肉
    生成测试用例的代码模板看不懂呀~百度也搜到是什么含义 int =@a@;
    2020-10-26
    1
    2
  • 口水窝
    感觉看理论都能看懂,但是没有实践,自己说也说不出所以然,所以还是要实践,转化为自己的想法。
    2019-04-23
    2
  • 捷后愚生
    这篇文章的信息量很大! 现在所在项目单元测试做不得不好,执行得不到位,学习完这篇文章之后,我想单元测试输入参数的复杂性是其中原因之一,所在单位是银行对公信贷系统,开发对信贷业务不理解,加上信贷系统对接各种外围系统,开发不了解数据流生成与走向,不少时候就做不了单元测试,或者只能做一小部分。 mock的种类繁多,老师能详细讲一下吗?觉得mock至少可以写一篇文章。 文章提到了嵌入式系统测试,没有接触过,期待老师写文章介绍一下。
    2020-07-19
    1
  • 李丹
    老师,听了这章内容,受益颇深。有一点不明白希望指教。单元测试在面对方法重构时,内部调用的全局变量或者其他测试用例输入数据实现变化时,我们的单元测试用例是否也必须针对方法内部实现变化而变化?
    2020-07-17
    1
  • 付晓杰
    单元测试中三个最主要的难点: 1.单元测试用例“输入参数”的复杂性; 2.单元测试用例“预期输出”的复杂性; 3.关联依赖的代码不可用。
    2022-08-31归属地:上海
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部