当前位置: 首页 > news >正文

软件项目的自动化测试

自动化测试是以程序测试程序、以代码代替思维、以脚本运行代替手工测试。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。

 

冒烟测试:就是在一个新版本出来的时候,将软件的全部功能过一遍,看有没有什么大问题。如果功能可以正常运行,不会影响测试进行,那么这个版本就可以真正开始测试了。如果功能有重大问题或影响测试进行,那么这个版本就是不合格的,不用进行进一步的测试。比如,拿到QQ的app新版本,登陆都登陆不上,那么这个版本肯定无法继续测下去。或者,游戏中新的模块出现,但是新的模块总是崩溃、卡死,测试进行不下去,那么冒烟的结果就是不合格的。

回归测试:就是以前版本中发现的bug在新的版本中验证是否存在且是否引发新的bug。

1 自动化测试的优势

  1. 回归测试更方便、可靠。由于回归测试的业务流程操作和测试用例是预先设计好的,预期结果也是完全在项目人员掌握之中的,将回归测试交给计算机自动运行,可以极大提高测试效率,缩短回归测试时间。
  2. 可运行更多更繁琐的测试,且快速高效。
  3. 可执行一些对于手工测试来说相当困难或根本做不到的测试。比如,对大量用户的并发测试等。
  4. 具有一致性和可重复性的特点。
  5. 自动化测试脚本完全具有复用性。由于自动化测试通常以脚本的方式实现,这样在不同的版本之间,就可能只需要做少量的维护甚至不做任何修改,实现在不同的测试版本中使用相同的测试脚本执行相同的测试用例。

2 自动化测试的劣势

  1. 永远不可能完全取代手工测试。自动化测试无法做到手工测试的覆盖率,不是每个测试用例都适合转换成自动化测试用例的。
  2. 无法保证测试的正确性。测试脚本本身也可能存在缺陷。
  3. 手工测试能发现的缺陷远比自动化测试多。自动化测试几乎是无法发现新缺陷。
  4. 自动化测试工具是死的,它本身没有任何想象力。
  5. 自动化测试对测试工程师来说必须有一定的开发技术背景。

3 引入自动化测试的时机

  1. 项目周期长,系统版本不断。主要在于回归测试。
  2. 需求变更不频繁。
  3. 系统中的测试对象基本可以正常识别,不存在大批量第三方控件。
  4. 需要反复测试,如可靠性测试需要进行上千次的系统测试。

4 何时避免展开自动化测试

  1. 项目周期短,需求变更频繁。项目周期短的情况下引入自动化测试,不但收不回成本,而且会延长产品的发布时间。需求频繁改变会使老功能的业务逻辑被修改,从而导致相应的测试脚本也需相应修改。
  2. 软件版本还没稳定。
  3. 多数对象无法识别以及脚本维护频繁与艰难。

5 自动化测试用例设计

在项目的测试过程中,测试工程师都会首先分析测试需求,产出测试计划后,编写和设计测试用例,设计开发测试脚本。

  1. 自动化测试用例的范围往往是核心业务流程或者重复执行率较高的。并不需要覆盖所有的手工测试用例。
  2. 自动化测试用例的选择一般以“正向”为主。正常情况即为“正向”,异常情况即为“反向”。功能自动化测试主要还是用于回归测试,回归测试的目的就是保证新增功能后老功能是否能够正常运作。
  3. 手工测试用例可以不用回归原点,而自动化用例往往是必须的。所谓回归原点就是执行的测试用例最终需要恢复其在执行前的初始状态。比如添加用户功能,由于用户名是唯一的,第一次执行时没有问题,第二次执行时程序就会出现用户名重复而报错;这种情况下,就需要在自动化测试用例最后增加删除该用户的步骤。
  4. 自动化测试用例与手工测试用例不同,不需要每个步骤都写预期结果。

相关文章:

  • 华为云的云计算比阿里云的云计算认证好吗?
  • Linux教程:RocketMq介绍以及集群服务搭建(双主双从同步双写)
  • RK3399平台开发系列讲解(设备树篇)设备树资源的处理
  • 项目实战第二十二讲:使用职责链模式实现商品审核
  • 笔试强训(十三)
  • node.js基于微信小程序的外卖订餐系统 uniapp 小程序
  • u盘文件删除怎么恢复?解决方法很简单
  • 【刷题日记】笔试经典编程题目(八)
  • 阿里巴巴编程规范实战(一):编程规约之常量定义代码格式
  • 人生苦短 我用Python,零基础运行你的第一行Python代码
  • zabbix案例--zabbix监控nginx状态
  • 《Rust权威指南》读书笔记 - Chapter 1, 2
  • 框架学习——ElasticSearch分布式搜索框架
  • 羊了个羊数据结构分析与代码简单实现
  • Linux驱动开发10 --- 内存和I/O
  • @jsonView过滤属性
  • ComponentOne 2017 V2版本正式发布
  • Java 网络编程(2):UDP 的使用
  • java小心机(3)| 浅析finalize()
  • Js基础——数据类型之Null和Undefined
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • mac修复ab及siege安装
  • npx命令介绍
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • springboot_database项目介绍
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微信小程序设置上一页数据
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • #### go map 底层结构 ####
  • #pragma预处理命令
  • $.ajax,axios,fetch三种ajax请求的区别
  • $GOPATH/go.mod exists but should not goland
  • (1)(1.13) SiK无线电高级配置(五)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (7)STL算法之交换赋值
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (定时器/计数器)中断系统(详解与使用)
  • (二)fiber的基本认识
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • **CI中自动类加载的用法总结
  • *p++,*(p++),*++p,(*p)++区别?
  • ... 是什么 ?... 有什么用处?
  • .bat批处理(六):替换字符串中匹配的子串
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .Net 知识杂记
  • .NET 中的轻量级线程安全
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件