怎么保证测试用例的覆盖率?

-------------------------------------------------------文章参考 乐搏软件测试

《怎样保证测试用例的覆盖率?【切面设计】》

《怎样保证测试用例的覆盖率?【详细用例设计】》
《怎样保证测试用例的覆盖率?【测试数据设计】》


个人觉得在编写测试用例的前提,是需要了解产品的业务流程,以及数据的来源和走向。

需要关注内部处理、专转换、业务逻辑、相互影响等关系。

测试用例的切面设计:

一般我们在分析需求的是,是从上到下,逐渐细分,大模块包括小模块,依次拆分到最小功能。

此时我们要注意的是:

1.功能点切面:

        我们可以从最小功能点,比如一个输入框,使用我们所学的等价类边界值等方法进行分析。

需要注意:组合查询,新增数据->修改->删除->再次新增->查询数据是否正确;按钮多次点击是否出现异常;存在严格前后顺序的,颠倒顺序操作,系统是否会出现问题。

  • GUI界面测试:一定要从使用者的操作习惯出发,从用户操作方便性考虑。
  • 数据初始化情况测试:

       不该为空的数据是否有校验;

        该有默认值的数据默认值是否正确;

        引用其它功能生成的数据,是否会实时刷新;

        页面关闭或系统重启后,数据的初始化设置等都是这类用例。

  • 业务需求实现是否正确:

  数据的长度、类型控制是否合理

  业务逻辑控制是否合理

  提供的实现方式是否合理

  所做的数据控制是否合理

  所做的数据控制是否完整

  还有其它一些操作细节上的满足


2.特定切面:

        提取界面通用操作单独写成一页,比如说,前端有七八个功能界面,都是由同一个后台进行处理,那么我们就可以将这个后台操作的点,单独写一模块。

       

3.隐含切面:

        后台隐含处理(比如有效时长,轮询开启等);多个功能之间的关联处理(这个也是比较容易出问题的);某种特定情形下的处理;

        测试用例还是需要从(功能点)、线(完整的一个功能项)、(多个相关功能结合成完整业务流)三个方面进行区分编写

        特定情况下处理(这个是比较容易被遗漏且比较容易出纰漏的地方):日期处理:月尾一天、月头一天、年尾一天、年头一天;比如WIN 2000环境开发测试的系统,要测试在98、XP、2003等操作系统下是否能运行自如;再有如存在大量动态图片视频等的网页,在普通网速下的展现速度等等

         编写测试用例时们需要考虑数据完整性:数据源删除或者关键字修改后引用的数据是否会出错。两个途径进入的数据是否会冲突或重复。还有因为相关的几个功能由不同人员编码,从而导致彼此的控制不一致,如A功能进入的数据在可允许的极端情况下,到B功能中引用会否异常。

        后台特殊处理:订单保存时,后台是否会有重复数据的判断、非法数据的处理、业务逻辑上的冲突情况处理。比如备份功能,在备份前可能有数据的清空、备份目录的清空、备份目标是否存在的校验、备份文件重复时的处理等等

        功能业务之间的关联与转换:相关联的几个功能之间数据的传递,是否产生影响;

新增录入的某种特殊字符,要查询时会引起查询SQL语句异常;下载文件名中存在中文等字符,下载时由于编码问题导致乱码的出现;

        并发操作时的测试:两个/多个用户同时操作同一功能引起数据的混乱。【同开页面,或者多端操作】

        无界面的后台功能:通过参数设置、代码调用等方式实现测试,测试时要多注意后台功能的执行与前台的一些功能执行会否产生冲突?

        比如后台有个文件搬运的服务,那有没有可能在前台文件生成过程中,后台执行文件搬运了?若有可能就要注意会否出现问题了。----------------这个确实没有考虑到过。

        业务流的相关测试:建议画流程图,然后依次组合测试

        


4.第三方系统模块、组件、函数,确认是否需要测试

5.除功能测试外的其他类型测试

        可靠性(准备大量数据不停地执行)、安全性(考虑数据的加密、数据的传输、数据的破坏)、恢复性(一般从网络、电源方面着手)、配置安装测试(根据系统可支持的配置,搭建相应环境进行功能验证)

测试数据注意点:

  1. 设计的数据必须时唯一性,结果不能存在二义性
  2. 对于不便具体列示的数据,要详细描述清楚你要测试的数据特性:比如数据库字段限长20,要测试超长数据时,可以描述为:尝试输入长度为21位的半角英文字符;尝试输入长度为19位的半角英文字符,然后切换到中文全角再输入一位全角字符等。
  3. 测试数据的设计必须有明确目的性

测试用例覆盖(Test Case Coverage)是软件测试中的一个重要概念,它衡量的是执行一组测试用例对源代码或程序逻辑的覆盖率。它旨在确保尽可能多的代码部分被测试到,以验证软件的正确性和健壮性。常见的测试用例覆盖类型包括: 1. **语句覆盖(Statement Coverage)**:每个可执行的源代码语句至少被一个测试用例执行一次。 2. **条件覆盖(Condition Coverage)**:测试用例不仅要覆盖所有可能的条件分支,还要保证每个条件的真和假两种情况都被测试。 3. **路径覆盖(Path Coverage)**:所有可能的代码执行路径都至少被一个测试用例覆盖,即使这些路径可能是非常罕见的情况。 4. **判定覆盖(Decision Coverage)**:测试用例覆盖了所有可能的判断或条件表达式的结果。 5. **条件组合覆盖(Conditional Branch Coverage)**:与条件覆盖类似,但不仅关注单一的条件,还考虑多个条件的组合。 6. **方法覆盖(Method Coverage)**:测试用例执行了程序中每个方法或函数。 7. **控制流图覆盖(Control Flow Graph Coverage)**:基于控制流程图来确定测试用例的覆盖程度。 测试用例覆盖的目标是提供全面的测试,但这并不意味着覆盖度越高越好,因为过度的覆盖可能会导致资源浪费和测试效率低下。因此,测试人员通常会结合实际需求和资源限制来选择合适的覆盖策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值