在当前流行的DevOps流程中,我们经常听到"测试左移"和"测试右移"这两个概念。那么,在这个过程中,我们作为测试人员可以做些什么呢?
在我的日常工作中,团队内部目前已经推行了编码规范的制定、代码质量的扫描、代码审计、线上自动化回归测试、线上巡检以及线上监控等工作。这并不意味着我亲自完成所有这些工作,有些任务我会负责推动,并找到合适的人员去执行。
本文主要探讨的是关于线上环境自动化测试的难点,这里主要是线上自动化回归测试、线上巡检两个工作。
我们的测试工作主要集中在测试环境里面,但是公司里面涉及到的环境有dev环境、Test环境、Pre环境、Prod 环境,但是这四个环境可以分为线下环境和线上环境两个。
大部分软件测试工作都是在测试环境进行的。测试环境的目的是验证被测系统的功能正确性、系统健壮性以及异常场景下的容错和处理能力。为了方便测试和调试,有时候我们会直接修改数据库数据或者修改服务配置。这样可以构造各种极端数据、手段来对系统展开测试。
在测试环境直接修改数据库数据或者修改服务配置的做法有以下原因:一是可以更快速地验证系统的功能和处理能力;二是在测试环境进行的操作不会对业务运行造成直接的影响和故障,因此理论上来说是没有太大风险和损失的。这样的做法可以提高测试效率并减少对业务的干扰。
测试环境由于测试工作导致测试服务出现的数据异常、服务down机,这种把数据清掉、重启服务,是一个再也正常不过的一件事情。但是在生产环境,则不能做这些操作了,一旦出现服务不可用,就是一个生产事故,影响了业务的正常运行。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】
我们在之前的讨论中提到了"测试右移"的概念。在我们的测试团队,我们主要执行线上自动化回归测试、线上巡检以及线上监控等任务,这些都是为了持续监控软件的质量。我们并不是在测试环境中完成测试,发布上线后就不再关心产品质量。然而,要实现线上自动化相关的工作,我们需要解决一些挑战。
环境的复杂性
线上环境与测试环境相比,通常更加复杂。它可能涉及更多的服务器和更复杂的网络配置。由于这些差异,自动化测试脚本在线上环境中可能无法正常运行。因此,在进行自动化测试时,需要考虑到线上环境的特殊性,并进行相应的调整和优化,以确保测试的准确性和可靠性。
服务器架构复杂性:线上环境通常需要部署多个服务器来支持高并发和负载均衡。这些服务器可能分布在不同的地理位置,涉及到不同的网络配置和安全策略。
网络配置复杂性:线上环境中的网络配置更加复杂,涉及到防火墙、负载均衡器、代理服务器等,这些配置可能会影响自动化测试脚本的访问和通信
数据库复杂性:线上环境中可能存在多个数据库和存储系统,包括主数据库、备份数据库、缓存服务器等。这些系统的配置和数据同步可能会对自动化测试脚本的运行产生影响。
安全策略复杂性:线上环境通常有更严格的安全策略,包括访问控制、身份验证、加密等。这些策略可能需要在自动化测试脚本中进行相应的配置和处理。
数据的复杂性
在测试环境中,我们可以自由地使用各种测试账号和数据,甚至还可以直接修改数据库的数据以实现快速验证。然而,这种做法在生产环境中是不可取的,因为其风险过高,变更带来的影响无法评估。
为了保证生产环境的系统质量,要实现线上自动化相关的工作。然而,最大的难点在于如何避免测试数据带来数据问题,即我们的测试右移操作不能对线上业务产生任何影响。因此,我们需要有合理的手段来处理由这些线上测试自动化操作产生的数据。
测试账号:测试账号要考虑到权限问题,不同权限会带来不同的安全隐患,很多安全问题是由于测试账号泄漏带来的。
测试数据:测试所使用的数据和执行测试所产生的数据,我们需要进行数据隔离和数据清理,不能因为测试数据对业务产生影响。
测试产生的日志:我们需要考虑如何管理由执行测试产生的日志,因为如果处理不当,这些日志可能会影响基于日志生成的业务报表。
风控安全的复杂性
由于公司业务的特殊性,主要是教育行业,以教学课件、教学视频、考试试卷等全流程的教学资源文件,这也就导致了很多的薅羊毛和账号信息泄漏导致的财产损失问题,因此,公司业务目前做了很多风控和安全的策略。所以,在线上环境进行测试自动化的实践,我们需要考虑到这个问题:
风控规则:我们在线上进行自动化时,怎么做才能符合线上的风控规则,比如用户行为、执行机器IP、 请求ua等。
黑白名单:线上巡检和线上监控是个高频执行场景,容易触发黑白名单的规则,容易被拉黑,需要要考虑对指定测试账号的黑白名单问题。
审计安全合规:我们需要确保测试使用的数据符合数据安全规定,同时也要遵守应用安全和网络安全等相关规则。
权限的复杂性
线上环境与测试环境有着显著的差异。在测试环境中,所有权限我们可以自由地修改数据和赋予,以便绕过权限校验。然而,线上环境并不允许这种随意性,我们不能随意修改数据。这种严谨性确保了线上环境的稳定性和安全性。
用户权限:用户权限指的是用户在系统中的操作权限,不同的用户可能具有不同的权限级别,例如管理员、普通用户、访客等。
账号权限:账号权限指的是用户账号在系统中的权限设置,不同的账号可以访问不同的操作。
执行权限:执行权限指的是测试脚本或测试工具在系统中的执行权限。测试中需要确保测试脚本或测试工具具有足够的执行权限,能够正常地执行测试任务,并且不能执行超出其权限范围的操作。
数据访问权限:测试中用户是否能够正确地访问和操作相关数据,例如读取、修改、删除等操作。
文件权限:测试中用户是否能够正确地读取、写入、删除文件等操作。
网络权限:测试中是否能够正确地访问网络资源,例如访问外部网站、发送网络请求等操作。
为了更好的进行我们的线上自动化测试工作,我们需要考虑上述问题是我们的首要任务。只有通过克服这些挑战,我们才能更有效地推进相关工作。我们需要深入理解这些问题,找出最佳的解决方案,以便我们能够更好地进行自动化测试。这不仅会提高我们的工作效率,也会提高我们的工作质量。因此,我们必须将解决这些问题作为我们的优先事项,以便我们能够更好地开展线上自动化测试工作。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!