`
andyhu1007
  • 浏览: 199328 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

发布之后

阅读更多

release

发布之后,系统才开始在真实的数据、环境上运行,才开始经受真实用户的考验。发布,不意味着项目的结束,却是挑战的到来。如何在发布之后,快速修复 影响到 系统使用的bug;如何在发布之后,快速改进在真实环境中无法承受的性能问题;如何在发布之后,快速调整用户体验较差的界面设计或者功能实现。开发团队或 者维护团队,如果不能快速响应这些突然袭来的变化,就会给客户带来损失。

 

同时,从发布之后出现的问题,可以反思开发过程中某些方面的不足。以下会列出我们在发布之后遇到的一系列问题,以及对这些问题的思考。

 

难以 重现的问题

当发现bug的时候,立即想到的就是在测试环境或者UAT上重现问题,以便快速定位问题的根源。

场景

系 统发布一个小时之后,客户一封邮件过来,告诉我们有一个重要功能在产品环境上不工作:一个公司无法为她的包月套餐付费。于是,我们立即在测试环境上试图重 现问题,但失败了;UAT上也如是。这是一个重要的功能,经过详尽的测试,却在产品环境上突然出现问题,令人匪夷所思。于是,只好到产品环境上测试,果然 重现了bug。首先排除了环境的区别,那么肯定就是数据的区别。在仔细观察数据的时候,敏感地注意到一个特征:被测公司的所有员工都没有接受网站的条款。 马上在测试环境中建立同样特征的测试数据,果然重现了bug,并找到了问题的根源。

反思

有些bug会很难重现,而之所以难,根本原因在于忽略了出现bug的测试场景(包括数据、环境等因素)。导致这个bug出现的根源在于测试不够全 面。如果在测试中尽量覆盖边际情况,就可以避免多数类似问题的出现。

 

产品 环境中仅有的问题

产品环境和测试环境的差异在哪里?

场景1

这不是一个功能性bug:有一个页面在产品环境中出现了不应该有的滚动条,却十分影响页面的美观。对照测试环境和产品环境之后,发现是因为在产品环 境中一个链接的url过长导致信息框出现了滚动条。

场景2

页面上有个回退链接,会回退到之前访问的页面。有些时候却回退到了网站的首页,在测试环境中无论如何也不能重现这个bug。在产品环境下,发现出现 问题的页面都是从https跳转过来。查看代码,果然没有考虑这种情况。

场景3

在用某些关键词搜索的时候,会出现500错误。而在测试环境中却无法重现。非常幸运的是客户发来了产品环境的log,经过分析,发现问题在于产品环 境中集成的第三方工具提供的有些数据会导致程序错误。

反思

这 些都是典型的由于测试环境和产品环境数据或者环境不一致引发的问题。如果能在测试环境中尽量保持数据的拟真性、环境的真实性,则可以尽量避免这些问题在发 布之后才被发现。但从另一方面看,出现这些问题的根本原因在于代码不够完善。场景一中前端代码的包容性不够好;场景二中引起问题的代码有一些比如hard code的bad smell,却没有被及时修复;而场景三的代码是有漏洞的,它没有很优雅地处理数据获取失败时的情况。

 

无法 获知起因的问题

有些用户遇到了问题,但我们无法或者没有时间去一一获取这些用户的信息。

场景

新系统上线之后,所有老用户都得重新接受新的网站条款。但有些用户无法点击接受条款的按钮,严重阻碍了这些用户的回访。

反思

这 个问题可能只出现在千分之一的用户里面,试图去获取所有这些用户的客户端环境(浏览器版本)很困难,而客户又要求我们立即解决问题。所以,试图去重现问题 已经不可能了。不如凭着经验审查一下原有的代码是否有瑕疵,前端代码是否浏览器敏感。然后给出一个更通用、更完美的方案。这类问题是无法避免的,除非花费 大量时间对所有客户端环境都进行测试。但这类问题是可以解决的,比如上面那个bug我们就通过采用兼容性更好的代码解决了。

 

真实 用户体验的问题

真实用户才是真正的测试人员。

场景1

一个页面有分页功能。用户来到了第n页,进行了一个操作之后,重定向到了第一页。而用户显然希望能继续回到第n页。

场景2

几个按钮应该排成一行,但当用户输入一个很长的名字之后,出现了换行。

反思

这类问题不算是bug,但却影响了用户的体验。测试人员虽然会站在用户的角度去测试功能,但最好的测试人员其实就是真实用户。如果有条件能在发布之 前,让一些真实用户参与测试,是发现这类问题的最好方法。

 

遗留 的疑难问题

既然是遗留的问题,肯定是难以解决的问题。

场景

系统中有几个暂时不影响发布系统使用的bug,它们被一直拖到了发布之后,因为之前“难以解决”。

反思

虽 然这些bug最终都被修复,但这是一种不正确的方式。疑难问题不应该留到发布之后:在发布之后能解决的问题,那么在发布之前也一样可以解决;如果在发布之 前确实无法解决,那么就应该选择其它方案。如果在发布之后花了很长时间也解决不了这些bug,就进退两难了。同时,维护团队一定要保证部分核心开发成员的 继续留任。如果在交付产品之后,开发团队立即全部撤离,而把系统的维护交给一群对业务和实现完全不熟悉的人,是一种很不负责任的态度。

 

不会 有问题的问题

这个功能不是已经经过验收了么?

场景

第一眼看到客户报的有些bug时,脑中飘过的第一个想法是:这个功能肯定经过详尽的测试,而且肯定经过了客户的验收,怎么可能有问题呢?但在测试环 境中确实重现了bug。

反思

之 所以在看到这些bug的时候比较难以置信,是因为我们以为这些功能已经被测试过,或者我们知道这些功能曾经被测试过。但事实是,有些功能可能根本就没有被 测过;而有些功能曾经被测过,但没有被自动化测试覆盖。同时,我发现后一类问题往往都是在last mile中被引入:在发布之前,为了解决性能问题,我们需要对设计或者实现进行一些大规模的改动;而到后期,测试人员因为功能性需求的结束而退出了团队。 当时非常担心大规模的改动会引起一些问题,在发布之后验证了这种担心。这类问题其实是可以尽量避免的:首先,更早开始性能测试和性能优化,以避免在 last mile进行大量改动;其次,last mile可能会出现赶工的情况,有大量功能的改动或者设计的变更,这时候是测试人员最不应该离开团队的时候。

不是问题的问题

客户坚持说,这里有问题。

场景1

客户说:在使用firefox浏览器的回退按钮时,能看到不实时的信息。

场景2

客户说:有一个bug... 过了一会儿,客户又说:bug好像没了。不过,总之问题出现过,你得去修复。

反思

这 些不是问题的问题,浪费了维护团队的大量时间。发布之后,维护团队需要及时地修复很多bug,应该尽量地排除不必要的干扰。在一个维护团队中,也需要维护 一个流程。我们的维护团队,由两个开发人员和一个测试人员构成。测试人员负责接纳并验证所有的bug,开发人员负责修复bug,再经测试人员测试,最后经 由客户验收。通过坚持这个流程,让团队的每个成员,都关心自己最应该关心的问题,而不应该被其它事情干扰。在发布之后,需要更加快速的反馈,而严格地执行 流程,能明显地提高团队的效率。

 

总结

系统在发布之后经历了一段时间的考验,bug不多,并且基本没有出现影响系统使用的bug;同时,维护团队保持了高效的反馈,及时地修复了大部分 bug。高质量的代码和快速地反馈得到了客户的认可。

现在回头看这些在发布之后出现的问题,我相信,没有一个系统能确保全部避免。不过从我的反思中可以看到,这类问题大多是开发过程中的“不完美”而遗 留下来的隐患,如果能做得更好,我们就可以尽早发现这些问题,以避免这些问题在发布之后才出现。

 

详情请见http://huzhenbo.name/blog/2009/09/06/after-release/

 

0
0
分享到:
评论
1 楼 neusoft 2009-09-07  
深有同感 特别是做国内解决方案的更是如此

相关推荐

    发布以后查看输出内容插件unity

    "发布以后查看输出内容插件unity"是一个专门为了解决Unity项目发布后无法直接使用内置DEBUG面板进行日志查看的问题而设计的工具。这个插件允许用户在游戏发布后,通过特定的组合键来激活DEBUG面板,从而查看程序的...

    创建、部署、发布和使用一个简单的 Web 服务英文原文 内容: 实现服务 创建 Web 服务 构建代理和测试客户机 将应用程序打包以进行部署 在 WebSphere Application Server 上部署 将 Web 服务发布到 UDDI 注册中心 验证 Speed-start 发布 发现和测试服务 结束语 参考资料 关于作者 相关内容: Speed-start Web services 理解 UDDI 注册中心的 WSDL developerWorks Toolbox 订阅 在 Web

    发布之后,还需要对服务进行发现和测试以确保其可用性和功能正确性: 1. **使用WebSphere Studio发现服务**:通过WebSphere Studio提供的工具从UDDI注册中心中发现已发布的Web服务。 2. **构建测试客户端**:基于...

    rtmp发布/订阅/Flv录制

    RtmpTools包含2个rtmp相关工具: 【RtmpPublisher.exe】 1:通过DirectShow和DirectSound捕获指定摄像头和麦克风的数据,并使用x264和aac编码后...您可以用RtmpPublisher.exe发布之后,再用RtmpPlayer.exe订阅该流。

    新闻发布系统素材

    基于jsp的新闻发布系统,其中使用的技术有JavaBean、fillter、数据库等,能够实现新闻的发布功能,在发布之后能够进行对每一条新闻的删除、修改、或者继续增加新的文章,最后还能够进行查询功能,其中引用了百度编辑...

    ReportViewer发布到服务器后需要的文件

    标题 "ReportViewer发布到服务器后需要的文件" 涉及的是将Microsoft的ReportViewer控件部署到服务器上的关键步骤。ReportViewer是一个强大的报表查看器,允许开发人员在应用程序中集成来自SQL Server Reporting ...

    Web前端开发基础:发布整个网站.ppt

    在浏览器中预览页面 教学内容 发布网站 定义远程站点 连接服务器 上传文件 教学内容 宣传自己的网站 网站发布之后,为了吸引浏览者,增加访问量,还需要对网站进行宣传和推广。 教学内容 3 动手实践 1 单元目标 2 ...

    C#发布流程

    8. **后续发布**:一旦首次发布配置好,以后只需右键单击程序集并选择“发布”,即可快速重复发布流程,无需每次都手动配置。 发布后的文件包括可执行文件(.exe或.dll)、配置文件、资源文件以及任何必要的.NET ...

    通过Tomcat发布CesiumLab 地形数据

    在本场景中,我们将讨论如何通过Tomcat来发布CesiumLab的地形数据。 首先,我们需要理解CesiumLab。CesiumLab是Cesium的扩展工具,提供了一个交互式的环境,用于探索、编辑和可视化Cesium的3D地球数据。地形数据在...

    新闻发布系统源码 新闻发布系统 小型新闻发布系统源码

    学习这个小型新闻发布系统源码,初学者可以理解Web开发的基础流程,包括数据库设计、前后端交互、用户认证等,为以后的Web项目开发打下基础。 以上是对这个新闻发布系统源码的详细介绍,通过深入研究和实践,...

    Sybase iAnywhere发布SQL Anywhere10.pdf

    10. 继续发展:在SQL Anywhere 10发布之后,Sybase公司还继续进行技术创新,推出后续版本,引入云计算、大数据等新技术概念,保持其产品在市场上的竞争力。 以上就是关于Sybase iAnywhere发布SQL Anywhere 10的知识...

    NC57下发布WEBservice方法

    NC57 下发布 WEB 服务方法详解 在 NC57 环境下,发布 WEB 服务方法是一项关键的操作步骤。在这篇文章中,我们将详细讲解如何在 NC57 环境下发布 WEB 服务方法。这个方法可以作为后续版本的参考。 首先,我们需要在...

    游戏发布站程序源码 v6.7.0 Sp1.rar

    支持后台一键批量修改开服时间,以后不凑采集无效果了,批量修改下开服时间发布站每天都能广告满屏! 还有其他功能就等您购买了自己了解吧O(∩_∩)O哈哈~!! 本程序只有以上功能,其他没提示有的等**后更新在补上...

    利德商务信息发布通

    每次发送完毕之后,会生成发送结果的报告,让您真正了解产品信息在哪些网站成功发送,做到一目了然、成竹在胸。 12、发布网站查看功能: 可进一步了解产品信息在某个网站的发布情况。也即查看您发布的该条信息在...

    智能云信息发布终端和智能云发布系统快速操作说明书_V2.1.pdf

    根据提供的文件内容,以下是对“智能云信息发布终端和智能云发布系统快速操作说明书_V2.1.pdf”的详细知识点解析: ## 一、前期准备工作 ### 硬件与软件需求 - **硬件需求**:需要一台Windows服务器电脑、智能云...

    新闻发布系统毕业设计与实现

    新闻发布系统的提出使电视不再是唯一的新闻媒体,从此以后网络也充当了一个重要的新闻媒介的功能。简单地说,新闻发布系统就是充当一个网络新闻媒介的功能,主要实现对新闻的分类,上传,审核,发布,模拟了一般新闻...

    SQLSERVER2008订阅发布

    - 完成订阅的创建,之后发布服务器的变更将自动同步到订阅服务器。 6. 使用备份和恢复实现数据库同步:通过备份数据库的全部数据,并将备份文件恢复到另一台服务器,可以实现两台数据库之间的数据同步。 7. 配置...

    Office2021公开预览版发布:正式秋季到来.docx

    微软强调,预览版将不断进行升级,即使在正式发布之后也会持续更新,以保持软件的最新状态。 在功能方面,Office 2021的一大亮点是增强了与云计算的连接性。微软显然将云服务视为提升生产力的关键,这可能包括更好...

    新闻发布系统

    简单的新闻发布系统 支持管理员登录下面就让我们来说一说基于jsp的新闻发布系统,其中使用的技术有JavaBean、fillter、数据库等,能够实现新闻的发布功能,在发布之后能够进行对每一条新闻的删除、修改、或者继续...

    ASP.NET新闻发布系统.rar

    ASP.NET 新闻发布系统 新闻发布系统是基于B/S模式的WEBMIS系统,为了可以将杂乱无章的信息(包括文字,图片和...新闻发布系统的提出使电视不再是唯一的新闻媒体,从此以后网络也充当了一个重要的新闻媒介的功能。

    jsp+mysql新闻发布系统毕业设计

    题目: 动态新闻发布系统的设计和实现 ...对新闻评论后,需要后台管理员审核之后才会显示在前台的页面。 (5) 评论审核:评论审核犹如一个过滤器,只有通过了评论审核,关于新闻的评论才可以被访问者阅读。

Global site tag (gtag.js) - Google Analytics