上周参加了一个测试活动,了解到一些可以借鉴的深入自动化测试的点,摘要如下:
准备自动化测试数据的多种方法
1.对于一个对象的属性设置一些默认值,例如CreateUser.user()不关心这个user的特定属性,只要是个user.而CreateUser.withCountry(CHN)代表创建一个中国的user.
2. 准备测试数据,抽象为4类: CreateUser.Create_Only代表一定要创建user.CreateUser.Search_Only代表只查出一个已经存在的user.CreateUser.Smart代表先找有没有这样的一个user,找到就用,没有找到就create,保证能返回一个user.CreateUser.Golden_data_only代表拿特定的数据.
3.创建一个数据,当这种类型的数据总量低于某个阈值,系统自动创建多条类似数据存到DB,下次可以直接使用,提高执行的效率。
API自动化
1. 自动产生测试数据,如空值,超长字符串,以很低的代价暴露问题.
2. 发现API行为的变化:初期可能是对某个关键字段进行判定,但这样容易遗漏.改进的方法是把上次的request/response存下来,重跑之后,去除特定的一定会变化的值(如session,time stamp等),若response不同,则报告问题.
微服务架构下的API测试挑战
1. 我知道consumer A将如何”有限地”使用我,所以可以在A和SUT之间放入一个proxy.记录request/response作为contract.下次验证contract就可以.
2. 当被调用的某个微服务X不能正常工作时,mock X,就可以不依赖X测试其它和X有关的微服务了.
测试执行环境
1. 在Jenkins job外面包一层,支持多种执行方式
2.Selenium Grid可提高并发执行能力,找到特定的机器/浏览器/分辨率,分发job
3. 用Docker实现Selenium Grid的动态扩展与收缩
测试报告
1. Full trace test report帮助定位/重现bug,自动提交给DEV
2. GUI video-based test report: fail之后retry3次,看它们产生的Full trace test report是否相同。若是,则在一台可以录video的节点执行并自动录制视频(太大,后改为图片)。基本这样自动化测试发现的问题就不需要人工干预报bug了。
网友评论