美文网首页程序员软件测试
测试开发--程序设计之断言和容错篇

测试开发--程序设计之断言和容错篇

作者: 钰欣乐谦 | 来源:发表于2017-11-06 20:50 被阅读0次

总结测试开发中常见的程序设计问题,这篇的主要内容是关于断言的使用。如果有任何有疑问,欢迎指出和讨论,感谢。

一、断言和容错设计的使用

1、可以用static_assert执行编译时的断言检查

    如:static_assert(sizeof(char *) == 8, "不是64位模式")

2、避免用断言去检查程序错误:

    1)外部不可靠的数据应该做严格检查才能放到系统内部,这个时候它是守卫,提前检验和过滤不合理的数据和参数,应该使用错误检查处理代码(如KGLOG_COM_PROCESS_ERROR等)

    而不是用断言来做检查

    *外部不可靠的数据:是指如不合理的用户输入、或其他模块传入到该模块的消息或数据,

    有点像是对项目组外的员工,要动用项目组的资源,是需要经过审核的

    2)系统内部的交互数据(如程序内部的调用),可以用断言来检查意想不到的错误,或者程序内部的假设。(即检查它的潜规则、逻辑边界、隐形假定、输出或内部状态是否如预期)

    *因为系统内的调用者一般情况下是有义务负责传递给自己内部的数据是合理正常的数据

    就像项目内的员工,对于使用项目组的资源的门槛就会低很多

    *可理解为assert和出错处理是对所写程序建立不同的信用级别,也方便在Release版可以性能更好的运行程序

    3)推荐针对public的函数或接口的入口处对参数做严格的错误检查;对于Private的函数或者只有这个模块能看到的,可以用assert

3、容错性程序设计常常要解决的是:现实中,防止用户数据丢失或程序崩溃而采取的措施。只是除此之外,也许可以适度考虑:

    *我们是否希望在进行容错性程序设计时,错误要不要被隐瞒?

    *实现程序时,如果有错误(特别是意料之外的错误)发生时,

    1)我们有线索吗?能得到什么?怎样更好的定位和处理它?

    2)需要报警方案吗?

    3)有预案吗?

    4)可能的影响大吗?

4、避免断言中使用改变环境的语句:

    如不正确的代码:

    int Test(int i)

    {

        assert(i++);  //debug版和release版的i值就会不一样

        return i;

    }

    int main()

    {

        int i = 1;

        int nValue = Test(i);

        printf("%d\n",  nValue);

        return 0;

    }

    合理的形式:

    int Test(inti)

    {

        assert(i);

        return++i;

    }

    注:与改变环境的语句类似的行为是宏定义。

            *请尽量不要在assert中调用宏,以防止宏的副作用


以谦卑的心感受,以感恩的心生活

相关文章

  • 测试开发--程序设计之断言和容错篇

    总结测试开发中常见的程序设计问题,这篇的主要内容是关于断言的使用。如果有任何有疑问,欢迎指出和讨论,感谢。 一、断...

  • 2019-06-16

    ios app开发的容错机制和异步加载 在开发中,不能保证百分之百的没有BUG,所有经常用到容错;每个app中请求...

  • 测试day3

    动态测试技术之白盒测试:白盒测试利用程序设计的内部逻辑和控制结构生成测试用例,进行软件测试。白盒测试的方法主要是静...

  • 程序设计语言|分类与特点

    程序设计语言基本上可以分为:命令式程序设计语言、函数式程序设计语言、面向对象程序设计语言和逻辑程序设计语言。 1....

  • 程序设计语言|基本概念

    程序设计语言与语言处理程序的内容 1.程序设计语言分为低级语言和高级语言 低级语言:机器语言和汇编语言。 机器语言...

  • 使用 Android Studio 开发 Web 程序 - 测试

    测试 这是 “使用 Android Studio 开发 Web 程序” 系列的最后一篇文章,接着前一篇调试的主题之...

  • 全面解剖人工智能

    目前LISP语言仍然是人工智能系统重要的程序设计语言和开发工具; 认知建模是信息处理过程、也是知觉、记忆、思维、判...

  • 功能测试用例编写框架-2020-04-22

    功能测试框架可以包括:界面友好性测试、功能测试、链接测试、容错测试、稳定性测试、常规性能测试、配置测试、算法测试等...

  • Golang快速开发框架——增加认证基础测试模块(十)

    Golang快速开发框架——增加认证基础测试模块(十) 背景 知识分享之Golang篇是我在日常使用Golang时...

  • 【编测编学】分享一套好用的功能测试用例编写框架

    功能测试用例编写框架 功能测试框架可以包括:界面友好性测试、功能测试、链接测试、容错测试、稳定性测试、常规性能测试...

网友评论

    本文标题:测试开发--程序设计之断言和容错篇

    本文链接:https://www.haomeiwen.com/subject/odlrmxtx.html