我很好奇其他团队在主要版本发布代码(或部署)之前确定了哪种标准。
我不是在寻找每个人的具体答案,但这里有一个关于我想要了解的内容的想法。
同样,不要寻找上述任何事情的答案的逐行打孔列表。简而言之,代码发布必须完成的非编码项目才能在您的团队正式被视为“完成”之前完成?
答案 0 :(得分:5)
最小化:
更好:
最终部署在生产阶段
所有单元和集成测试都会自动运行,最好是在CruiseControl或ant完成的maven等持续集成服务器上运行。在开发Web服务时,使用soapui进行测试可以正常工作。
如果使用了数据库,则在部署之前完成自动升级(例如liquibase)。使用外部服务时,需要进行额外的配置测试,以确保URL正常(来自应用程序的头请求,数据库连接,wsdl get,...)。 在开发webpps时,某些页面上的HTML validation将非常有用。手动检查布局(例如使用browsershots)将非常有用。
(Java开发的所有示例链接)
最后(但并非最不重要):所有验收测试是否仍在通过?产品是主人想要的吗?在进一步探讨前,在测试系统上与他进行实时审查!
答案 1 :(得分:4)
我主要做网络开发,所以我的项目可能与您的不同。就在我的头顶......
还有更多,我知道有,但我现在想不到。
答案 2 :(得分:4)
每个项目都是不同的,但是根据经验,这里是我尝试在让代码出现之前所做的核心事情。
没有特别的顺序:
1)用户稍后可以找到的版本标识,此版本必须是唯一的。 (通常是可分发,库和可执行文件关联的“版本号”,或“约”对话框中可见的用户。可以是众所周知的寄存器中的数字或固件中的偏移量)
2)用于生成发布的确切代码的快照。 (SCM系统中发布的标签或分支对此有利)
3)必须记录和存档重建源所需的所有工具(如果没有这个,步骤2中的来源将变得有限使用)
4)实际版本的存档(已发布的确切安装程序的副本,谁知道7年后你的工具可能无法构建它,但现在至少你有源代码和可安装在你身边用于调查目的)。
5)此发行版本与前一版本发行说明之间的一组记录更改(我喜欢使用附加到列表的样式,以便所有发布更改在一个位置为用户提供)。
6)候选人释放测试周期完成。使用可分发的创建负载并使用完整/审查测试计划进行测试以确保核心功能正常运行,所有新功能都存在并按预期运行。
7)缺陷跟踪显示所有未完成的项目被标记为a)固定b)不是缺陷c)延迟。
您可以根据域或开发风格进行许多其他步骤,但我会说大多数软件“应该”在每个版本上执行上述步骤。 YMMV。
有趣地冲进城堡。
答案 3 :(得分:1)
答案 4 :(得分:1)
对于网络/内部应用程序,除了其他建议之外还有一件事。
确保参与操作/部署团队,这样您就不会提供需要更多服务器的软件(不要假设人们已经推动了已有的要求)。
答案 5 :(得分:1)
答案 6 :(得分:1)
我们最近做了一个重要的发布,所以在我看来这仍然很新鲜。我们制作了一个带有GUI的Windows应用程序,我们发布了一个二进制可执行文件,因此我的列表必然会与仅限Web的版本大不相同。
发布候选人会去测试团队。他们需要至少几天的时间来玩它。如果他们发现任何我们认为是show-stoppers的错误,就会中止发布。这假设你有一个测试团队。如果发布候选人自构建日期起至少已过去一周,我们只会清除候选版本。
所有自动化测试都必须工作并通过。自动测试被认为是现场测试人员的补充。
任何标记为“拦截器”的错误都必须在最终版本中解决。
宣传材料必须准备好(在我们的例子中,是网页更新和电子邮件简报)。经销商会收到提醒,提前几周发布,以便他们也能准备好材料。这主要不是程序员关注的问题,但我们会检查营销声明的准确性。
必须更新许可以反映我们正在使用的任何版权保护。我们的测试版和发行版使用不同的许可模式,这种变化需要编程工作。
必须更新安装程序和许可协议。由于beta版本有一个安装程序,这通常只是一个文本更改,但程序员仍然需要实际更新安装脚本。
需要从应用程序本身删除对beta版本的任何引用。我们错过了其中一些,令人尴尬。
帮助文件和手册必须完全更新并校对,因为它们是发布包的一部分。
如果存在无法及时修复的错误,我们至少会尝试减轻损坏 - 例如,检测到发生了这样的错误,并使用道歉的错误信息。这极大地促进了产品的稳定性。
远远地,主要版本的困难不是编程问题,而是行政/营销问题。这些事情中的许多都需要程序员注意 - 帮助安装人员,校对功能列表,以确保这些都不是废话,手册的校对技术部分,更新许可等。主要的技术差异是从修复bug以减轻错误。
答案 7 :(得分:0)