• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

防御性编码和单元测试“交通规则”

发布: 2009-3-31 10:21 | 作者: 不详 | 来源: 测试时代采编 | 查看: 38次 | 进入软件测试论坛讨论

领测软件测试网

如果您的代码严重依赖于其他应用程序的代码,那么您对那个应用程序是否熟悉到可以对设计进行检查?考虑在您的设计检查小组中加入熟悉该产品的一个开发人员。在设计阶段发现的集成问题可以得到最有效的处理。

安装和使用考虑
如果您的代码是以前版本的一个升级,那么是否有会使升级失败的参数或者其他选项改变?有哪些其他产品与新代码交互或者集成 —— 如果这些产品本身也改变了呢?还有,您的代码是否容易安装?

操作系统和数据库考虑
您的代码是否会在新版本的操作系统或者数据库上运行?您是否知道这些新版本中加入了哪些改变以及它们是否(及如何)影响您的代码?

这只是测试
设计是否结合了可测试性?虽然您可能认为可测试性问题不是您需要关心的,但是事实上单元测试是开发人员的责任之一 —— 几乎所有使执行功能测试和/或系统测试更容易的任何事情也会使单元测试更容易执行。

下面是可测试性领域内容的几个例子(更多内容请参阅参考资料部分)。

设计是否允许运行时外部工具访问“状态”变量(例如,当前状态),特别是那些测试程序需要用来验证代码是否正确工作以帮助确定问题的变量? 是否对跟踪和日志给予了足够的重视?您让其他人分析缺陷越容易,您在发现缺陷后修正它们就越容易(而且在单元测试中发现自己的问题也会更容易)。 您是否考虑了所有可能调用您的代码的上下文?如果您可以将错误消息与调用它的用户函数上下文相关联,那么用户就更有可能理解这个错误。 设计是否结合了您的测试自动化工具所需要的特定的“钩子(hook)”?

再多想一想您肯定可以在这个清单中加入更多的内容,特别是那些对您的产品或者组织特定的内容。

防御性编码技术:编译器是您的朋友
当您完成对设计的检查后,就轮到编码了。就让我们面对它,除了设计错误外,编码是惟一引入缺陷的地方。无论如何,您的测试程序和客户是不会加入缺陷的 —— 只有您会。我们都知道时间很紧张,但是如果您没有时间在第一次就把它编写正确,那么您怎么能找到时间去修正它呢?花上一些时间,这会使您在以后的编码工作中更轻松。

防止缺陷的最好方法之一是使用编译器。令人恐惧的是,开发人员在编译时通常选择使用最低程度的警告输出,所以请启用编译的全部警告 —— 把即使将编译器配置为检查所有方面编译时也不产生一个警告当成编写代码的一个挑战。此外,对代码使用多种编译器使很多程序员获益 —— 这种方法有时会捕获不同的语法错误。

编码习惯
下面我们将抛砖引玉介绍几个好的编码习惯。我们不是要为您定义“最佳编码习惯” —— 我们只是要您形成自己遵守的代码编写习惯。下面是几个供参考的最佳习惯的例子。

在使用前初始化所有变量
您是否有一组可接受的默认值,特别是对于可能被用户、其他组件或者其他程序有选择地修改的数据?同时,我们强烈要求您列出在最外围例程中要使用的所有本地变量,然后再专门初始化它们。这样不会对您编写代码时的想法留下任何疑问。虽然这可能要多花一些时间并且像是没有理由地增加了几行代码,但是与只是在“运行中(on the fly)”声明本地变量相比,大多数优化编译器不会对此生成任何额外的运行时代码。清单 1 显示了在一个例程中最初几行代码的一个例子:

文章来源于领测软件测试网 https://www.ltesting.net/

52/5<12345>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网