周末下班前一个新员工的工作总结吸引了我的注意力,让我又想起前几天微博上看到的《2011我的项目经历二三事之测试
》,进而思考一问题:如何保障代码发布后不会导致故障?
故事:小王终于可以喘口气了,在过去的一周内小王加班加点把一个核心的功能点开发完毕,刚刚顺利在仿真环境测试通过,现在是下午5点30分,小王走到饮水机旁准备喝点水。“小王,明天上午8点正式上线”,朱总对小王说,“已经通知发布人员了”。小王合计了一下,6点半起床,7点上地铁,8点到公司,今天晚上还是早点睡觉吧。过年后,已经有两次上线故障了,虽然不是什么大的问题,但代码回滚会让开发人员备受打击,测试、发布人员也跟着受累,领导也都看在眼里。
问题:如何保障代码发布后不会导致故障?
答案:在仿真环境中发现可能导致线上故障的问题,这就是验收测试。通过代码发布前的验收测试,增强开发人员、测试人员和代码发布人员对即将上线的代码的信心。
回顾:我们现在是怎么做的?
对于仿真环境的测试,测试人员采用黑盒测试,会通过【curl】等工具对openapi的接口进行测试,并查看返回结果。重点测试修改的接口或新增的接口,对于没有变更的接口(由开发人员进行评估),通过代码打包时的回环测试【node.js】进行验证。同时,测试人员测试的过程中,开人员会盯着系统的日志,看有没有异常信息。
对于需要进行性能测试和评估的发布,也会专门安排对应的测试。
展望:更进一步
1、检查回环测试是否全面
检查回环测试的接口是否完全覆盖web.xml中开发的接口?从测试环境的tomcat获取web.xml文件,分析比较。
2、简化回环测试开发
对于openapi接口测试来说,比较简单:准备测试数据(测试账号),向服务器接口(url)发送请求(输入参数),等待服务器返回结果,判断输出结果与预期结果。通过openapi的业务分析,将业务闭环(增-删-改-查作为一个闭环)作为一个TestSuite,其由多个TestCase构成,每个TestCase的开发简化为:准备测试数据、配置接口地址url、输入参数、预期结果,其余的事情交给框架来做。
3、数据源验证
除了进行黑盒测试外,可以通过访问到对应的数据源查看期望的数据是否想入到期望的数据存储中(mc\redis\mysql)。
4、日志聚合分析
对应大型分布式系统来说,仅仅依靠测试或调试过程中开发人员“盯着”日志很容易遗漏系统的问题。将希望的日志按时间线排序,将多个系统中的日志按主题聚集,对于分析定位系统的问题很有帮助。Scribe已经被FB证实很有效。
补充:Node.js是一个很好的项目,用它来做openapi的验收测试很简单,但与传统的测试框架JMeter相比,采用Node还需要自己做一些事情,简化测试用例的开发和维护;如果需要对测试结果进行图形化展现的话,同样需要自己来做。
另外,Node是事件驱动的调用机制,需要仔细评估测试用例的执行顺序会不会影响测试结果,同时避免将所有的调用串行化。
故事的结局是这样的:上午9点半小王来到的公司,发布人员通知他上线顺利,小王开始接受更有挑战性的工作。
附:2011我的项目经历二三事之测试
http://jabcf.blog.163.com/blog/static/348312402012118761931/
分享到:
相关推荐
结构化验收测试 结构化验收测试(“ STAT”)是验收测试过程的一种简单且可扩展的标准。 测试的目标可以是任何一组计算机文件,例如源代码,图像,音频文件和文档。 该过程可以是自动计算机程序,手动执行测试计划...
1. 英语测试与评估:此文档标题提到的是高三英语下学期开学验收测试,这在教育领域中是常见的评估学生学习进度和理解程度的方式。开学验收测试旨在检验学生假期期间对所学知识的保持情况以及新学期开始前的预习效果...
设计说明书的核心目标是明确虚拟开放平台的功能需求、技术架构以及实现策略,确保开发团队能够按照预设的规范和标准进行开发,同时为项目管理、测试和用户验收提供依据。 1.2. 背景 随着信息技术的快速发展,虚拟化...
本文将基于“测试资料上传,参考资料”的主题,深入探讨测试的相关知识点,以及可能与“开放平台视频介绍2”相关的技术内容。 首先,我们来了解测试的基本概念。测试是为了发现软件中的错误、缺陷和遗漏而进行的...
本单元的验收测试卷是一份重要的教学评估工具,涵盖了知识掌握、行为判断和规则理解等多方面,是对学生学习成果的全面检验。 填空题作为测试卷的一部分,通常以简洁明了的方式检验学生对知识点的记忆和理解。例如,...
3. 验收测试,也称为UAT(用户验收测试),确实是由最终用户实施,以确认软件是否符合他们的业务需求和预期。 4. 代码评审是软件开发过程中的一个关键步骤,其目的是检查源代码是否符合编程规范,实现功能是否正确...
本项目旨在深入理解综合布线系统的设计、施工、测试、验收以及维护过程。通过学习,我们可以掌握智能建筑的发展历程、功能以及与综合布线系统的紧密联系。 智能建筑,通常被称为"3A"建筑,包括建筑自动化(BA)、...
验收测试(UAT,User Acceptance Testing)是最终用户对软件的验证,确认产品满足业务需求。 通过阅读《测试学习宝典》.chm和.chw文件,你可以深入理解这些关键概念,并掌握实际操作技能,提升软件测试的专业素养。...
通过这个课程的学习,你将掌握软件测试的基础理论,了解不同类型的测试(如单元测试、集成测试、系统测试和验收测试),并学会使用多种工具和方法来确保软件质量。此外,你还将学习如何编写有效的测试计划,理解测试...
在这个案例中,"号百能力开放平台项目"是由号百信息服务有限公司自主开发的项目,因此,验收过程应遵循公司内部制定的文档规范和流程。这可能包括但不限于项目管理规范、文档编写指南、质量控制标准等,确保所有产出...
自动驾驶开放道路准入测试方案是确保自动驾驶车辆在公共道路上安全运行的关键环节。该方案V0 (1)可能包含了一系列详尽的测试标准、流程和评估准则,旨在为自动驾驶系统的开发和验证提供指导。以下是对这个主题的详细...
测试过程可按开发阶段分为单元测试、集成测试、确认测试、系统测试和验收测试。以下是这些测试阶段的详细说明: 1. 单元测试(Unit Testing): 单元测试是对软件设计最小单元——程序模块的正确性检验。目标是发现...
项目名称:号百能力开放平台研发项目 研发编号:(研发项目立项时分配的编号) 涉及合同:无 项目性质:内部研发项目 在项目概况部分,需要提供项目的基本信息,包括项目名称、研发编号、涉及合同和项目性质等。...
1. **测试类型**:软件测试通常分为单元测试、集成测试、系统测试和验收测试。单元测试关注于代码的最小可测试单元,如函数或方法;集成测试验证不同模块间的交互;系统测试检查整个系统的功能和性能;验收测试则...
7. 理解集成测试、系统测试和验收测试的阶段知识,并通过资产管理系统测试实例进行实践。 8. 培养学生的工程实践能力、系统能力、创新能力和规范化工作能力,提升沟通、文档写作和团队协作能力。 课程设计注重职业...
本项目的主要目标是对各种类型的自助终端设备进行集成测试、系统集成测试(SIT)和用户验收测试(UAT),确保软件在不同型号的设备上都能稳定运行。涉及到的设备类型包括穿墙式和大堂式存取款机,各具不同的功能配置...
在这个压缩包中,可能包含了多种类型的软件测试文档和教程,如单元测试、集成测试、系统测试和验收测试。单元测试主要针对代码模块进行,确保每个独立的部分都能正常工作;集成测试则是在所有模块组合后,测试它们...
此文档属于辅助类文档,是AUTOSAR标准的一部分,针对Classic Platform平台进行了详细的验收测试规定。 2. **文档变更历史**: - **2016-12-15**:增加了对GlobalTimeSync的支持,并且将一些具体的测试项要求(如...
单元测试专注于代码模块的功能验证,集成测试关注不同模块间的交互,系统测试检查整个系统的整体行为,而验收测试则确保产品满足用户和业务的需求。 3. **黑盒与白盒测试**:黑盒测试不考虑内部结构,只关注软件的...
在安全验收阶段,首先进行了全面的安全扫描和渗透测试,识别出多种类型的漏洞,包括但不限于: 1. 输入验证漏洞:由于对用户输入的数据缺乏有效的验证,可能导致SQL注入、跨站脚本(XSS)等攻击。 2. 认证与授权...