测试的几个问题

1.每个函数只完成单一的功能。

    单一功能的函数容易理解,也容易预测其行为。测试的时候,给定一些输入数据就知道它的输出和影响,易于测试。

 

2.把函数分为查询和命令两类。

    查询函数只查询对象的状态,而不改变对象的状态。命令函数则只修改对象的状态,只返回其操作是否成功的标志,而不返回对象的状态。

 

3.验证输入数据,确认使用者正确的调用了函数。

    assert检查仅用于debug版本。

    c++与JAVA可以用throw抛出异常。

    c就不行了。

    但是,检查过参数后可以打印一个警告。仿照glib:

 

return_val_if_fail(cursor != NULL, DLIST_RET_INVALID_PARAMS);

 

需要定义两个宏,一个用于无返回值的函数,一个用于有返回值的函数:

#define  return_if_fail(p)  if(!(p))  /

                 {printf("%s:%d Warning: "#p"  failed./n",  /

                       __func__,  __LINE__); return;}


#define return_val_if_fail(p, ret)  if(!(p))  /

                 {printf("%s:%d  Warning:  "#p  "failed./n",/

    __func__,  __LINE__); return (ret);}

这样一来,遇到无效参数时,可以看到一个警告信息,同时又不影响测试。

 

4.在测试时,用查询来验证命令。

命令一般都有返回值,但只检查返回值是不够的。

应该使用查询函数来检查对象的状态是不是预期的。

比如,删除一个节点后,删除函数会返回一个成功标志,但是,为了更保险,可以使用断言之类的调试中使用的警告语句,进行一下状态查询,看结果是不是真正执行了。

 

5.使用基本查询区验证符合查询。

比如,一个矩形对象的复制,可以再使用分别检验长宽的方法来验证成功地复制了矩形。

 

6.预测结果依赖其执行上下文,要按逻辑组织测试用例。

为了简化测试,在每组测试用例开始时,都要重置对象到初始状态。

 

7.第一次只写基本的测试用例,以后逐渐积累,每次发现新BUG就把相应的测试用例加进去。每次修改了代码就运行一遍自动测试,保证修改没有引起其他副作用。

 

好的测试,可以减少调试的时间,是在调试之前的又一道保障!!生命啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件测试是一个系统性的过程,通常可以划分为以下几个主要阶段: 1. **单元测试(Unit Testing)**:这是对软件的基本单元进行的测试,每个模块或函数独立地验证其是否按预期工作。开发者自身进行的测试,目标是尽早发现代码中的错误。 2. **集成测试(Integration Testing)**:当单元测试完成后,将各个模块组合起来,验证它们相互配合是否正确,确保接口间的交互没有问题。 3. **系统测试(System Testing)**:在整个系统架构级别上进行测试,检查系统是否满足用户需求和业务流程,包括功能、性能、兼容性和安全性等方面的测试。 4. **验收测试(Acceptance Testing)**:这是由最终用户或客户进行的测试,目的是确认系统是否满足他们的需求,是否达到可接受的标准。 5. **回归测试(Regression Testing)**:在修改代码后,为了确保修改没有引入新的错误或影响已存在的功能,需要重新执行之前的测试用例。 6. **性能测试(Performance Testing)**:评估系统的响应时间、负载能力、吞吐量等性能指标。 7. **安全测试(Security Testing)**:查找系统中的漏洞和安全隐患,保证数据的保密性、完整性和可用性。 8. **用户界面测试(User Interface Testing)**:专注于检查应用的用户体验和视觉效果。 9. **持续集成/持续部署(CI/CD)测试**:自动化测试贯穿于整个开发流程中,每次代码提交后自动运行测试,快速反馈结果。 每个阶段都可能有多个子阶段,测试策略可以根据项目的具体需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值