写点什么

采访与书摘:“使用 C#进行基于模型的软件测试和分析”

2008 年 3 月 13 日

InfoQ 有幸对《Model Based Software Testing and Analysis with C#》“使用 C#进行基于模型的软件测试和分析”一书的四位作者 Jonathan Jacky, Margus Veanes, Colin Campbell 和 Wolfram Schulte 进行了一次采访,回答了我们收集的相关问题。他们的著作最近由剑桥大学出版社出版,同时,出版社为 InfoQ 提供了第1 章“描述、分析、测试”的试读。

InfoQ:你们创作本书的目的是什么?

作者:我们希望通过详尽而实用的方式为基于模型的测试提供最新的信息,基于模型的测试方法在微软内部已经成功地得到了应用。我们同时也希望为教育界人士提供这方面的资源,使得他们可以在课堂上讲授基于模型的测试方法,因为我们相信本书所能起到的推广作用还远远不够。

使用模型编程与状态间隔探测的思想对于以软件黑盒测试技术为基础的有限状态机是一种自然的扩充。

本书使得这一思想能够被广泛的读者群所接受。

InfoQ:基于模型的测试与单元测试的区别是什么?

作者:顾名思义,单元测试就在一个时间内对一个单元进行测试。基于模型的测试则通常用于测试组件之间的交互。例如,在你测试协议的互操作性时,基于模型的测试就非常有效。在对协议进行测试时,你不必描述协议实现的结构,但是如果采取黑盒方式,则需要描述发送者与接收者之间的通信方式。

基于模型的测试是单元测试的有力补充。它有助于暴露那些只有在多个单元放在一起才会呈现的错误。

InfoQ:什么是基于模型的分析?

作者:基于模型的分析使用了一个模型程序——一种可执行的规格说明书——去检测规格说明或者设计,例如包含了对通信协议的检测。既然模型是可执行的,它就可以在实现可用之前被检测,这就可以节省时间,避免令人沮丧地付出高昂代价而返工重来。

基于模型的分析包括安全分析(检测那些永远不会发生的安全隐患)和活性分析(检测那些最终会发生的有效内容)。这与我们所知道的模型检测相似。

InfoQ:根据你们的经验,最难以测试的场景是什么?

作者:非确定(分布式)系统。即使按照可控制的相同顺序输入,也会导致多种可能的有效可观测输出结果。在这种情况下,只运行一个测试很难重现,相同的测试用例可能会偶然地暴露出一个 bug。而且,它也很难衡量测试覆盖率,也无法获知停止测试的时间。

通过一个模型在运行中进行测试,可以提供处理这一问题的方法。

InfoQ:在测试代码时,开发人员最容易犯下的错误是什么?

作者:忽略对边界 / 不可预知情形的测试,以及忽略对方法调用内部的测试是最常见的错误。另外一种常见错误是忽略了对与其他代码进行交互的测试,这种与其他代码交互所导致的问题,在对代码进行单独测试时是无法呈现出来的。这是缺乏明确的职责条例所造成的,开发人员和测试人员应该是一个整体,而不是各司其职。

另外一种常见错误则源于测试套件的整体偏差,忽略了对测试人员没有考虑到的场景的测试,或者认为这些场景是不重要的。根据一个模型自动生成测试可以纠正某些偏差。

查看英文原文: Interview and Book Excerpt: “Model Based Software Testing and Analysis with C#”

2008 年 3 月 13 日 00:41547
用户头像

发布了 109 篇内容, 共 35.4 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
  • 测试专栏特别放送 | 答疑解惑第七期

    今天的“答疑解惑”系列文章,我们一起来复习并解决测试新技术、测试人员的互联网架构核心知识这最后两个系列的相关问题。

    2018 年 11 月 12 日

  • 如何避免移动测试自动化失败

    Nadya Denisenko说,移动开发中的测试自动化应该由Scrum团队完成;不要建立单独的测试自动化团队。

  • 程序员不可不知的:2020 年测试六大趋势

    2020,随着进入新的十年,技术的不断发展和竞争激烈的市场促使测试行业寻找新的相关测试技术。随之而来的,测试领域新的方法正稳步出现。

  • 如何在 BERT 上搭载复杂模型?

    自从谷歌发明并开源 BERT 以来,NLP 领域的各种 SOTA 都被它刷新了。在 BERT 之前,虽然有预训练语言模型,比如 ELMo 、ULMFit 等,不过由于它们的模型深度都与 BERT 有较大差距,因此我们该如何使用和微调 BERT ,这对于 NLP 领域的研究者和工程师而言,可以说,都是一个新的值得探索的问题。讲师介绍王然,本科毕业于北京大学,后于阿姆斯特丹大学攻读数学和计量经济学双学位,并在蒂尔堡大学攻读营销模型专业。研究方向主要为贝叶斯理论以及泛函分析理论和应用,主要参与的项目方向包括图像、语音、NLP、强化学习、知识图谱的理论和应用等。曾担任百分点认知智能实验室技术负责人,带领开发了百分点的人机对话机器人和文书校对系统,其中,文书校对系统无论就准确性还是召回率来说,均达到了业界前沿水平。

    2020 年 3 月 4 日

  • Machiel van der Bijl 会成为手工测试的克星吗?

    来自荷兰屯特大学(University of Twente)的Machiel van der Bijl最近介绍了一种软件自动化测试的方法。他提到:​软件测试通常会占据三分之一到一半的开发时间。我们的自动化测试方法不仅可以提高产品的质量,同时还可以有效缩短测试周期,因此大大降低软件开发成本。

  • 精读 2017 年 EMNLP 最佳长论文之一

    机器学习的研究人员近期发现,数据中可能蕴含着一些社会赋予的偏见,而机器学习算法很有可能会放大这些偏见。

    2017 年 11 月 6 日

  • 从 2019 年测试现状报告中,我们了解哪些趋势和变化?

    2019 年测试现状报告提供了测试技术、实践和测试自动化的采用以及测试人员面临的挑战等方面的见解,分享了今年测试调查的结果。

  • 编写良好的单元测试

    尽量保持较小的单元测试规模,使用恰当的工具,将程序员和测试人员配对;这是编写良好的单元测试的一些建议。单元测试混合了编程和测试;程序员和测试人员要一起工作,互相学习,拓展自己的知识面。

  • 强化通关 | 线性代数水平测试 20 题

    这些线性代数相关问题,你能答对多少?

    2020 年 9 月 4 日

  • 搜狗精准化测试的设计与实践详解

    演讲嘉宾王鹏,北京搜狗科技发展有限公司,资深高级测试开发工程师。2008年加入测试行业,2009-2013年在腾讯北京负责搜搜发薪、搜搜工具栏等项目的质量工作,2013年至今担任搜狗社区类项目测试负责人,主要工作内容包括测试工具平台的建设,前端测试体系的建立,精准化测试的探索与落地推广等工作。内容介绍搜狗百科和搜狗问问都是5年以上的项目,期间经历过多次重构,新旧功能之间的各种关联给黑盒测试带来了巨大的挑战。新兴项目依赖于原有底层服务,项目快速迭代,经常带来莫名其妙的线上问题,对老项目造成影响超出黑盒测试能力范围。本次分享将会从实际问题出发,详细介绍测试闭环中,哪些节点适合应用精准化测试;在不同的测试场景中,如何选择和开发工具来完成精准化测试;由浅入深的介绍精准化测试在搜狗社区项目中的前世今生。通过本次分享,您将会对精准化测试思想有一个实在的理解,您能够收获一些关于js覆盖率、java覆盖率、代码diff、函数依赖关系计算等工具开发的小心得,您也可以了解到这些思想和工具的一些实际应用场景。

    2019 年 7 月 24 日

  • 高质量代码——书评与采访

    由Stephen Vance所撰写的《高质量代码》(Quality Code)一书涵盖了软件开发生命周期的各个方面,尤其关注于提交高质量的产品。Stephen在本书中谈论了为支持软件技术水准测试所需的一些实践。InfoQ有幸与作者进行了交流,对本书的内容以及测试应用程序代码的最佳实践进行了一番讨论。

  • 谈谈测试

    说起测试,相信每个软件团队的人都同意其非常重要,但是在实际的软件开发过程中,我们却发现真正理解测试、做好测试的团队却不多。深究其原因,不是不想做,而是对于测试的认知出现了偏差,导致实际执行往往花了很大的精力,却吃力不讨好。测试成了大家口中的

    2020 年 9 月 30 日

  • 测试也是程序员的事吗?

    测试工作应该谁来做,这是一个很有趣的话题。很多人凭直觉想到的答案是,测试不就该是测试人员的事吗,这还用问?

    2019 年 1 月 25 日

  • 第七周学习总结

    性能优化、性能测试7层模型、一般计算机原理

    2020 年 12 月 6 日

发现更多内容

Linux指令简述&vim引入(1)

老壳有点爽

vim Linux 脚本

商业计划书制作(5):业务发展的历史与未来

老壳有点爽

创业 财富自由 商业计划书 业务发展的历史与未来

集成电路设计概括

老壳有点爽

芯片 集成电路 IC

世界集成电路发展概况

老壳有点爽

芯片 集成电路 IC 芯片营销

最初芯片国产化是怎么来的?

老壳有点爽

芯片 集成电路 国产化 替代

sed语言学习技巧(1)

老壳有点爽

vim 编程语言 sed 脚本语言

商业计划书制作(3):写作过程中要思考的问题

老壳有点爽

创业 财富自由 商业计划书

物理实现(Physical Implementation)

老壳有点爽

芯片 集成电路 IC 物理设计 PI

数字电路后端设计流程

老壳有点爽

设计 flow 集成电路 IC

芯片行业基本生态:设计生产封装的行业分工

老壳有点爽

芯片 集成电路 IC

魅力非凡的半导体电路行业

老壳有点爽

芯片 集成电路 IC 芯片营销

2020深圳站-GIAC全球互联网架构大会PPT分享

高翔龙

架构 分布式系统 服务治理 大型网站演变 全链路压测

Python 核心技术与实践 input&output

Bonaparte

sed 语言学习技巧(2)

老壳有点爽

vim sed 脚本语言

模拟电路设计工程师发展九段

老壳有点爽

集成电路 IC 芯片设计 模拟电路

Vim小技巧(2)

老壳有点爽

vim Linux 脚本语言

商业计划书制作(2):商业计划书的完成阶段

老壳有点爽

创业 财富自由 商业计划书

看门狗 | 分布式锁架构设计方案-02

高翔龙

redis 分布式锁 Jedis RedLock

区块链之物流产业上链解决痛点

CECBC区块链专委会

区块链 供应链

成都信息工程大学的区块链工程成全国首个区块链工程本科专业

CECBC区块链专委会

区块链技术 区块链工程

数字后端工程师发展六阶段

老壳有点爽

芯片 集成电路 IC 数字电路工程师

半导体行业个人理解

老壳有点爽

芯片 半导体 集成电路 IC

中国大陆芯片行业发展概况

老壳有点爽

芯片 集成电路 IC

芯片行业的主要生意模式

老壳有点爽

芯片 集成电路 IC

商业计划书制作(1):商业计划书的信息需求

老壳有点爽

创业 商业计划书 信息需求

git回退版本,再返回最新分支git pull失败的解决经验

良知犹存

git

商业计划书制作(4):自我评估&投资商关注重点

老壳有点爽

创业 财富自由 商业计划书

强势入局,区块链专利将成为银行下一个战场?

CECBC区块链专委会

区块链 金融 银行

集成电路工艺基础介绍

老壳有点爽

芯片 集成电路 IC 工艺 制程

IC设计流程及工具

老壳有点爽

芯片 集成电路 IC IC设计流程及工具

Verilog 的debug技巧(1)

老壳有点爽

芯片 集成电路 IC Verilog 电路

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

采访与书摘:“使用C#进行基于模型的软件测试和分析”-InfoQ