软件测试与大规模软件开发
原题目:TechEd 2004 观感-18日
作者:董洵 来源:http://ms.mblogger.cn/dongxun/
软件测试
l 目的:除了验证软件是否符合质量外,对于大规模软件来说,另一个很重要的作用是为开发人员提供信息。例如在非常复杂的系统中对某一部分的修改是否会影响到其他部分。
l 会议:在开发进行一段时间后,每日组织PM, Dev和Tester举行三方会议。
l Bug管理工具应该提供的三个统计功能:1)每日新增和修复Bug历史曲线图;2)0 Bug时间图。
l 测试用例管理工具:1)必须能同Bug管理工具能相互联系;2)能让Tester输入,管理,登记已经执行和未执行测试用例;3)针对测试用例的一些统计报表功能。
l Zero Bug Bounce:在软件经过一段时间的测试后,连续5天内不出现任何Bug或者所有出现的Bug可以在24小时内被修复标志软件可以进入下一个阶段;任何一天出现无法在24小时内修复的Bug则重新记数。
l Beta与RC之间:在软件经过Beta发布后,需要冻结用户界面,然后进入一个Zero Bug阶段,接着进行“Bug大搜捕”,动员所有人员在有限的时间内(例如3天)想尽方法寻找Bug,并对第一个找出Bug的人,找出最多数量Bug的人和找出最严重Bug的人设立奖项。
l 为了确定软件在不同平台,不同配置的环境中运行正常,一般为每种准备一台计算机,在Daily Build通过后使用自动脚本将最新版本部署到所有平台上,然后在所有机器上运行自动测试脚本并将测试结果集中到测试运行报表服务器中。
l 在软件需求阶段结束时,Tester就需要准备测试计划并根据测试计划设计、开发测试用例。
l 软件测试的层次:BVT(Build Verification Test)确保当前最新的Build不存在明显的重大问题,Tester可以针对这个版本进行进一步的测试。因此要求这些测试用例必须高效、准确而且百分之一百的自动化;第一层:正面测试,保证测试的完整性;第二层:负面测试,保证软件对错误有适当的处理以及提供正确的错误信息;第三层:特种测试:安全、性能等。
l 测试人员的挑选的首要原则:“重素质,轻技能”。具体的素质考察点是:细心、耐心和责任心。
l 测试人员的资格:1)有开发经验:了解术语,能够协助加快更正错误;能够自动化测试;能够更有针对性的设计测试用例;常用语言为vbs, bat and C#。2)有很强的口头和书写沟通能力,能通过对Bug产生的整体影响有很好的描述,从而增强说服力。3)有很强Isolate问题的能力,尤其对客户汇报的问题;4)有执著的解决问题的能力。
l 激励因素: Herzberg: Hygiene Facotrs and Motivations。
l 职业发展规划:三条路线。1)从Tester转为Dev或者PM。2)转变内容,从Security Tester转变为Performance or UI Tester. 3)垂直:Tester -> Senior Tester -> Tester Architect or Test Lead -> Test Manager -> Group Manager。
大规模软件开发
l Principles: KISS; Open to Future; Plan Ahead for Reuse; Freedom and Innovation.
l KISS。架构设计原则:1)从简单结构多次优化;2)系统易于理解和维护,有必要的文档说明。
l 有清晰的时间进度安排,每周更新;有自成一体的短小的里程碑和缓冲(for refactoring, rechecking and emergency-handling.)
l Open To Future: 向前兼容; 旧版本可以为下一代更新做好准备,尤其是即不会损坏、有不会造成自身的问题;一般旧版本对不能识别的内容用一个memory chunk存放。
l 评估的艺术:24/7:任何task不超过24小时;一个milestone不超过1周。每个milestone保证有可测试的结果。
l 虚拟组合:为了避免在超大型项目中对源代码树的频繁的访问,有一个小型的、自成一体的小team在一个branch上工作,然后通过测试通过和再一次性merge会主代码库。