自动化回归测试案例评价标准试图定义不同维度来评价自动化案例的优劣,作为后续我们评判讨论测试框架、测试技术和测试案例编写模式的基础。那什么是好的自动化回归测试案例呢?简而言之,就是投资回报率高的案例,因为案例的回报相对稳定,所以,高投资回报率的测试案例的主要特征就是低成本,而这个成本应该是一个测试案例全生命周期的成本:

测试案例全周期成本 =

初始开发成本

+ 执行成本*e

+ 平均错误定位成本*f

+ 平均重构成本*m

这里:

初始开发成本是指案例开发、调试和优化的成本,其实它主要由使用的测试框架和测试工具来决定;

平均执行成本是指案例执行成本,这个成本主要是由暂用计算资源造成的,

e是指执行次数,应该是千次或万次数量级的;

错误定位成本是指自动化案例执行报错后,发现、定位、解决问题的成本,

f是出现错误的次数,一般应该在几十次数量级;

平均重构成本是指为了应对需求变化而重构案例的平均成本;

m是重构的次数,一般可能是几十次数量级的,视相关需求变更频繁程度。

有了上面的成本模型,我们就可以讨论一下自动化回归测试案例的评价标准(MeReST标准):

1.      Maintainable(可维护性),主要指标(Should):案例应易于维护和扩展,可以应对未来的需求变化;在测试案例全周期成本中,对一个正常案例而言,总重构成本会是大头,因此,测试案例的可维护性至关重要;

2.      Efficient(高效性),次要指标(Could):案例应尽可能在最短时间内守护尽量多的风险点;提升案例的高效性,有利于减少测试案例的数量,在不过分影响其他指标的前提下,尽量用更少地案例来覆盖同样的风险点,有助于减少测试案例集总成本;

3.      Readable(易读性),主要指标(Should):案例应该简单,易于理解;易读性在案例开发阶段,会影响案例沟通、交流的难度,影响初始开发成本,更重要的是,它也是影响重构成本的重要因素,因为,维护测试案例的人很可能已经不是最初开发案例的人了,能够重构的前提是看得懂;

4.      Easy-to-use(易用性),次要指标(Could):案例对测试人员而言,应该非常易于使用,例如,易于调试,出现问题易于定位,可以方便重跑失败案例等;这个指标可以在一定程度上影响开发成本,错误定位成本和重构成本;

5.      Sensitive(敏感性),必备(Must):案例的目标是守护关键需求,防范特定风险,因此,案例必须具备足够的风险敏感性,在出现问题时,必须给出预警。永远不失败的测试案例不是好案例;敏感性其实就是案例的最低功能要求,不具备足够的风险敏感性案例就是无效案例,例如,没有assert或仅仅assert函数返回值的单元测试案例都是不够敏感的案例;

6.      Trustable(可靠性),必备(Must):案例应尽量避免由于案例原因造成的随机失败,案例失败最好就意味着对应系统存在问题;可靠性这个指标非常重要,因为,如果案例不可靠,出现随机失败,这会极大增加出现错误的次数,从而传导到测试案例总成本。

分析清楚了MeRest原则,下面我们就可以讨论测试框架、测试技术和测试案例编写模式了。

自动化回归测试案例评价标准 MeRest的更多相关文章

  1. jemeter 实现接口自动化回归测试

    jemeter做接口自动化测试的优点: 1.首先我认为最重要的是不需要编程基础,很多一直想做接口测试但一直徘徊在门边的原因可能就是不想写代码 2.可以更快的上手,能让测试人员更好的理解什么是接口测试, ...

  2. C语言作业评价标准

    C语言作业评价标准 作业内容: 每周作业分为基础作业.挑战作业和预习作业: 基础作业为本周所学内容的巩固: 挑战作业包括但不仅限于所学知识的综合运用: 预习作业为下周所学内容的任务单,要求必须在课前完 ...

  3. ROC曲线-阈值评价标准

    ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性 ...

  4. 关于视觉跟踪中评价标准的相关记录(The Evaluation of Visual Tracking Results on OTB-100 Dataset)

    关于视觉跟踪中评价标准的相关记录(The Evaluation of Visual Tracking Results on OTB-100 Dataset) 2018-01-22  21:49:17 ...

  5. 目标检测评价标准(mAP, 精准度(Precision), 召回率(Recall), 准确率(Accuracy),交除并(IoU))

    1. TP , FP , TN , FN定义 TP(True Positive)是正样本预测为正样本的数量,即与Ground truth区域的IoU>=threshold的预测框 FP(Fals ...

  6. 使用node.js进行API自动化回归测试

    概述 传统的QA自动化测试通常是基于GUI的,比如使用Selenium,模拟用户在界面上操作.但GUI测试的开发.维护成本和运行的稳定性一直是测试界的老大难问题.投入大量的人力物力开发.维护.运行,却 ...

  7. 【Golang 接口自动化08】使用标准库httptest完成HTTP请求的Mock测试

    前言 Mock是一个做自动化测试永远绕不过去的话题.本文主要介绍使用标准库net/http/httptest完成HTTP请求的Mock的测试方法. 可能有的小伙伴不太了解mock在实际自动化测试过程中 ...

  8. 基于C#实现的自动化测试框架:发布自动触发自动化回归测试

    接口自动化测试用例完成以后,以前都是发布以后手动运行测试用例.虽然手动运行下脚本也就是一个F5的事情,但是离自动化测试的标准差得很远.这两天有了个大胆的想法,想要实现以下发布时直接触发自动化回归测试用 ...

  9. ROC曲线(receiver-operating-characteristic curve)-阈值评价标准(转)

    转自:http://blog.csdn.net/abcjennifer/article/details/7359370 ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver ope ...

随机推荐

  1. lampp 在linux ubuntu下自动开机启动

    lampp 在linux ubuntu下自动开机启动 lampp在linux下是不会自动启动的.需要手工处理.如下: 假如,你的lampp安装在 /opt/lampp 目录下,那么可以如下处理: 1. ...

  2. 服务器跟VPS有什么区别

    你好. 服务器是独立的真实存在的硬件设备.其实也就是一台高端电脑.他是放在机房运行的.主要为网站以及一些软件应用提供运行平台.而VPS是虚拟服务器.他是利用软件在服务器上虚拟出来的.也就是分配出一部分 ...

  3. 一个purge参数引发的惨案——从线上hbase数据被删事故说起

    在写这篇blog前,我的心情久久不能平静,虽然明白运维工作如履薄冰,但没有料到这么一个细小的疏漏会带来如此严重的灾难.这是一起其他公司误用puppet参数引发的事故,而且这个参数我也曾被“坑过”.   ...

  4. Android文本输入框(EditText)切换密码的显示与隐藏

    package cc.c; import android.app.Activity; import android.os.Bundle; import android.text.Selection; ...

  5. ubuntu bless 16字节每行

    打开Preferences配置 输入路径:/usr/share/bless/bless-16-bytes-per-row.layout 或者使用以下配置 cat /home/scue/.config/ ...

  6. 安装 LuaSocket

    如果你安装有 Lua 模块的安装和部署工具 -- LuaRocks,那么一条指令就能安装部署好 LuaSocket: luarocks install luasocket  

  7. denyhost防止SSH暴力破解

    参考: http://blog.sina.com.cn/s/blog_593af2a70102vjnf.html denyhost 官网: http://denyhosts.sourceforge.n ...

  8. ARCGIS 10.1 发布服务问题以及注意事项汇总

    本文会逐渐丰富,并在遇到问题后进行整理进来. 一.了解ArcGIS Server以及如何利用ArcServer发布服务 官方中文帮助文档:http://resources.arcgis.com/zh- ...

  9. 记一次VNC远程连接Linux问题解决记录(5900端口测试、KDE桌面安装)

    最近几天,到一个项目上安装Linux部署环境.由于服务器在机房,而进机房又比较麻烦,于是选择VNC远程连接Linux就显得自然而然了.以前也用过VNC,而且还经常使用,由于各个项目环境不太一样,这次也 ...

  10. c#如何读取相机手机的拍摄时间

    /// 获中的照片拍摄日期 /// </summary> /// <param name="fileName">文件名</param> /// ...