软件测试基础课程—慕课网
- 格式:docx
- 大小:729.03 KB
- 文档页数:17
软件测试课堂练习题答案中国⼤学mooc软件测试课堂练习题第1单元测试1. 以下描述中哪个是错误的:A. 静态测试不需要搭建测试环境B. 测试⽤例的基本组成包括:输⼊、预期输出和测试环境C. 穷尽测试是⼀种⾮常有效的测试⼿段D. 测试⽤例能代表需求的⼩的测试单元2. 以下描述正确的是:A. 程序员不需要测试⾃⼰的程序B. 测试⼯程师肯定⽐其他⼈的测试⼯作做的更好C. 测试职位的价值之⼀在于它能证明程序是满⾜⽤户要求的D. 没有需求就不能开始测试3. 以下哪些项属于软件质量:A. 顾客和⽤户觉得软件满⾜其综合期望的程度B. 软件产品中能满⾜给定需要的性质和特性的总体C. 确定软件在使⽤中将满⾜顾客预期要求的程度D. 软件具有所期望的各种属性的组合程度4. 以下哪些情况⼀定可以看做是软件缺陷:A. 某App分享到微信后,针对IOS⽤户,在IOS12以下的版本中,在微信中打开该APP出现闪退现象B. 将⼿机的⽇历中的某⼀条备忘⽂本复制后,⽆法粘贴到短信编辑框中C. 登录电⼦邮箱时,输⼊正确的⽤户名和密码,填写正确的动态验证码后,⼿机收到动态短信提⽰成功登录,但⽹页端只是重新刷新了登录界⾯,要求重新输⼊⽤户名和密码D. 在微信中收到好友分享的⽂章链接,点击该链接后选择在APP中打开,对应APP出现闪退现象5. 在游戏⾏业,游戏提供商常常在游戏正式发布之前邀请⽤户展开α测试作为检验游戏的⼀种⽅式。
A. √B. X6. ⽤户注册了某机票预订⽹站的会员,但在某次使⽤该机票预订⽹站进⾏机票预订时,并未事先登陆,⽽是直接查询航班,然后填写必要信息后在线购买了机票。
此时,由于是以⾮会员⾝份进⾏机票购买,导致该⽤户登录⽹站后⽆法查询到⾃⼰该次购买机票的订单信息,该⽤户由此感到不满。
⽤户认为,该机票预订⽹站应能根据⾃⼰填写的⼿机号码、⾝份证号码等信息,⾃动识别⾃⼰的会员⾝份,并应⾃动提⽰以会员⾝份登录系统后再购买机票。
请问,在这个案例中,机票预订系统未能识别的⽤户需求是(实际需求)(请在显式需求、隐式需求、实际需求中选择⼀项进⾏填写)第2单元测试1. 以使⽤某购票系统进⾏国内车票购买的过程为例,如果需要针对相关业务流程设计测试⽤例,则如下描述中错误的是:A. 成功登录系统,为已有乘车⼈成功购买单程单张车票,以及为已有乘车⼈成功购买单程多张车票,这两个流程分别对应两个基本事件流B. 系统登录失败,该流程对应的是备选事件流C. 成功登录系统,出发地城市分别选择100个不存在的、或不在中国境内的城市,⽆法购票,对应同⼀个备选事件流D. 成功登录系统,为已有乘车⼈成功购买单程、单张车票,该流程对应的是基本事件流2. 以下描述中哪个是正确的?A. 在功能测试中,应优先使⽤等价类测试⽅法来测试数据,然后使⽤场景法测试流程,最后使⽤边界值测试做补充测试B. 在数据可以穷尽的情况下,只要能保证测试⽤例覆盖所有数据,就可以确保测试没有风险C. 在功能测试中,应选择所有不同的测试⽅法,围绕功能点设计尽量多的测试⽤例D. 功能测试中,针对事件流中的每个节点,应使⽤等价类和边界值测试对涉及的数据进⾏校验3. 下图给出了猫狗⼤战⼩游戏的⼀个典型的对战场景,其中图中的猫和狗分别代表对战的双⽅,在⼈机对战模式下,猫是机器内置的对⼿,⽤户可操作的是狗⾓⾊,图中中央上⽅显⽰的分别是对战双⽅的⾎量,中央⾎条下⽅是风⼒和风向标志,四个圆形图标从左到右依次表⽰:打击两次、强⼒打击⼯具、臭弹⼯具、补⾎⼯具(补⾎⼯具仅对⾃⼰进⾏补⾎,不能攻击对⼿)。
第一章课前摸底测验一、单选题 (共50.00分)1.软件是包括()的完整集合。
①程序②数据③相关设备④相关文档A.①②B.①②③C.①②④D.①②③④正确答案:C2.以下不属于软件开发模式的是()。
A.抽象工厂模式B.瀑布模式C.迭代模式D.敏捷模式正确答案:A3.以下不属于软件开发过程中重要环节的是()。
A.需求分析B.软件估价C.软件设计D.软件编码正确答案:B4.一般而言,软件交付给最终用户的是()。
A.源代码文件B.目标代码文件C.可执行文件D.文档手册正确答案:C5.在软件生命周期的哪一个阶段,发现软件缺陷并进行弥补和修复的费用最高?()A.需求分析B.软件设计C.程序编码D.产品发布投入实际使用正确答案:D二、判断题 (共50.00分)1.软件的质量取决于程序编码环节,代码编写质量高的软件,质量一定高。
A.正确B.错误正确答案:B2.根据软件开发经验可知,通过检查代码能够很容易发现的问题,一定也能通过执行代码来很快发现。
A.正确B.错误正确答案:B3.程序员应当把注意力集中于多开发代码,代码中的问题等到后面发现了再处理也不迟。
A.正确B.错误正确答案:B4.软件质量取决于测试人员,只要他们严格把关,软件质量就会高。
A.正确B.错误正确答案:B5.对程序的源代码和可执行文件都可以进行测试。
A.正确B.错误正确答案:A第九章测验一一、单选题 (共75.00分)1.下列()不属于软件缺陷。
A.测试人员主观认为不合理的地方B.软件未达到产品说明书标明的功能C.软件出现了产品说明书指明不会出现的错误D.软件功能超出产品说明书指明范围正确答案:A2.软件测试是按照特定的规程,()的过程。
A.发现软件错误B.说明程序正确C.证明程序没有错误D.设计并运行测试用例正确答案:A3.经验表明,在程序测试中,某模块与其他模块相比,若该模块已发现并改正的错误较多,则该模块中残存的错误数目与其他模块相比,通常应该()。
第一章软件测试基础课后习题答案1.什么是软件测试?软件测试发现一个应用从开始到结束时的错误,测试是一个过程。
(Glenford J.Myers 提出对软件测试的定义)测试是发现错误而执行的一个程序或系统的过程测试以发现故障为目的,是为了发现故障而执行程序过程2.软件测试涉及哪几个关键问题?软件测试的经济性原则谁来测试(who)测试什么(what)什么时候测试(when)怎样进行测试(how)测试的停止标准是什么(which)3.为什么说软件需求说明是软件故障的最大来源?软件需求是描述了系统有哪些功能,功能操作,性能如何等问题,是开发阶段的重要文档,也是后期软件开发的重要依据。
如果软件需求一开始就错了,在后面处理过程则会把错误放大,这样使得修复起来成本就是提升。
4.简述软件测试的复杂性和经济性。
复杂性1.完全测试是不现实的2.软件测试是有风险的3.杀虫剂现象4.缺陷的不确定性经济性软件测试是软件生命期中费用消耗最大的环节。
测试费用除了测试的直接消耗外,还包括其他的相关费用5.分析最近发生的软件质量事故,并简要分析产生的原因。
具体案例具体分子6.启动Windows计算器,输入“6,000-6=”(逗号不能少),观察计算结果,这是软件故障吗?为什么?这是软件故障中的界面缺陷。
由于无法输入逗号,无法进行输入,当做一个界面缺陷,因为不符合需求,原本是小数点变成了逗号。
7.软件测试应遵循哪些重要的原则或方针?1.完全测试程序是不可能的2.软件测试是有风险的3.测试无法找到隐藏的软件故障4.存在的故障数量与发现的故障数量成正比5.杀虫剂现象6.并非所有软件故障都能修复7.一般不要丢弃测试用例8.应避免测试自己编写的程序9.软件测试是一项复杂且具有创造性的和需要高度智慧的挑战性任务8.假定无法完全测试某一程序,那么在决定是否应该停止测试时应考虑哪些问题?在工作中,常用的停止测试标准有五类:测试超过了预定时间,停止测试执行了所有测试用例但没有发现故障,停止测试使用特定的测试用例方法作为判断测试停止的基础正面指出测试完成要求,如发现并修改70个软件故障根据单位是见查出故障数量决定是否停止测试9 . 假如星期一测试软件的某一功能时,每小时能发现一个新的软件故障,那么星期二会以什么频率发现软件故障?第一感觉就是与第一天(星期一)的一样,既然前一天发现的频率以每小时都有新的故障,说明软件的缺陷很高,所以第二天也可能有同样的频率。
第五章软件测试的管理过程课后习题答案1.简述软件测试过程的概念。
软件测试是软件开发中的最后一个阶段。
软件测试是使用人工或者自动手段来运行或测试某个系统的过程,通过测试发现软件开发设计的过程中存在的问题, 其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
软件测试的过程主要描述了软件测试需要做的工作,随着软件测试技术的进步,测试过程也会得到进一步改进。
2.软件测试包括哪几个阶段?(1)测试需求的分析和确定,测试需求就是在项目中要测试什么。
(2)测试计划。
测试计划是指导测试过程的纲领性文件,内容包含产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、风险分析等。
(3)测试设计。
测试设计可以理解为对测试工作进行有目的、有计划、创造性的业务活动。
测试设计主要包括测试管理的设计,以及各种测试技术应用的设计,其中测试管理中的团队管理方法设计与测试流程设计是重中之重。
(4)测试执行。
书写相应的测试用例,按照测试用例中的步骤一步步执行,查看实际结果与预期结果是否一致。
(5)测试记录和软件缺陷跟踪。
通过某些测试软件的日志功能,可以在相应的测试用例执行完之后记录相关的日志文件,作为测试过程的记录。
(6)回归测试。
因为旧代码得到了修改,通常需要再次进行测试来验证修改是否引入了新的错误,这一测试过程就称为回归测试。
软件开发的每个阶段都会进行多次回归测试。
(7)测试总结报告。
编写测试总结报告,首先是为了对测试结果进行分析,得到对软件质量的评价;其次是为了评估测试执行和测试计划是否相符;最后是为了针对软件中的缺陷提出相应的建议3.需要从哪几个方面对测试需求进行评审?测试需求评审的内容包括完整性审查和准确性审查。
完整性审查是检查测试需求是否覆盖了所有软件需求,以及软件需求的各项特征,关注功能要求、数据定义、接口定义、性能要求、安全性要求、可靠性要求、系统约束、行业标准等,同时还要关注系统隐含的用户需求。
10+年程序员总结的20+条经验教训以下是我作为一名程序员经过10几年时间总结出的一些有关于软件开发的经验。
规则:●开发1.从小事做起,然后再扩展无论是创建一个新的系统,还是添加功能到现有的系统中,我总是从一个简单到几乎没有任何所需功能的版本启动,然后再一步一步地解决问题,直到满意为止。
我从来没有妄想过能够一步登天。
相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中。
我很喜欢John Gall的这句话:“复杂系统总是源于简单系统的演化。
”2.一次只改变一件事当我们在开发时,碰到测试失败和功能无效的情况,如果你一次只研究一个问题,那将会更容易找到问题的关键。
换言之,就是使用短迭代。
必须确保这个问题解决之后,再转移到另一个问题上。
这适用于向下提交。
如果在你添加新功能之前需要先重构代码,那么先提交重构,然后再添加新的功能。
3.尽早地添加日志记录和错误处理在开发新系统时,我做的第一件事就是添加日志和错误处理,因为这两者从一开始就非常有用。
如果系统不能照常工作,那么你就需要知道程序中发生了什么——这是日志的作用。
错误处理也是如此——错误和异常越早处理越好。
4.每一行新代码必须至少执行一次在你真正完成一个功能之前,你必须对它进行测试。
不然,你怎么知道它是不是按照你的想法在执行呢?通常情况下,最好的方法是通过自动测试,但并非总是如此。
不过,不管怎么说,每一行新代码必须至少执行一次。
5.在整体测试之前先进行模块测试先进行部分模块测试可以节省时间。
通常说来,我们在整合不同的模块时也会出现问题,例如模块之间的接口不匹配。
但是如果我们能够信任各个组件的话,那么跟踪集成问题就会变得简单得多。
6.所有事情所花费的时间总是比你预期的要长特别是在编程中,即使一切进展顺利,我们也很难对功能所需的时间做出正确的预算。
并且,开发软件时碰到各种意想不到的问题是非常常见的。
侯世达定律其实道出了真谛:做事所花费的时间总是比你预期的要长,即使你在预期中已经考虑了侯世达定律。
软件测试课 程 标 准软件技术专业二○○九年六月目 录一、课程定位与设计思路 (1)(一)课程定位 (1)(二)设计思路 (1)二、课程目标 (2)(一)知识目标 (2)(二)能力目标 (3)(三)素质目标 (3)三、教学内容 (3)四、教学设计 (4)五、考核与评价 (9)六、实施建议 (9)(一)教材及相关资源开发建议 (10)(二)教学师资配备建议 (10)(三)教学条件配备建议 (10)(四)教学考核与评价建议 (10)(五)其他 (11)软件测试课程标准课程名称:软件测试 课程代码:010321005课程类别:专业基础与专业课程 课程性质:必修课程课程学分:6 课程学时:96适用专业:软件技术 开课学期:第 4 学期一、课程定位与设计思路(一)课程定位软件测试是软件技术专业开设的一门专业核心课程、专业必修课程,在专业 课程体系中占有重要的地位。
本课程通过项目教学的方式,采用多种教学方法, 主要培养软件测试员的岗位能力,同时培养学生自主学习、分析解决问题及与人 沟通等能力。
前修课程:办公应用、程序设计基础、数据库技术、界面设计、软件编程。
后续课程:企业级软件项目开发、数据库管理与应用、软件技术服务等。
(二)设计思路通过对软件技术专业岗位群的分析,确定本课程为软件技术专业的核心课 程。
经过与企业专家研讨,确定了本课程的教学项目,教学项目的设计以学生已 具有的专业技能为入口,以项目的测试分析报告为检验标准,为后续课程的学习 打下良好基础。
本课程学时为 96 学时,学分为 6 学分。
整体设计思路:1.校企合作进一步深化校企合作,实施“点对面订单式”人才培养模式,校企共建开发 课程资源:案例库、实践技能测试题库、特色教材、测试流程及测试工具。
2.内容选取通过对软件测试岗位工作任务分析,以软件测试员职业岗位能力培养为主 线, 我们将教学内容分为两个项目: 网上购物系统的测试和超市管理系统的测试, 本课程主要围绕这两个项目展开教学和训练。
软件测试课程教学大纲一、课程简介软件测试是软件工程中的一个重要步骤,同时也是计算机学科各专业一门重要的理论课程。
作为软件质量保证的重要环节之一,软件测试的地位不可撼动。
通过本课程的理论学习与实践,使学生理解软件测试的基本概念与基本理论, 掌握软件测试的常见方法以及主流软件测试工具的使用。
二、课程目标(一)课程具体目标1. 培养软件测试理念,理解和掌握软件测试相关基础概念和理论;2. 掌握JAVA开发环境下的常见测试工具,具有基本的测试用例设计与测试代码编写能力,并能够用于解决复杂工程中的测试问题;3. 正确理解测试计划的重要性和作用,培养学生编写测试用例文档和缺陷报告的能力。
(二)课程目标与专业毕业要求的关系表1 本课程对专业毕业要求及其指标点的支撑(三)课程对解决复杂工程问题能力的培养本课程的教学过程充分体现和落实对学生解决复杂工程问题能力的培养,理解复杂工程问题的内涵,认识复杂工程问题的特征,有针对性的培养和提高学生在未来的计算机技术工程实践活动中解决复杂工程问题的能力。
在课程理论知识讲授环节,注重培养学生对软件测试重要性、测试方法与技术、自动化测试和测试计划的深入理解,使学生掌握基于Java平台解决复杂工程中软件测试所需的基本理论和测试工具,并通过适当的课后作业锻炼和检验学生解决复杂工程问题的能力。
在实验教学环节,以培养学生解决复杂工程问题的能力为目标,围绕课程目标安排实验项目,设计实验内容,明确实验要求,指导实验实施,严格实验成果考核。
在课程考核环节,根据课程目标选择合适的考核方式,考题设置应完全覆盖课程目标,考题设计应充分体现对学生解决复杂工程问题能力的考查,考题的难度和深度应能够体现复杂工程问题的特征。
总之,本课程的教学通过在理论讲授、课后作业、课内实验、课程考核等环节充分贯彻培养学生解决复杂工程问题能力的理念和要求,实现课程目标。
三、教学内容及基本要求(一)理论教学第1单元软件测试基本概念(2学时)1.教学内容(1)软件测试的必要性。
软件测试基础教程——慕课网第一课时:软件测试概要一、软件测试的定义软件测试是使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。
二、软件测试的测试的对象需求、概要设计、详细设计、运行环境、可运行程序、源代码。
(软件测试≠程序测试)三、软测的五大要素及两大目标五大要素: 质量(最为核心),人员(决定因素),技术(实现手段)【测试技术,方法,测试工具】,资源【测试所需的硬件,网络环境,测试生命周期,测试时间】,流程(测试标准)【测试计划,测试执行,报告】目标:提升测试覆盖率及测试效率四、软件测试所遵循的原则:1.测试显示缺陷的存在,但不能证明系统不存在缺陷。
2.穷尽测试是不可能的,应设定及时终止的条件。
3.测试应该尽早进行。
4.缺陷具备群集特性。
越是发现问题多的模块,就是我们重点关注的对象。
5.测试的杀虫剂悖论。
在测试当中,我们采用同样的测试用例、同样的测试方法,多次、重复的来测试某一个模块,那最后我们就不能够再发现新的缺陷。
所以我们的测试用例和测试方法应该不定期的评审和修改,并增加不同的测试方法或测试用例来测试软件或系统的不同部分,从而发现更多的缺陷。
6.测试的二八原则。
就是我们应该把80%的时间或资源用在20%的重点模块上,重点测试这款软件中20%的重要模块,来达到我们测试的效率和资源配置最佳的比例。
7.测试活动依赖于测试背景。
第二课时:软件测试阶段、手段、模式一、软件测试阶段软件测试按测试阶段来分类:单元测试、集成测试、系统测试、验收测试。
(一)单元测试是各个阶段测试的基础,是对软件中的最小可测试单元进行检查和验证。
单元是人为规定的可测试的最小的模块。
(java面向对象语言来说,最小可测试单元是每一个类)单元测试是对代码进行测试测试框架:junit针对JAVA nunit针对.net phpunit针对PHP CppUnit针对C++原则:1.尽可能的保证各个测试用例是互相独立的。
尽量避免使用依赖的方法。
编写一个模拟的方法来取代使用外部依赖。
2.一般由代码的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。
益处:1.能尽早发现缺陷。
2.有利于重构。
3.简化集成。
4.文档。
简化文档作用5.用于设计。
限制:1.不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误。
2.每一行代码,一般需要3~5行测试代码才能完成单元测试。
所以存在投入和产出的一个平衡。
(二)集成测试(偏于技术角度验证)是在单元测试完成的基础上针对已经完成单元测试的那些模块,把他们组成更高一级的模块和子系统,来针对这些子系统进行的集成。
各个最小单元模块之间的接口和子系统的集成。
主要实施方案:1.Big Bang。
也叫一次性集成。
就是把所有的东西组装好,然后再一起进行测试。
2.自顶向下。
是一个递增的组装软件结构的方法。
3.自底向上4.核心系统集成。
5.高频集成。
高频次的不断地进行集成。
集成测试与单元测试的区别是:1.测试对象不同2.测试依据不同单元——主要;集成——概要3.测试的方法不同集成测试——关注接口之间的集成;单元测试——关注单元的内部(三)系统测试(偏于业务角度验证)(一般测试岗位,主要集中在系统测试)把整个系统组装以后置于真实的运行环境对这个系统进行全面的测试。
主要做功能测试、性能测试、稳定性测试等多种测试。
是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效的测试,以发现软件潜在的问题,保证系统的正常运行。
关注点1. 关注系统本身的使用2.关注系统与其他相关系统间的连通3.关注系统在不同使用压力下的表现4.关注系统在真实使用环境下的表现系统测试&集成测试区别(四)验收测试从用户的角度对系统软件的认可验收。
也称交互测试。
针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权结构决定是否接受系统。
定义:交付测试。
针对用户需求、业务流程的正式的测试、确定是否满足验收标准,由用户、客户或者其他授权机构决定是否接受系统。
验收测试细分可分为用户验收测试:开发交付之前运行验收测试:运维的层面合同和规范验收测试:参照约定的规范验收,还有法律法规alpha测试:在开发环境中,由用户进行测试Beta测试:脱离开发环境由用户提供的环境下进行测试二、软件测试手段软件测试的分类:按可见度:黑盒白盒按状态:静态、动态按测试执行方式:手工、自动化(一)黑盒测试在完全不考虑程序内部结构和特性的情况下,通过暴露出来的接口对程序进行测试程序是否能正常接收输入,正确输出,一般针对界面或可见功能用户视角,通过结果判断优:1.容易实施,不需要关注内部实现,操作简单2.更贴近用户视角,测试场景与正式场景更接近缺:1.覆盖率较近,只能覆盖代码量的不足40% (不了解内部实现不知道内部分支)2.针对黑盒的自动化测试,复用率较低,维护成本较高黑盒针对功能进行测试,变动较大,用例使用率较低主要测试的地方(关注点):1.功能是否正确或遗漏2.接口上输入、输出是否正确3.数据结构或外部信息是否有访问错误4.性能是否满足系统测试阶段主要使用黑盒测试其它各个阶段也会用到黑盒测试的主要设计方法1.等价类划分法:针对程序有很多输入条件,把所有的输入把等价的归为一类,形成若干等价的代表形输入,通过典型数据进行测试用例的设计。
2.边界值分析法:特殊的等价类划分,更关注各种边界条件,开发时容易出现失误的地方需要重点关注3.错误推测法:基于经验或直觉,判断出程序中容易失误的地方,从而制作测试用例例如:特殊字符、文件不存在,或文件超大等4.因果图法:拿到程序的需求规格说明书,针对输入输出在因果图中看作原因和结果根据规划说明生成判断表5.正交试验分析法:主要用于筛选输入数据6.状态迁移图法:通过处理功能点的状态迁移关系,例如审批流程中的状态变化7.流程分析法:通过梳理逻辑程序的路径(二)白盒测试黑盒:内部不可见白盒:逻辑结构对测试人员是透明的,又叫结构化测试或透明盒,通过对逻辑结构来设计测试用例。
用逻辑的覆盖率来测试逻辑的完整性。
逻辑的单位:语句、条件、条件组合、分支、路径语句覆盖:保证每条语句至少被执行一次判定:条件覆盖:覆盖表达式分支是路径的一部分优:1.迫使测试人员去仔细思考软件的实现,理解原理2.可以检测代码中的每条分支和路径3.揭示隐藏在代码中的错误4.对代码的测试比较彻底缺:1.昂贵(较高的覆盖率,工作量大)2.无法检测代码中遗漏的路径和数据敏感性错误3.针对代码不是针对需求,不能正确验证需求实现是否正确白盒测试的方法:1.代码检测法:对代码进行检测2.静态结构分析法:通过测试工具分析系统结构数据结构、内部控制逻辑来制定测试用例3.静态质量度量法:iso标准制作度量模型4.逻辑覆盖法:6种主要覆盖测试方法:语句条件条件组合分支路径条件vs判定覆盖5.基本路径测试法:白盒中主要的一种测试方法在程序控制流图的基础上,通过分析控制构造复杂度导出基本可执行的路径的集合进而制作测试用例的方法6.控制流图:描述控制流灰盒:介于黑、白盒测试之间的,关注输入、输出的正确性、同时也关注内部表现结合了黑、白的测试要素,主要用于组件的测试(三)静态测试静态测试:无须执行被测程序,通过评审软件文档或代码,度量复杂度,检查软件是否符合编程标准以发现程序的不足之处,减少错误出现的概率可以通过人工,也可以通过自动化工具方式:互审-走查(小组)-会议(记录正式),不正式到正式的集体活动(四)动态测试动态测试:通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等黑盒:主要是动态测试方法白盒:代码检查法和静态代码分析法就是典型的静态方法(五)手工测试手工测试:由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。
更适用针对深度的测试和强调主观判断的测试手工测试方法:众包测试、探索式测试优:1.易发现缺陷2.容易实施3.更具有创造性、灵性性缺:1.覆盖量化难2.重复测试效率低3.不一致性、可靠性低(前后不一致)4.人力资源依赖(六)自动化测试自动化:使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查自动化测试方法:单元测试、接口测试、性能测试等优:1.高效率、速度快2.高复用性 3.覆盖率容易度量4.准确、可靠5.不知疲劳缺:1.机械、发现缺陷率低,不具备创造性不灵活2.一次性投入较大(从实施自动化测试之初、从测试工具的选型、框架的设计到自动化测试脚本的编写、维护都需要投入较大的精力和资源)手工和自动化各有适用场景三、软件测试模式瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索式测试等。
(一)瀑布模型瀑布模型:项目计划、需求分析、软件设计、程序开发、软件测试、集成维护项目计划:制定总体的研发计划,确定主要的里程碑节点-输出项目计划书)需求分析:明确用户需求定义,并对定义进行清晰描述,充分理解需求,描述产品功能-输出产品需求规格说明)软件设计:根据需求定义,设计产品的实现方案,包括定义软件硬件的结构、组件、实现方法、接口、界面、数据-输出概要设计、详细设计程序开发:根据概要和详细设计具体实现,根据编程规范构建各类组件模块,输出产品版本。
软件测试:通过独立的测试小组评估产品是否满足需求定义-输出测试报告集成维护:交付用户,根据用户使用情况进行维护及升级优点:1.强调需求、设计的作用;2.前一阶段完成后,只需关注后续阶段;3.为项目提供了按阶段划分的检查点,里程碑清晰;4.文档规范缺点:1.难以适应需求的频繁变;2.项目周期后段才能看到成果,增加了风险3.强制的里程碑、完成时间点,适应能力差;4.文档工作量大(二)V模型(最广泛)是瀑布模型的变种明确表明测试过程的不同级别,阶段:单元测试-集成测试-系统测试-验收测试,并且描述了各个阶段与开发过程各个阶段的对应关系。
优点:强调软件开发的协作和速度,反应测试活动和分析设计的关系,软件的实现和验证有机结合缺点:仅把关系明确对应,忽略了对需求分析的验证,对需求和功能的测试到验收测试才能发现;没有很好的体现测试的及时性(三)W模型(双V模型)开发与测试并行,可以尽早发现问题优点:1.增加了开发各个阶段的验证,测试的对象不再是对象,对需求和分析都有测试过程2.有利于及于发现项目的风险,线性的相互关系缺点:不能很好的支持像迭帯这样的模式(四)X模型解决交接和频繁集成周期的问题(五)H模型把测试当成一个完全独立的流程,便于尽早的完成测试,与其他流程并发进行,可以是任何流程(比如设计流程,并发流程,甚至是测试流程),可交叉。