目录
禅道是一款什么工具?
禅道是一款项目管理工具,可以管理整个软件开发的生命周期。
软件开发的生命周期有哪些?(软件开发的流程)
需求–计划–设计–编码–测试–发布
禅道可以进行测试管理:测试需求、测试用例、测试过程(状态),缺陷管理,报表统计
禅道的使用者:产品经理,项目经理,开发人员,测试人员
什么是自动化测试?
在预设下的条件(自动化脚本)下运行系统,预设的条件包括正常和异常的情况,不需要手工去干涉机器可以执行。
越往下测试,效率越高,定位问题越容易;
主要精力放在单元测试的自动化;
单元测试的自动化;
(1)单元测试
写一个方法,如果main方法测试,就需要把整个项目启动起来
适用于项目比较庞大的系统:spring+Structs+hibernate
(2)接口测试
测试时间段:项目前期接口开发完成开始进行测试
用例维护量:比较少(HTTP)
适合的项目:接口变动较少的项目
自动化的价值:脚本的复用率越高,价值越大
(3)UI自动化
定义:对系统的界面元素进行操作,模拟用户的使用完成功能的正常和异常测试。
测试时间段:项目后期,项目完成前后端的开发和联调后
用例维护量:比较大
适合的项目:适合界面元素变动比较小的项目
UI自动化的好处
- 可以进行回归测试
- 节约资源
- 是一种可靠的测试方法,机器不会出错
- 可以完成很多繁琐的测试
- 能够完成手工测试无法完成的测试
自动化框架
RobotFranework ,关键字驱动,底层实现语言Python
Django,接口,底层实现语言Python
selenium,unittest框架,底层实现语言Python
为什么选择selenium?
webdriver的原理
- 运行脚本,把浏览器绑定到一个端口,这个端口就是浏览器端的remote server;
- 脚本通过commandexecutor,向浏览器发送HTTP请求,控制浏览器进行一系列的操作;
- 浏览器内核把指令解析成web service的命令,驱动浏览器进行一系列操作;
selenium第一个脚本
:
(1)定位元素的方式
定位元素的原则,不管用什么方式定位,这个方式(tag_name,name,id等)必须是全局唯一的
- id如果存在可以全局唯一定位一个元素
- name如果存在并且全局唯一定位一个元素
- class name如果存在并且全局唯一定位一个元素(类属性,样式css文件中定义的元素的样式,文字的大小,样式,颜色,图片的格式等)
- link text必须是链接,且链接内容全局唯一,才可以定位到(必须保证是一个可访问的URL)
- partial link text必须是链接,且链接内容全局唯一,才可以定位到(必须保证是一个可访问的URL)
- tag name必须全局唯一才可以定位到(元素标签)
- xpath任何一个元素都可以定位到
- css selector
(2)操作测试对象
- send_keys()像元素发送信息
- click()点击元素
- submit()提交表单
- clear()清除元素的类型
- text()获取元素的内容
(3)等待
- 固定等待 sleep()必须等待够括号的时间
当页面中的元素没有加载出来的时候,无法定位到元素 - 隐式等待(智能等待)
(4)信息打印
- 打印title
- 打印URL
(5)对浏览器的操作
-
浏览器的最大化
-
设置浏览器的宽和高
-
浏览器的前进和后退
-
浏览器滚动条的控制
(6)键盘事件
备注:所有的键盘操作必须建立在定位到元素的基础上,因为我们是基于元素进行操作的
常见的性能问题
- 内存泄漏(软件运行的时候没有回收内存,导致系统运行越来越慢);
- CPU使用率达到100%;
- 线程死锁,阻塞,造成系统运行越来越慢;
- 查询速度越来越慢;
- 受外部系统的影响越来越大;
为什么要进行性能测试
- 获取系统性能的指标,作为性能基准指标;一个新系统,需要知道系统的性能指标
- 验证系统的性能能否符合需求(应用系统能够满足系统的各项性能指标;
应用系统是否可以处理预期的用户量,并且是否有盈余能力;
应用系统是否可以处理预期的事务数量;
在预期和非预期的情况下,系统能否可以稳定运行;
在预期和非预期的情况下,用户使用软件时是否可以获得舒适的体验; ) - 看系统是否有内存泄漏等瓶颈问题
- 系统在正常工作下能处理的用户的数量
- 了解系统的性能,让运维部门更好规划系统的各种配置
确定性能测试的需求(性能指标,量化)
- 关键性能指标的分析
- 关键业务的分析
系统出问题,一般不是系统所有的功能出问题,而是一些关键的业务或者功能出了问题导致的
(1)在分析性能指标时,要选择用户频繁使用的功能
(2)计算量比较大的业务
不同的维度衡量系统的性能
-
研发人员
系统的架构是否合理,是否支持多线程并发这类操作
数据库设计是否合理(合理放入索引和合理的关联表的关系)
算法,核心算法是否高效
设计和代码:是否存在不合理的线程同步方式和不合理的资源竞争 -
系统运维人员
系统对资源的利用率,服务器(CPU,内存,磁盘,网络带宽等)的利用率和数据库的使用状况
系统的容量:系统支持的最大用户数
系统的稳定性:是否可以稳定运行,一天24小时
系统的可扩展性,如果要进行扩容操作,系统可以支持 -
用户
使用是否舒适,响应是否速度快,稳定性好 -
性能测试人员
以上侧面都需要关注
当系统性能无法达标时,关注引起系统性能的瓶颈 -
性能指标
并发用户数:
业务层面的并发数:同一时刻向后端服务器发送请求的用户数量
后端服务器的并发数:同一时刻向后端服务器发送请求的数量
响应时间:
用户发送请求,到用户所期待的响应完全展示到前端所需要的时间
前端响应时间:系统响应时间,服务器之间通信处理请求所需要的时间
事务响应时间:系统中完成一个事务的平均响应时间
事务:一系列密切相关的操作的集合
每秒事务通过数(TPS):平均每秒处理的事务的数量
点击率
每秒点击数代表用户每秒向web服务器提交的HTTP请求的个数
点击率越大,服务器的压力越大
吞吐量
单位时间系统处理的信息量
思考时间
模拟用户时间操作的停顿时间
资源利用率
系统在运行的时候资源的使用情况,包括CPU,内存,硬盘,网络等 -
模型
当系统的性能不满足需求的时候,我们需要扩展系统的性能 -
性能测试的方法
基准测试(没有性能需求,主要了解系统的性能指标)
系统的新版本,或者新接手的系统,需要进行基准测试,获得系统的性能指标,作为以后改善系统的性能,或者保持系统性能的基准。
进行基准测试不仅可以获取系统的基准新能指标,也可能会发现新系统的一些性能问题。
并发测试
同一时刻,向后端服务器发送请求,测试系统的表现,看系统是否会因为用户量大而出现资源竞争,死锁等问题;
压力测试
压力测试一般指后端的测试,不断对系统施加压力,看系统在长期处于临界饱和情况下,系统的稳定性以及系统性能指标的变化
进行压力测试的时候会不断向系统增加负担,是的系统长期处于高负荷情况,看系统在极限情况下是否稳定,确定系统在极限情况下的CPU利用率,内存使用情况等指标
配置测试
系统配置在不同的配置上进行测试,找出能够使系统性能发挥最优的配置
可靠性测试
验证系统长时间运行的稳定性
系统实际负载的70%左右,长时间运行,看系统是否运行稳定,指标是否稳定