`
deepinmind
  • 浏览: 444298 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
1dc14e59-7bdf-33ab-841a-02d087aed982
Java函数式编程
浏览量:40765
社区版块
存档分类
最新评论

测试即是文档

阅读更多
文档需要全面,实时更新,并且易懂。我说的全面是指除了介绍程序的功能外还应该覆盖到代码中一些重要的地方。对很多人来说文档的重要性不言而喻,但很难保持它的及时性和准确性。糟糕的文档的后果通常会浪费更多的资源和时间。往往都是出于一些错误的原因而编写的文档。

要求文档的一些原因

有很多原因导致我们需要编写文档。团队经常会由于一些制度上的要求而编写文档,或者就是纯粹出于无知。下面是一些编写文档的错误的理由:

- 有人认为文档和项目的成败息息相关。
- 文档能够证明某些人的存在。
- 需求方除了文档也不知道要什么好
- 要你提供文档的人也就是求个安心,知道事情都OK了
- 工作流程提示说,你该创建文档了

文档都是过时的

软件文档的一个主要的问题就是它通常都不是最新的。代码的某个部分可能发生了改动,但是文档却体现不出这个情况。这句话适用于几乎所有的文档,影响最大的其实还是需求和测试用例。不管你多努力,文档的过期无可避免。


文档对谁有用?

取决于不同的受众,文档的类型和格式也会相应地有所不同。开发人员,测试人员,客户,主管,最终用户都是文档的最大的潜在用户。

开发人员

开发人员不应该依赖于文档,因为它们通常都是过时的。除此之外,没有什么文档能比代码本身更能提供详细以及最新的信息了。如果你想知道某个方法做了些什么,看下这个方法吧。不确定某个类是干嘛的?看一眼它。通常只有代码写的太差了才需要给它添加文档。

使用代码本身作为文档,这并不代表不需要其它的文档了。关键是要避免冗余。如果看一下代码就能获取到系统的详细信息,那么还可以有一些其它的文档来提供快速导读以及更高层面的一个概述的功能。代码本身的文档是回答不了这个系统是干嘛的或者这个系统用到了什么技术啊这种类型的问题。大多数情况下,对于开发人员而言,一个简单的README.md就足够他快速入门的了。像项目描述,环境配置,安装,构建及打包指令这些东西对项目的新成员来说非常有用。但那之后,代码就是你的圣经。产品代码提供了所有需要的详细信息,而测试代码则是作为产品代码的内在意图的一个描述。测试用例就是可执行的文档,而TDD(测试驱动开发)就是实现它的最常见的方式。

假设你用了某种持续集成的方式,如果测试-文档(这里测试就是文档,文档也是测试)中有一部分不对了,这个用例会执行失败,它将会很快得到修复。持续集成解决了测试-文档不正确的问题,不过它不能保证所有功能都是有文档的。由于这个原因(当然也有其它原因)测试-文档应当用TDD的方式来创建。如果在代码开发前,所有的功能都定义成测试用例,那么测试用例就能作为开发人员的一个完备的最新的文档了。

那团队的其它成员怎么办?测试人员,客户,主管,还有其它非码农呢,他们可能无法从产品和测试的代码中获取到所需要的信息。


测试人员

最常见的两种测试就是黑盒测试和白盒测试。这个区分很重要,因为它将测试人员也分成了两类,一拨是知道怎么写代码的,至少是能读懂代码的(白盒测试),另一拨是不懂代码的(黑盒测试)。有的时候测试人员也两样都干。不过一般而言,测试都是不懂代码的,因此对开发人员有用的文档对他们来说是没意义的。如果说要从代码中剥离出文档的话,单元测试可不是什么合适的东西。这就是BDD(行为驱动开发,Behavior Driven Development)存在的价值了。它能为非开发人员提供所需的文档,但同时还兼备TDD和自动化的优点。

客户

客户需要能够给系统增加新的功能,同时他们也需要获取到关于当前系统的重要信息。给他们的文档可不能太技术了(代码当然不行),同时也得是最新的。行为驱动开发(BDD,Behavior Driven Development)的故事和场景应该是提供这类文档的最佳方式了。它能够作为验收标准(在代码开发前),还可以反复的执行,同时还能用自然语言编写,这使得BDD不仅仅能够保证文档是最新的,同时它对那些不想看代码的人来说也非常有用。

可执行的文档

文档是软件不可或缺的一部分。正如软件的其它部分一样,它也得经常进行测试,这样才能保证它是准确的并且是最新的。实现这个最有效的方法就是将这个可执行的文档能够集成到你的持续集成系统里面。TDD是这个方向的不二选择。从较低层面来看的话,单元测试就非常适合作为这个文档。另一方面来说的话,在功能层面来说BDD是一个很好的方式,它可以使用自然语言来进行描述,这保证了文档的可读性。

原创文章转载请注明出处:http://it.deepinmind.com

英文原文链接
4
1
分享到:
评论
1 楼 elgs 2014-05-16  
太同意这个观点了。

相关推荐

    软件测试教学文档 java test

    理想的“性能测试”(和其他类型的测试)应在需求文档或质量保证、测试计划中定义。  可用性测试:对“用户友好性”的测试。显然这是主观的,且将取决于目标最终用户或客户。用户面谈、调查、用户对话的录象和其他...

    【测试文档】模板:功能测试报告

    测试文档:功能测试报告文档,主要用于验收测试,提供给外部人员查看的测试报告,即主要是全量测试报告,可供外部传阅或者第三方验收的测试报告,有区别于迭代测试报告,迭代测试报告主要用于内部查看,结果更为细致...

    简单Web服务的创建、测试以及详细文档+精彩实例(代码注释详细)

    本文档就是结合实际的例子来探讨Web服务的创建、测试和使用。详细内容包括: 1,创建Web服务; 2,测试Web服务; 3,生成服务代码类; 4,生成服务代理程序,即DLL文件; 5,本地Web服务的调用; 6,远程调用Web服务...

    集成测试文档

    测试文档资料,方便集成归档,非常有用的技术文档资料,源即表示您确认该资源不违反资源分享的使用条款,并且您拥有该资源的所有版权或者上传资源的授权

    【测试文档】模板:内部测试报告

    测试文档:内部测试报告文档,主要用于验收测试,提供给外部人员查看的测试报告,即主要是全量测试报告,可供外部传阅或者第三方验收的测试报告,有区别于迭代测试报告,迭代测试报告主要用于内部查看,结果更为细致...

    随机数测试工具及文档

    适用于加密应用的发生器可能需要满足比其他应用更强的要求。...然而,没有一套统计测试可以绝对证明发电机适合在特定应用中使用,即统计测试不能代替密码分析。发电机的设计和密码分析超出了本文的范围。

    软件测试ppt介绍文档

    包括大纲,软件测试是什么,与质量保证的区别,以及国内外现状等等章节。。。 引用指出了一个性能问题,即在用户交易过程中无法完成订单提交,问题出现在需求分析环节。 引用解释了吞吐量的概念,即单位时间内完成...

    软件测试技术ppt版

     容量测试是要检验系统的能力最高能达到什么程度,例如对于操作系统,让它的作业队列 ‘满员’,即在系统的全部资源达到‘满负荷’的情形下,测试系统的承受能力。      兼容性测试  这类测试主要想验证软件...

    测试相关文档与资料.rar

    测试相关文档与资料.rar

    系统分析与设计文档(含需求\概要\详细设计\测试)

    系统分析是传统软件工程生命周期里的一个环节,亦即:分析-->设计-->开发-->测试,当然,整个过程会有迭代和变更,但仍遵循着这样的顺序。系统分析要解决的是“软件做什么”的问题。当系统分析把软件功能确定无误时...

    GPU服务器上显卡压力测试工具及测试方法介绍.pdf

    GPU 工具使用介绍,此 stree_GPU 软件适用 windows 系统下 GPU/显卡专业测试工具 stree_GPU 测试工具下载: https://pan.baidu.com/s/1PnxbcIQvM9Y4YtVude7WNg 2、首先你的机器在 windows 下环境配置好,即显卡驱动...

    这是文档标题这是文档标题这是文档标题这是文档标题这是文档标题这是文档标题这是文档标题这是文档标题这是文档标题这是文档标题

    这是描述这是描述这是描述这是描述这是描述这是描述这是描述这是描述这是描述这是描述这是描述这是描述这是描述

    测试文档关于p4能力的相关文档

    软件测试主要工作内容是验证(verification)和确认(validation),下面分别给出其概念: 验证(verification)是保证软件正确地实现了一些特定功能的一系列活动, 即保证软件以正确的方式来做了这个事件(Do it right...

    测试用例编写规范文档格式

    为保证测试用例对需求的覆盖率,即对一个系统从整体功能到单个功能,都尽可能的高的覆盖。而单个功能点主要强调的是不同的输入及其组合所带来的各种输入动作,系统是否都做了处理; 测试用例设计首先要明确该系统...

    基于Python+Flask的matoi渗透测试辅助工具-毕业设计源码+使用文档(高分优秀项目).zip

    基于Python+Flask的matoi渗透测试辅助工具-毕业设计源码+使用文档(高分优秀项目).zip 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,...

    产品需求文档要素.docx

    该文档是产品项目由“概念化”阶段进入到“图纸化”阶段的最主要的一个文档。当然,这个定义针对的是一个全新的产品。广义上来讲,产品需求的描述,应该包含有产品的战略和战术,战略是指:产品定位、目标市场、目标...

    软件资料文档标准规格

    在项目开发过程中,应该按要求编写好十三种文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。  ◇ 可行性分析报告:说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,...

    最全、最新App测试流程及要点梳理

    1、流程图 2、测试周期测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。3、测试资源测试任务开始前,检查各项测试资源。--...

    集成测试计划模板

    【描述本次集成测试所需要参考的文档。】 测试约束 【描述本次集成测试所要遵循的准则及条件约束等。】 测试进出条件 进入条件 【描述集成测试的测试依据和满足该阶段测试进入的条件和约束。】 退出条件 【描述...

    中断测试文档

    中断指游戏运行中被其他的任务或意外事件等情况终止推出,相应的测试即为中断测试。 中断测试有人为中断、新任务中断以及意外中断等几种情况 中断测试在函数结合和内存数据的存取时用的比较多的,因此在设计中断测试...

Global site tag (gtag.js) - Google Analytics