如何提高测试用例的有效性和高效性

发表于:2011-12-19 12:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小波德_子电    来源:51Testing软件测试网采编

  取这个标题,感觉有点大,只能说我写的内容是围绕这个意思来的。

  最近已经是带了第二个新人了,自然要教别人怎么写测试用例,我给新人的建议都是测试用例要追求有效性和高效性。

  我总结的经验呢,测试用例最重要是要抓住,合适的测试样本、准确的测试路径和明确的测试目的。虽然听起来感觉有点像废话,但我觉得很多人写测试用例就是容易忽略这几点。

  首先是合适的测试样本,比如测试某个功能,它是有一些前提已经存在的,可以理解为一些数据限制。举个例子,比如我们测试一个会记录用户历史数据的软件,对于一个全新的样本和有历史数据的样本是不一样的,样本的不同元素条件也决定了他在做一些操作时软件的反馈是不一样的。

  然后是准确的测试路径,理论上最保险的应该是A*B*C*D*E*F*...个路径。一个流程,就是一条路径,但一个流程中包含了几个环节,每个环节有几种测试边界。根据数学的排列组合,最保险的路径数是不是应该把每个边界数相乘?但这个就不高效了。如果能发现其中不同环节之间的出bug的相连性呢。比如知道在A步骤的第三种边界如果出bug,那在C步骤的第二种边界肯定出bug。或者比如知道在B步骤的第二种边界表现是正常的,那在D步骤的第一种边界肯定也是正常的。那是不是就能省掉一些亢余重复的路径了呢?如果你知道两个步骤中的两个数据都读的数据库中的同一个字段,那这两个步骤显然就可以看一个地方的边界就好了。如果你知道两个地方共用的一个控件,那如果控件出问题,那肯定两个地方都会出问题。所以高效点的测试路径,应该精简为A*(B-M)*(C-N)*D*E*F...再然后如果确定E、F步骤跟A、B、C、D生成的数据毫无关系,那可以再精简为A*(B-M)*(C-N)*D+E*F...我们知道如果对于一次修改,往往不是所有的步骤的边界都受影响的,如果确定出某次改动只影响了A、C、E步骤的边界,那测试路径可以再精简为A*1*(C-N)*1+E*1...上面说的这些都是理论上的数学组合分析,而在实际测试过程中,如果对一个系统比较熟悉,我们只要抓住影响的相关性、影响的不相关性、步骤边界的相互限制,就能抓住几条最高效且有效的测试路径,对一个改动带给一个系统的风险进行测试。

  最后说下明确的测试目的。只要是测试用例,都有测试目的,可能是对一个全新的功能进行测试,可能是对一个改动可能带来的风险进行测试,可能是验证现有的一个功能在某种特定条件下的表现。测试目的一定要明确,这就好比你是要去吃一顿丰盛的午餐,还是去喝杯下午茶,还是半夜饿了爬起来吃点夜宵,我想这其中的区别大家还是可以理解的。

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • heaven7253
    2012-2-01 17:44:33

    别的不说, 准确的测试路径这块
    个人认为  高效的要测,认为不高效的也要测试,测试就是在于怀疑,理论上的东西谁也不能打包票。测试的覆盖率不是根据高效有效来设计的。
    还有 这个分析高效有效的方法 不是为了过滤掉那些“认为的”不重要无效的case,而是做为一种测试策略导入最好,比如 认为最有效高效的用例作为第一优先级,其他的case作为2,3优先级,当时间紧时,就按照effort安排Pro1的进行测试。
    PS:全路径测试如果手动太麻烦,那就算下自动化导入的成本,弄个自动化就行了。但是全路径必须测到。测试里没有捷径,只有你认为的捷径。

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号