软件质量保证与测试主讲:陈伟第一部分基本原理•软件、软件开发、开发过程与测试•软件质量与测试•软件测试的基本概念与方法•软件的质量保证、质量标准与测试第一章软件开发过程与测试•软件软件=程序+数据+文档+服务•软件开发过程与测试–软件的变的更大–软件的功能更复杂–软件的相关软件或硬件增多–软件开发中的人员更多,分工更细–软件的相关开发技术更多、可选性更强–其他因素开发过程•开发的基本过程–需求获取与分析–系统分析–系统设计–编码–测试–维护开发模型•瀑布模型•主要问题–完整需求的获取困难–修改困难–测试量大–开发过程、开发进度不易控制开发模型•原型模型•典型适用–用户需求不准确或难确定–短时间内给出产品框架及主要功能说明•问题–分析和设计考虑不充分–需求改变,后期难度激增–需求改变后,测试难度也大增开发模型•快速应用开发(RAD)模型•问题–要有完善的需求–分析设计充分开发模型•增量模型•问题–要有良好的设计(复用、可扩充)–这对设计人员的要求较高开发模型•迭代模型•当前应用广泛•好处–用户的角度–开发者的角度–测试人员的角度–维护人员的角度–从质量管理者的角度开发模型•迭代模型—敏捷开发软件测试•从开发过程看:–由过程式转成面向对象的–由单人(几个人)转成多个团队•软件测试内涵的变化–早期:代码小、测试人员通常就是开发人员–现在:•实践表明:问题发现的越早,成本越低•软件大小、复杂性、技术多样性•开发过程的各阶段都应测试•测试人员更专业第二章软件质量与测试•软件质量–产品质量•参考图2-1–开发过程质量•如CMM模型、ISO9000等•强调可追溯性、可控制性–应用质量•性价比•版本兼容性•其他软件质量的主要特征•功能性•安全性•可靠性•可用性•效率•可维护性•可移植性•其他软件缺陷•缺陷的产生–技术原因•分析设计不合理•编码错误–团队协作•需求获取或分析不完整•团队成员沟通不一致–软件原因•第三方硬件、软件存在缺陷•实际应用环境与规范有差别软件测试•软件测试:就是为发现缺陷并纠正缺陷,而做的工作。•测试的对象–可以是软件开发过程中的每个产品–最通常的是软件本身–“为发现错误而执行程序的过程”-Myers测试的成本•工作量占整个开发的比例-一般25-50%•测试人员与开发人员的比例•根据风险决定测试的深度与广度•选择正确的测试技术–每种技术在寻找不同类型的缺陷时,有不同的优缺点•测试用例爆炸•测试资源的限定测试的基本过程1.制定测试计划–定义测试的任务和目的–决定测试的人员、时间–决定测试的环境—软件、硬件–最重要:决定测试策略–划定各待测部分的优先级–为各部分定义测试强度–选定测试工具–其他测试的基本过程2.设计测试用例依据不同的测试策略,设计测试用例3.执行测试用例并做完整记录测试的可重现性是绝对必要的4.评估测试结果,并给出测试总结报告测试的基本原则1.测试可以证明缺陷存在,但不能证明缺陷不存在2.穷尽测试时不可能的3.测试活动应尽早开始4.缺陷有集群性5.重复使用同一个测试用例,效能减低6.测试依赖于内容7.纠正了缺陷不能保证整个系统满足用户的预期和要求