《软件测试-朱少民.ppt》由会员分享,可在线阅读,更多相关《软件测试-朱少民.ppt(77页珍藏版)》请在三一办公上搜索。
1、软件测试教学要点、思考和分享,朱少民,软件测试课程的思考,如何定位软件测试课程?更完整地认识软件测试?有哪些新方法和技术?如何规划、组织实验课?如何提高该课程的学习兴趣?其它教学对策?,主题,软件测试及其定位 全景图 开源测试工具 新方法和新技术 实验课 教学对策,主题,软件测试及其定位 全景图 开源测试工具 新方法和新技术 实验课 教学对策,软件测试的位置?,软件测试的位置?,覆盖软件开发全过程,测试&开发的同步关系,软件测试的地位?,软件研发队伍中主要有开发人员和测试人员,而项目经理、软件配置等方面人员很少,2:11:11:21:10,QA:DEV,软件测试概念的演化,1979年,Glen
2、ford Myers的软件测试艺术的定义:测试是为发现错误而执行的一个程序或者系统的过程。1983年,Bill Hetzel在软件测试完全指南中指出:测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量。Rick和 Stefan在系统的软件测试一书中对软件测试的定义:测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程。,狭义观点 vs.广义观点,狭义观点 所给出了测试定义“程序测试是为了发现错误而执行程序的过程”。瀑布模型广义观点 将测试延伸到需求评审、设计审查活动中去。由静态测试和动态测试构成一个全过程的、完整的软件测试,辩证观点
3、,验证软件是“工作的”,以正向思维,针对软件系统的所有功能点,逐个验证其正确性。证明软件是“不工作的”,以反向思维方式,不断思考开发人员理解的误区、不良的习惯、程序代码的边界、无效数据的输入以及系统的弱点,试图破坏系统、摧毁系统,目标就是发现系统中各种各样的问题。,软件测试的其它观点,风险观点:软件测试是对软件系统中潜在的各种风险进行评估的活 经济学观点:一个好的测试用例是在于它能发现至今未发现的错误。缺陷发现得越早,所造成得代价就越低,这就是从经济学的观点来说明测试越早越好。标准观点:软件测试就是“验证(Verification)”和“有效性确认(Validation)”活动构成的整体,即软
4、件测试=V&V,主题,软件测试及其定位 全景图 开源测试工具 新方法和新技术 实验课 教学对策,软件测试的关键字,缺陷,指导,软件,测试,阶段,管理,思想,质量,用例,方法,目标,源泉,确定,寻求,设计,发现,实施,清除,软件测试的全景图,质量,高质量的软件,应该是相对的无产品缺陷(Bug Free)或只有极少量的缺陷、满足客户需求的、是可维护的,而且它能够准时交给用户、其费用是在预算内的。但是,有关质量的好坏最终评价依赖于用户的反馈。,产品质量,过程质量,软件产品质量的需求,功能性需求 PRD/MRD,UI Mock-up,Functional Spec 也可称为可说明性 非功能性需求 性能
5、、安全性、可用性、兼容性、可靠性、易用性、可达性(Accessibility)等,测试目标(质量需求),可靠性测试 可用性测试 兼容性测试 安装测试 恢复测试 安全性测试 性能测试 功能测试 国际化测试 本地化测试,SaaS的非功能性测试,性能要求,系统响应能力。可用性,7x24 不间断服务可伸缩性,系统容量扩充能力,使系统可以支持来自扩大用户群体的额外负载。安全性要求,确定可能潜在的安全威胁并找到处理策略。可维护性要求,对部署系统进行维护的难易程度,可维护性与可用性之间关系密切,故障转移,数据库A,故障转移,负载平衡器,Web服务器A,应用服务器A,数据库B,Web服务器B,应用服务器B,故
6、障转移,数据库A,故障转移,负载平衡器,Web服务器A,应用服务器A,数据库B,Web服务器B,应用服务器B,X,X,性能测试、压力测试与负载测试,系统性能的改善是测试、调整、再测试、再调整、一个持续改进的过程性能调优性能调优需要借助负载测试方法的帮助 负载测试和性能测试有较多相似之处,例如,测试方法比较接近、都关注系统的性能,而且多数情况下使用相同的测试工具 负载测试可以看作是性能测试所采用的一种技术 压力测试可以被看作是负载测试的一种,即高负载下的负载测试 容量测试也采用负载测试技术来实现,辨别,负载测试过程,确定所要模拟的角色及其对应的关键业务操作路径。确定输入/输出参数,制定负载测试方
7、案。准备测试环境,并完成相应的测试脚本的开发。设计具体的测试场景,如负载水平、加载方式等。执行测试,监控输出参数,如数据吞吐量、响应时间、资源占有率等。对测试结果进行分析。结果不满意,需要调整测试场景,进入下一个循环。,性能测试,性能指标 关键业务 负载模式 最大负载量 测试环境 结果分析,场景设置,启动(Ramp up)持续期间(Duration)结束(Ramp down),在性能测试执行前,以什么样方式启动负载方式、如何持续进行负载测试直至负载测试结束,这个过程的负载大小和方式、负载启动和结束以及各种检查点、验证点等设计,被称为场景设置。,递增 恒值 动态 队列,负载测试执行,大量的虚拟用
8、户要运行在多个客户端,并由控制器管理、代理(agent)驱动 负载测试的执行,需要针对不同维度的变化进行,包括时间维、负载维和系统维监控、详细的记录和适当的分析是十分重要的,时间维:尝试观察系统在一段较长时间上的行为变化 负载维:尝试在系统上改变负载来进行对比分析 系统维:负载测试也可以针系统的不同组件、不同配置等进行,负载测试执行环境,结果分析,要善于捕捉被监控的数据曲线发生突变的地方拐点,安全性测试,跨站点脚本(cross-site scripting,XSS)攻击SQL注入式漏洞缓冲区溢出不安全的数据存储或传递不安全的配置管理有问题的访问控制,权限分配有问题口令设置不严,包括长度、构成和
9、更新频率暴露的端口或入口,软件安全性测试就是检验系统权限设置有效性、防范非法入侵的能力、数据备份和恢复能力等,设法找出上述各种安全性漏洞,Hot,测试方法,单因素?,多因素?,确定等价类的示例,在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。,个人月收入 税率 x 101600 45%,边界值:全选、只选一个、一个都不选、,边界值实例,字符编辑域,DefaultEmptyBlankNullZeroNone,测试用例,测试执行 测试数据 测试环境 测试套件 测试脚本 测试工具 手工测试 自动化测试,重点,如何设计测试用例?,需
10、求,测试用例,方法,测试用例设计,全面理解功能特性 客户需求导向的思维方式 白盒方法和黑盒方法 用例 工作流图/数据流图/UML charts 负面测试,测试用例框架的构成,更有效、有序地组织测试,测试套件,测试计划,手工测试,发现缺陷率高 容易实施 创造性、灵活性 覆盖率量化困难 重复测试效率低 不一致性、可靠性低 依赖人力资源,高效率(速度)高复用性 覆盖率容易度量 准确、可靠 不知疲劳 激励团队士气 机械、难以发现缺陷 一次性投入大,手工测试 vs.自动测试,两者相互补充,在系统功能逻辑测试、验收测试、适用性测试、涉及交互性测试时,多采用手工测试方法;单元测试、集成测试、系统负载或性能、
11、可靠性测试等比较适合采用TA;对那种不稳定、开发周期短或一次性的软件等不适合TA工具本身缺乏想象力和创造性,自动测试只能发现15%的缺陷,而手工测试可以发现85%的缺陷;,缺陷,缺陷报告 缺陷生命周期 缺陷跟踪 趋势分析 分布分析 缺陷清除率 质量评估 缺陷预防,缺陷生命周期,创建,激活状态,Send email to DEV,是否清楚、可再现?,已处理状态,已修正状态,Send email to QA,不能再现缺少信息,缺陷评审,关闭状态,延期,增强设计,无法解决,需要处理,验证是否通过,Unit test,code reviewCheck in CVS,No,No,下一个版本,Yes,Ye
12、s,实例,Open a bugDev checks mail&Review bugDuplicate the bugDebugCheck out codeFix bugCode ReviewUnit test,Check in codeBuild a packageUpload packageInstallation/configurationVerify fixed bugsChange bug status to close,14 Steps,start,end,测试思想,质量文化 客户需求 质量保证 测试现实 测试原则 测试驱动成熟度模型,测试现实和原则,测试现实是从事测试活动所面对的客
13、观条件或限制,诸如:测试覆盖程度能否达到100,以及人员、设备、时间等限制。,软件测试原则是测试过程中所时时应该注意与遵循的观念或指导性意见,统驭测试方法,是重中之重。,例如:站在用户角度,全面测试,尽早、尽可能多的发现软件缺陷,测试管理,测试策略 测试风险 资源进度 测试计划 实验室 测试团队 测试覆盖 测试报告与模板,测试计划的内容,确认测试目标、范围和需求 识别测试风险,制订相应的测试策略 对测试任务和工作量进行估算 确定所需的时间和资源 进度安排和资源分派,包括团队角色、责任和培训 测试阶段划分,包括阶段性任务和成果 跟踪和控制机制,核心,首先确立测试范围,优先级最高的需求功能 新功能
14、和改动较大的旧功能 运用有效的测试技术去提高测试效果 经常容易出现问题部分的功能 一些经常被用户使用的功能和配置,测试策略,问题或风险在哪里?影响因素 已有的测试方法等 软件测试策略的确定 体现在测试计划,软件测试策略在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。,制定测试策略,全面细致地了解产品的项目信息分析各个因素对产品的影响确定测试范围、等级和测试重点使用尽可能少的有效测试用例,发现尽可能多的缺陷测试既不能失败、不足,也不能过度,而是寻求一个最佳平衡点,测试风险,需求变更,测试人员、环境、技术、工具,广度、深度 风险评估与控制
15、 寻找缓解风险的策略 体现在测试计划中 在测试过程中进行监控和处理,测试风险是不可避免的,测试总是有风险的,因此对系统中潜在的各种风险进行评估分析与管理是必不可少的活动。,问题?,测试阶段有哪两种划分?,测试阶段,需求审查 设计审查 单元测试 集成测试 系统测试 验收测试/测试 回归测试 冒烟测试,软件测试全过程(2),软件测试全过程(3),主题,软件测试及其定位 全景图 开源测试工具 新方法和新技术 实验课 教学对策,开源的功能测试工具,Selenium(http:/seleniumhq.org/)AutoIT()AutoHotKey(http:/)MaxQ。Twist()Canoo Web
16、Test(/),开源性能测试工具,JMeter()Siege()是一个开源的Web压力测试和评测工具。OpenSTA,可以模拟大量的虚拟用户来完成性能测试,并通过scrpt来完成丰富的自定义设置。详见。DBMonster是一个生成随机数据、用来测试SQL数据库的压力测试工具,详见。LoadSim网络应用程序的负载模拟器。更多的性能测试工具,可访问,JMeter,开源的安全性测试工具,Burp suite是一个可以用于攻击Web应用程序的集成平台Nikto是开源的Web服务器扫描程序。Paros proxy是基于Java的web代理程序,可以评估Web应用程序的漏洞。TamperIE 是一个小巧
17、的XSS漏洞检测辅助工具Tripwire是一款最为常用的开放源码的完整性检查工具Wapiti由Python编写的,直接对网页进行扫描WebScarab分析HTTP/HTTPS进行通信的应用程序Whisker是使用LibWhisker的扫描程序,适合于HTTP测试Wikto可以检查Web服务器中的漏洞,和Nikto比较接近。网络监控工具Nessus、Ethereal/Wireshark、Snort、Switzerland和Netcat。,主题,软件测试及其定位 全景图 开源测试工具 新方法和新技术 实验课 教学对策,敏捷测试(agile test),64,基于模型的测试,65,被测系统可以通过模
18、型来描述 模型包括开始状态、转换和结束状态 扩展有限状态机方法(EFSM)MS Spec Explorer,模糊(Fuzz Test)测试,针对测试系统的随机数据输入 数据驱动或事件驱动 适用于安全性的测试,66,云测试(Cloud test),分布式、可伸缩系统 大数据量、大用户量 虚拟技术 并行算法 实时服务,67,软件测试发展趋势,全程软件测试,伴随着整个软件开发生命周期全程自动化测试,测试原来可以是这样的全程缺陷预防,测试工作已经不是那么重要,主题,软件测试及其定位 全景图 开源测试工具 新方法和新技术 实验课 教学对策,实验内容,Web 功能测试 客户端软件功能测试 Web安全性测试
19、 Web服务器性能测试 应用服务器的性能测试,70,尽量采用开源的测试工具,实验安排,分组 实验指导 工具介绍、演示和讲解功能测试工具、性能测试工具 大作业 辅导 答辩,71,主题,软件测试及其定位 全景图 开源测试工具 新方法和新技术 实验课 教学对策,课程教学的挑战,学生兴趣不够 缺乏技术深度 教学内容比较多 技术和实践的结合?理论教学和实验的结合?,73,对策1 培养兴趣,实例贯穿教学的过程 多提问,交互式教学 课堂演示 电子课件上下功夫 测试实践活动,74,研讨式、探究式、案例式教学,对策2-强调能力的培养,75,开发测试工具 脚本编写能力 测试框架理解能力 动手能力(实践测试活动)启发思维 鼓励创新 教学实践基地,对策3 及时更新教学内容,测试流程,如Agile Test 测试工具的新版本 测试新技术 参考英文教材 参考业界实践,76,Q&A,