[ZZ]采访与书摘:使用C#进行基于模型的软件测试和分析
2008-04-03 13:04
891 查看
作者 Jonathan Jacky, Margus Veanes, Colin Campbell, and Wolfram Schulte译者 张逸 发布于 2008年3月13日 上午12时41分 社区 .NET, Architecture 主题 编程, 单元测试 标签 测试, C# 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#"
相关文章推荐
- 使用 Rational Software Architect 进行模型驱动和基于模式的开发,第 1 部分: 使用模式的模型驱动开发范例的概述
- 软件测试中使用HttpUnit进行集成测试(一)
- 使用NMF模型进行消费者行为分析.
- 使用数据挖掘软件Rapidminer进行关联规则分析
- 使用Android Studio + 基于Eclipse的MAT 对Android应用进行内存泄漏的分析和检测
- 软件测试(三)——上机使用JUnit进行测试
- 基于金融行业的软件测试分析
- 使用EditPlus工具进行简单的C#代码编译和测试
- 使用C#进行基于PI的开发
- 使用感知机进行二类分类的线性分类模型测试(minst数据集)
- 使用Jmeter对软件进行压力测试
- 《Spark机器学习》笔记——基于MovieLens数据集使用Spark进行电影数据分析
- 如何进行软件测试需求分析(两图一文档)
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
- 软件测试模型的使用(转)
- [软件测试_LAB2]使用Selenium进行自动化测试
- Tpcc-MySQL对mysql数据库进行性能测试报告、分析及使用gnuplot生成图表展示
- #使用SAS进行变量筛选、模型诊断、多元线性回归分析 #