有个点不大理解,为何必须要绑定域名这个东西?是有什么特殊需要吗?
本来域名就是为了避免 ip 难记所以才弄的。如果既要有域名,又要有 ip ,何不直接用 ip ?
我们目前做法是,框架提供一个环境名称配置项,可以根据这个配置项的值调整,选用不同环境的配置文件,配置文件里再具体写这个环境里各个服务的地址信息。这样启动命令里面给不同的环境名称,就可以切换不同环境了。为了方便不改代码加配置,也支持通过环境变量或者直接写具体配置项名称,覆盖配置文件里面的值。
spring boot config 在这方面可以说是做到了极致,支持 17 种配置方式,甚至还支持配置的继承,推荐看下:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
是的。个人觉得不用纠结用是框架还是平台,能简化这 80% 的场景的工作量,就产生价值了。
所以能做到这些,是加分项,也是独特竞争力。
从整体质量保障角度,能做到这些,对降低成本收效更大,因为这个阶段修复的问题成本比测试阶段修复要低。所以能做到这些,公司也才愿意给你更高的待遇。
现在已经是敏捷的年代了,跨界是个很普遍的事情。产品要懂开发,便于设计合理且开发成本低的系统;开发要了解业务,便于需求太复杂时提出意见,在保持需求价值的同时降低复杂度。如果测试还只是停留在测试阶段,对自己要测试的系统除了功能一无所知,那就会被淘汰了。
框架和平台,我觉得本身特点和定位不一样,各有优势,但两者可以并存共赢。debugtalk 提出的框架来实现测试用例的开发调试和运行,平台只做用例展示和结果展示,也是挺好的结合方式。
框架/工具:
优点:灵活度高、可以套各类设计模式、idea 自动生成 + 断点调试等,简单的说就是写用例很爽。
缺点:要有编程基础,要装运行环境。简单的说就是执行测试不那么爽。
平台:
优点:不用本地装任何东西,有个浏览器就行。非常便于推广到非测试团队使用(如开发点一下就执行测试),也便于数据收集统计。简单的说就是执行测试很爽。
缺点:GUI 交互的灵活度会低一些,业务复杂度高的用例写起来可能不那么方便。如果采用写代码类的方式,因为缺少断点调试和自动生成,效率也会降低。简单的说要做到写各类用例也爽不容易。不过如果是轻量级的接口测试(录制或导入接口文档生成 request ,校验主要验证返回码 + 少量返回值,涉及多接口调用的链路不多),这个问题估计也不大,甚至使用上学习成本比写代码低不少。
个人觉得这个事情没有绝对的对错,要根据实际情况来看。适合当前公司团队的才是最好的。至于那些说做平台只是为了装 B 的,说明他们在了解团队实际需求上没做好,只是按自己想法去做,而不是按大家的想法去做。这类情况可以参考的一种解决方法,就是让测试开发开始设计平台前,先到业务测试组轮岗 1-2 个月,熟悉业务测试的实际情况,以后也好相互交流沟通。
可以看看 rest-assured 。链式调用的校验阶段返回的对象,除了可以通过链式调用做断言,也可以取出任意返回值。
框架能满足 80% 场景的需求,剩余 20% 通过高成本一点的手段能满足,我觉得这就是一个挺不错的框架了。
PS:我司内部目前基于 rest-assured 推广接口测试已有超过 1 年时间,但实践中大家对于全链式调用的接受度不是太高,因为实际用例中 request 部分大多差异不大,但 response 校验部分差异较大。而全链式调用从头写到尾,会导致 request 部分重复度高。
目前优化后的用法是:
1、 request 部分封装成函数,返回一个 rest-assured 的可链式写断言或提取表达式的对象,供用例进一步使用。
2、一些通用类参数或统一加解密,做到 filter 中(类似于 spring 的 aop ),用例不需要为此额外写任何东西。
很好的分享,可惜没能搬运过来。
讲师一般最后都会加入到该专场的群里的,可以在群里问下哪位是讲师,然后加好友交流。
个人想法:
本职工作:
改进工作:
核心讲你的独特点,别人没有而你有,或者别人做不好但你做得好的。提到价值,核心就是增加收入、降低成本,从这两个方面讲出你独特价值就好。
想问下,你是想测试 proto buffer 这个通讯层,还是 rpc 这个功能调用层?
如果是后者,直接测试 grpc 提供的 rpc 方法可能比较直接。毕竟 rpc 层已经帮忙把常规的缺字段、字段值类型不正确这类问题都挡住了。
想了解下在实际落地时,通过解读文中提到的指标,得到什么样的结论,并对应采取什么样的措施改善,效果如何?
落地过程中有遇到什么困难(如数据没有及时更新导致不准),大概怎么解决?
后续也计划做类似的度量系统,但比较关注的还是度量后,是否得到了更准确的信息,进而定位到阻塞点,重点改进。
可以了解下 MBT。
社区相关帖子:https://testerhome.com/topics/18475
不过目前还不成熟,同时模型的建立其实也依赖人,也许等 DDD(领域驱动设计)流行后,里面的模型可以也套到 MBT 里面,且结合 ai 优化路径遍历算法,有可能达到以可接受成本落地程度。
直接脚本配置里配置被测应用以及其依赖应用的 ip ,会有什么困难?或者说你用的是哪个接口测试工具,分享下,大家说不定可以告诉你对应的方案?
用 host ,作用域都是整个服务器,所以会出问题。但如果是脚本里配置,那作用域就只有单次执行的进程,可以做到相互独立。
感谢支持~
你这段是你当时说会卡死的代码么?好像没看到你提到的 timeout 配置?
好吧。。。
建议弄台 linux 虚拟机,或者给官方提个 issue 。这块比较深入 windows 和 linux 的差异了,我也不大知道怎么解决比较好。
刚找了台 windows 机器结合 git bash 试了下,貌似 ps 不会显示所有进程。可能是 windows 下不支持。
可以试试直接改为用控制台找到的 pid ,继续进行后续的 attach 步骤。
那就好。不好还是比较好奇,为啥一个 timeout 会导致 http method 都消失了。方便把你之前存在问题的代码附上来不?
另外,建议下次提问,可以把关键代码加上足够的注释,直接贴出来。这样沟通成本低很多。
你的异步请求代码是怎么写的?这个请求很奇怪,连 http method 都没看到用的是哪个。
这个太粗了吧。。。
会向后台提交这些步骤 ,具体是怎么提交,同步还是异步,一次交互还是多次交互?
去调用我判断这些元素并执行相应的方法去找到对应的关键字驱动 ,这个是纯服务端还是服务端 + 客户端的操作?
建议画个 uml 时序图(可以用 plantuml 或者找些支持时序图的 markdown 编辑器),说明下网页点击这个 测试 按钮后,浏览器端和服务端的交互。比你写文字清晰多了。或者直接把你这方面的代码贴出来,也便于了解具体实现细节。
另外,从你的说明上,大致猜到你是用了同步请求,但正常来说同步请求浏览器或者服务端会有个默认超时时间,达到时间只会返回 504 或者 timeout 错误,不应该页面卡住。这里面应该还有其他的问题。需要你提供上面提到的实现细节才好定位解决。
建议详细说下你这个 “点击测试” 按钮点击背后,到底平台做了啥事?
信息太少,只有个截图,也没有齐全的日志(浏览器的、平台服务端的)、大致功能实现逻辑,大伙也不好给你出主意,只能靠猜。实现逻辑猜错了,给的意见也很难有参考意义。
这个坑确实挺深的。想请教下,应该怎么做能避免踩中这个坑?
设置成不可见只是一个选项,便于作者做一些个人私藏的记录。专栏的核心点是提供更好的个人社区影响力。
至于发的帖子很少人回复,可以换个角度想下,会不会是帖子内容对大家吸引度有限,无法引起大家回帖的兴趣?一般大家回帖,要不是有同感,要不是发表自己不同观点,但这类帖子大多都是有作者的观点或者感想。一些不包含作者观点或感想的(如消息公告),容易无感导致没找到能回帖交流的点。
建立专栏本身,也期望大家更多去分享自己的独特经验或观点,便于社区的其它同学更好地认识你。
挺不错的,敢于突破。如文中领导所说,已经超越 95% 的人了。
功能做得挺全的,基本上大部分核心功能都有了。但个人比较好奇,这个平台的相比其它已有平台,独特的点是什么?或者说哪个点其它平台没满足,而这个平台可以满足?
后续周边功能方面的建议(仅供参考,具体还得看公司实际需要):
1、和持续集成的对接(如支持通过调用指定接口触发测试任务执行、支持自动发送测试结果到邮件/钉钉)
2、对流程类用例更友好的支持。从介绍上看,一次接口调用为一个用例,那对于流程类用例(调用多个接口的),是怎么处理?如果用用例集管理,那 3 个核心流程的用例要变成一个用例集一次性执行,是否可以配置?
3、对于多项目的支持(每个项目有自己的独立的环境配置、用例集、定时任务等)
4、数据报表(如趋势图、饼图)。这个领导会比较关注
另外,通过平台降低技术要求是一个挺好的切入点,但如果要把自动化坚持下来,逐步让测试关注技术、推动规范统一还是需要的,要不维护用例会累死,自动化发现不了什么问题也会导致大家不认可。
我指的不是线上回滚,是测试环境切换版本到可以验证的旧版本
1、先把问题归类。bugly 之类的平台已经会自动按出现次数排序了。
2、寻根问底是什么原因导致的问题。可以参考 5 why 原则,了解到根本原因,再从根本上解决。
假设占比最大的问题,从崩溃平台上看到原因是空指针,可以按照类似下面的套路询问:
那问题的原因就比较清晰了:接口文档的维护成本太高,导致客户端没考虑到这个场景,最终导致这个空指针。那解决的方法,可以考虑用 swagger 之类的自动生成接口文档工具生成接口文档,免除接口文档的额外维护成本。当然,也可以更进一步,了解为何接口总是要调整,是否团队人员经验太缺乏导致设计没做好,还是需求改动太频繁导致系统必须配合调整。
同时,也补充一个,使用前判空是一个很关键的编程习惯,可以团队内分享下各种遗漏判空导致的损失,以及形成什么样的习惯来避免空指针异常(调用这个对象的子方法/子属性前,都先判空)。