看了下相关教程 https://arthas.aliyun.com/doc/trace.html 可以满足链路的调用, 有 java 项目时我深入使用看看。
一些基础的 ast 教程(不同语言差异不大,比如:go、js、java 等)
(具体数据没去调研过,这边不做太多评论)
个人感觉:没有最好的知识, 优先掌握能解决实际工作中问题的知识最好,毕竟时间有限或者你能卷 。
很可惜, 由于工作内容原因,后续没再继续深入了。。。(部门不是太看重)
主要是 自己也维护了一个简单的 blog, 所以用了第三方图床, 后续找个稳定点的。。。
额,可能因为图太多了(免费图床可能不太稳定)。
https://lucid.app/documents#/dashboard 图是用的这个工具, 个人感觉还不错,就是有点卡
没办法。。公司硬性规定。。。
多谢大佬分享,看起来应该能满足我这边要求。
我这边的方法如下(仅供参考):
举个实例:
比如正常到店内扫码点餐的一个操作。其中可能需要调用获取菜品信息、菜品信息校验、下单等多个接口调用。
那么你可以根据模块单元来划分封装接口(每个接口里面最好只提供一个操作,这样可以减少依赖),
比如:
菜品模块单元里面可以包含获取菜品信息,菜品校验等接口。
下单模块单元里面包含下单,撤单,取消订单等
订单模块单元里面包含拉取订单详情等
最后在 case 里面分别调用每一个模块单元里面的单一接口。
这个公司的项目一般是不能放到 github 上的,你这里面说的卡在复杂关键字封装是指的 RF 框架的自定义关键字么?
问题 1:
本质上是代码驱动,针对不同的接口或者类, 在代码里面建一个对应数据工厂, 然后在里面创建一个接口的请求模版, 可以根据关键字变量来动态改变请求参数。 至于数据的复杂性这完全取决于你的接口定义的参数复杂度。
问题 2:
进过几个交流群但是里面有点变味。 各种推销啥的。就不了了之了。
我理解你这里说的多端指的是多个不同 git 仓库中的项目??
如果是的话, 直接用 jenkins 中的 sonar-scanner 配置不同的 job 就能持续集成了。每天定时扫描。
如果不是,可能需要你在描述下你的场景需求
多谢反馈, 由于最近换了图床,忘记更新这边的图片链接了
可以,sonar 支持很多语言的静态扫描。可以去官网查看下具体支持哪些。 https://www.sonarqube.org/
这个和 sonar 本身应该没啥太大关系, 这报错是 google 的 collect 库里面的 ImmutableMap 进行了冲突校验,发现这个 map 里面有重复的 key。 你这是添加了自己的 sonar 规则么?
我文中提到了其他方式,暂时由于实现了增量的效果, 但是团队内效果不是太理想,还未尝试使用字节码这块。
当时发现社区内有通过 python 实现增量的,可以参考以下 https://testerhome.com/topics/15121
由于没有太多往移动自动化工具发展,但个人认为工具使用大致都是几个阶段:会用工具、理解工具、重构工具。
可以多了解下工具内部的实现逻辑,如果可以的话还可以去二次封装工具。 不过我也仅仅还在理解工具这阶段
后续应该会根据一些线上 case study 来实现定制化的一些规则,这块应该是个比较有趣的方向
程序猿就是走的深夜买醉的路。
加油
这个取决于你个人现在想具体学到什么程度。说下我当时的过程
当时我开始做这块的时候没有去笼统的进行过系统的学习,最好是能够将其分解:
1、语言:选择了 python,那么 python 的基本语法都掌握,以及一些 python 的特性. 参考python,学会使用 requests 库来进行网页或者服务接口的调用.
2、工具:大多数做接口的都是 http 协议,就可以用 requests + python + unittest/pytest 写个自动化测试框架,现成的 robotframework、selenium 等等工具也都可以直接使用, 可以自己 google 搜索下相关的工具使用教程。
3、网络:了解什么是 http 协议http 资料, 有兴趣深入的话可以查看 http 权威指南
补充下:
刚看到社区里面的开源项目中也有挺多自动化项目,有兴趣也可以研究下
多谢提议, 才发现 自己问题里面句子打错字。。
自动按照数据类型,通过参数组合生成测试用例
我通过写了个脚本对接口文件分析来生成用例, 但是只是生成一个简单的 case,自动构建出 post 请求的 datas、headers, 具体参数还需要人工编写 test ,不过这样也可以快速构建出用例,但对于参数组合这块还是没太想到怎么自动组合:
public CouponDTO queryMemberCoupons(QueryRequest request);
# 通过接口文档解析出来, 生成的固定格式service。
query_member_coupons_data = {
'url': 'xxx',
'method': 'queryMemberCoupons',
'paramTypes': ['com.xxx.QueryRequest'],
}
def init_query_member_coupons_data(self, request):
args = {'paramValues': [json.dumps(request)]}
append_data = self.query_member_coupons_data
datas = CommonMethod.init_data(self.temp_data, append_data, args)
return datas
def query_member_coupons(self, request):
data = self.init_query_member_coupons_data(request)
data = json.dumps(data)
result, code = HttpOperate.http_post(url=self.url, headers=self.headers, data=data)
return result
# 再自动生成一个服务CouponUtil
@classmethod
def query_member_coupons(cls, request):
result = cls.coupon_member_service.query_member_coupons(request)
return result
# test 人工编写
def test_query_member_coupons_case_1(self):
member_request = CouponFactory.build_data(xxx)
# test
test_result = CouponUtil.query_member_coupons(member_request)
嗯嗯,流程上,我们通过使用格式化的接口定义来控制,在自动化代码里面再根据格式化的接口定义自动生成请求的测试代码。至于接口设计这块取决于开发和测试对接口的理解了,这块我们还需要加强。
对于吐槽这种东西吧!个人觉得可以有,毕竟不是量身定做的。
1、吐槽了表示在自己用了,然后用的时候用的不爽了,不爽了那就需要来解决,于是就看看大家有没有什么好的思路。
2、如果仅仅是吐槽,而不尝试着去解决问题。那才属于无病呻吟。