版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件测试教程
-Ch.1软件测试概述erdonghs@126.com陈涵生内容概览全书共四篇,分十三章软件测试的原理,二章,阐述软件测试的重要性、基本概念和方法等软件测试的技术,七章,介绍典型的软件测试技术,和在各开发阶段的测试方法(单元测试、集成测试、系统测试、验收测试、性能测试和回归测试等)软件测试的实践,三章,介绍面向对象测试以及自动化测试工具与应用软件测试技术前沿,一章
erdonghs@126.com.
主要参考书:软件测试技术基础教程
ISBN:987-7-121-13705-1电子工业出版社
21世纪什么最贵——软件测试工程师
软件测试工程师,目前IT行业极端短缺的金贵人才,未来5年IT行业最炙手可热的高薪职位。中国软件业每年新增约20万测试岗位就业机会,而企业、学校培养出的测试人才却不足需求量的1/10,这种测试人才需求与供给间的差距仍在拉大。
软件测试——产品质量的保证软件测试——控制成本的关键软件测试——软件可靠性确认软件测试——让企业具备国际竞争的实力
erdonghs@126.com课程目标本课程是计算机或软件专业课程,重在培养我们的实践能力,适应软件企业的工作环境和业界标准,并和国际先进的软件开发理念和测试技术保持同步。通过本课程的学习,了解并掌握软件产品质量保证的基本思想和科学体系、软件测试技术的基本内容,以及软件测试的方法、技术和工具的使用,为全面掌握软件测试技术和软件质量管理打下坚实的基础。本课程属于“职业技能”
类型的课程,具有基础性、实用性和可操作性特点。强调软件工程师常用的软件测试方法和技术的学习和应用,以及实践动手能力的培养!erdonghs@126.com课程目标通过本课程的学习,我们还可以了解并掌握:
有效的测试策略、方法和技术测试计划和测试用例的设计测试自动化的引入、应用更清楚、准确地报告测试缺陷对软件产品质量的正确评估软件测试和质量保证的关系和区别……erdonghs@126.com课程服务于-测试工程师TestengineerQA工程师/经理
QAEngineer/Manager
软件工程过程组成员ThememberofSEPG
项目经理Projectmanager
程序员Programmer
软件分析师SoftwareAnalyst软件咨询顾问
SoftwareConsultant
……erdonghs@126.com课程安排2-3学分,建议:60学时erdonghs@126.com周次教学章节教学内容“软件测试教程”1,2第1章软件测试概论1.1软件定义1.2软件开发过程的特性1.3软件测试的定义和目的1.4软件缺陷1.5测试用例1.6软件质量1.7与测试相关的几个概念1.8软件测试技术的发展趋势和测试人员职业要求第1章,第2章第6章3第2章软件测试基础2.1软件测试的目的和原则2.2软件测试的分类2.3静态测试技术2.4软件测试模型2.5软件测试流程2.6软件测试3维空间和各种测试2.7软件测试注意事项2.8终止软件测试的标准第2章课程安排周次教学章节教学内容“软件测试教程”4第3章软件测试计划、文档3.1软件测试生命周期3.2测试计划3.3测试设计3.4测试实施过程3.5测试文档第6章5,6第4章白盒测试4.1白盒测试4.2控制结构测试4.3逻辑覆盖测试4.4路径分析测试4.5代码检查法4.6程序插装技术4.7案例研究第4章课程安排(2)erdonghs@126.com周次教学章节教学内容“软件测试教程”7,8第5章黑盒测试5.1黑盒测试概述5.2黑盒测试用例设计方法 基于用户需求的测试等价类划分测试边界值测试决策表法因果图测试错误猜测法5.3基于状态测试和场景测试用例设计方法第5章9第6章软件测试过程和单元测试6.1软件测试过程6.2软件测试与软件开发的关系6.3单元测试第3章10第7章集成测试、确认测试和系统测试7.1什么是集成测试7.2集成测试的模式与方法7.3确认测试7.4什么是系统测试7.5系统测试类型7.6安全性、可靠性和容错性测试7.7案例研究第3章课程安排周次教学章节教学内容“软件测试教程”11第8章软件测试自动化8.1测试自动化的内涵8.2测试工具的原理和方法8.3自动化测试生存周期方法学8.4自动化测试工具的分类8.5开放源代码的软件测试工具第7章,第12章12第9章单元测试工具Junit9.1JUnit概述9.2Junit特点9.3JUnit的安装和配置9.4JUnit的编译和执行9.5Junit的内容9.6Junit的高级使用第11章13,14第10章性能测试10.1性能测试概念10.2性能测试类型10.3性能测试指标10.4性能测试流程10.5性能测试的测试用例10.6Web网站的测试第9章课程安排(3)erdonghs@126.com周次教学章节教学内容“软件测试教程”15第11章验收测试与回归测试11.1验收测试的过程和主要内容11.2易用性测试11.3兼容性测试11.4可安装性和可恢复性测试11.5文档测试11.6验收测试的常用策略11.7Alpha测试11.8Beta测试11.9回归测试第3章16第12章面向对象的软件测试
12.1面向对象测试模型。12.2类测试基础12.3面向对象的集成测试12.4面向对象的系统测试12.5实例研究-面向对象的日历第8章17第13章
软件测试技术前沿13.1敏捷测试方法13.2测试驱动开发13.3云计算第10章第一章软件测试概述erdonghs@126.com1.1软件定义1.2软件开发过程的特性1.3软件测试的定义和目的1.4软件缺陷1.5测试用例1.6软件质量1.7与测试相关的几个概念1.8软件测试技术的发展趋势和测试人员职业要求1.1软件定义erdonghs@126.com软件定义:软件是计算机系统中与硬件相结合的一部分,包括程序、数据及其相关文档。简单地表示为:软件=程序+数据+文档
“程序”是指能够实现某种功能和性能要求的指令集合“数据”是使程序能正常操纵信息的数据结构“文档”指的是软件在开发、使用和维护过程中产生的图文集合,如:《系统需求规格说明》,《用户手册》readme等软件特点软件是一种逻辑实体,而不是具体的物理实体,具有抽象性软件是把知识与技术转化为信息的一种产品
软件在运行和使用中不会“磨损”,而是逐步完善.软件的开发和运行常常受到计算机系统的限制软件的开发至今尚未摆脱手工制作的开发方式软件是复杂的软件成本相当昂贵相当多的软件工作涉及到社会因素erdonghs@126.com软件的分类按照功能划分系统软件:能够直接操作底层的硬件、并为上层软件提供支持的软件,如:操作系统、各种硬件驱动程序等应用软件:能够为用户提供某种特定的应用服务的软件。这类软件也是我们测试的重点按照技术构架划分单机版软件:直接在单个计算机上安装并运行的软件。这类软件的测试较简单,不需要考虑网络传输。软件的分类C/S(客户/服务器)结构软件:这种软件是基于局域网或互联网的。C/S结构软件过去比较流行,但是不便于升级和维护(升级时需要重新安装一个客户端),现在逐渐被B/S结构软件所取代。B/S(浏览器/服务器)结构软件。这种软件同样是基于局域网或互联网的,它与C/S结构软件的主要区别在于不需要安装客户端,只需有IE等浏览器即可。B/S结构软件是现在软件的主流,也是我们测试的重点。软件的分类按照用户划分产品软件:目标用户是大众用户,而不是某一特殊群体。测试这类软件相对来说比较麻烦,需要考虑硬件和软件的兼容性测试。项目软件:目标用户是具体的用户,而不是千家万户。国内80%以上的软件都属于项目软件。这也是我们测试的重点。按照开发的规模划分小型:10人以下,1-4个月(开发时间)中型:10-100人,1年以下大型:100人以上,1年以上1.2软件开发过程的特性
1.2.1软件的生命周期1.2.2软件开发的基本过程1.2.1软件的生命周期软件生命周期是指软件从概念形成开始,经过开发、使用和维护,直到最终被废弃的整个过程。软件生命周期一般包括:软件定义、软件开发以及软件使用和维护3部分。问题定义可行性分析需求分析总体设计详细设计编码测试维护软件定义时期软件开发时期软件使用与维护时期图1-1软件生命周期的阶段划分1.2.1软件的生命周期软件的定义包括:问题定义:通过对系统实际用户和使用部门负责人的访问调查,明确要解决的问题的性质、工程目标和规模可行性分析:了解用户的要求及实现环境,从技术、经济和社会等多个方面研究并论证软件系统的可行性需求分析:确定所要开发软件的功能需求、性能需求和运行环境约束,编制软件需求规格说明、确认软件系统的测试准则1.2.1软件的生命周期2.软件开发:按照需求规格说明的要求,从抽象到具体,逐步生成软件的过程。一般包括:设计:又可分为:总体设计(概要设计)和详细设计。总体设计主要是设计软件的结构,确定软件的模块构成及模块之间的关系。详细设计是把解决方案具体化,设计出程序的详细规格说明,并给出细节信息。编码:将详细设计文档翻译成高级编程语言的源程序测试:通过测试与调试,使软件达到预期的要求3.软件使用与维护:将通过测试后的软件安装在用户确定的运行环境中,移交给用户使用,并在使用过程中负责软件修改和对软件需求变化的维护!1.2.2软件开发过程图1-2软件开发过程软件开发过程需求分析:
根据客户的要求,清楚了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。这一阶段结束时,应提交软件需求规格说明(SRS)文档设计:
根据需求分析的结果,考虑如何在逻辑、程序上去实现所定义的产品功能、特性等,可以分为概要设计和详细设计,也可分为数据结构设计、软件体系结构设计、应用接口设计、模块设计、界面设计等。设计阶段生成设计文档,该文档将作为后续阶段工作的输入。软件开发过程(续)③编程:
将设计转换成计算机可执行的编程语言代码。这一阶段的输出是软件的源代码,可作为测试和维护阶段的输入④测试:
对设计、编程进行验证和用户需求确认的过程。测试阶段的输出是测试报告,记录测试中发现的错误。⑤维护:维持软件运行,修改软件缺陷、增强已有功能、增加新功能、升级等。软件测试实践证明:对软件进行充分的测试 才能够有效的保证软件质量对软件产品进行充分测试,找出其中的缺陷(Bug),并进行修复(Fix)。erdonghs@126.com软件类型开发成本按阶段分布%需求与设计实现测试控制软件462034航空航天软件342046操作系统331750科技计算软件442630商业应用软件442828erdonghs@126.com软件测试成本占有开发成本的近一半1.3软件测试的含义软件的质量就是软件的生命,为了保证软件的质量,人们在长期的开发过程中积累了许多经验并形成了许多行之有效的方法。但是借助这些方法,我们只能尽量减少软件中的错误和不足,却不能完全避免所有的错误。如果把所开发出来的软件看作一个企业生产的产品,那么软件测试就相当于该企业的质量检测部分。简单地说,我们在编写完一段代码之后,检查其是否如我们所预期的那样运行,这个活动就可以看作是一种软件测试工作。新的测试理论、测试方法、测试技术手段在不断涌出,软件测试机构和组织也在迅速产生和发展,由此软件测试技术职业也同步完善和健全起来。1.3.1软件测试的定义Myers曾对软件测试下过如下定义:“软件测试就是为了发现错误而执行程序或系统的过程”。这个定义有不完善的地方,如:测试文档属于软件测试,但它不一定需要执行程序我按照用户需求测试了实际的系统,却一个Bug也没有发现。那么,我的测试工作算不算测试呢?当然算的,因为我至少证明了该系统基本符合用户需求。erdonghs@126.com软件测试的定义上面定义把软件测试的目的和手段搞混了。发现错误仅仅试软件测试的手段而已。软件测试的最终目的是检验实际的软件系统是否符合用户需求,测试不只是为了发现错误。当然,上面定义在当时环境下还说得通,因为那时对用户需求的认识比较模糊,测试仅仅是编码后的一个阶段,测试的主要工作也就是用来发现错误。erdonghs@126.com软件测试的定义标准定义:使用人工或自动手段,来运行或测试某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
《1983,IEEE软件工程标准术语》
该定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。它再也不是一个一次性的、只是开发后期的活动,而是与整个开发流程融合成一体。此外,还有[BillHetzel,1983],他将测试的定义:“评价一个程序和系统的特性或能力,并判断它是否达到预期的结果,软件测试就是以此为目的的任何行为”erdonghs@126.com软件测试的定义从软件测试的定义我们可以得出:软件测试的目的是通过科学的测试方法,找出软件中存在的缺陷,最终得到一个高质量的软件产品,那么确保用户满意将是我们的服务宗旨,如何找出更多的软件缺陷,是我们的工作重点。所以,我们要从客户的角度出发,按照正确的业务流程尽最大可能去模拟用户的行为习惯,找出产品中缺陷。在此过程中应以<需求规格说明书>为基本依据,结合软件产品的设计文档,以及项目经验设计高效的测试用例,只有这样才能达到我们测试的目的从广义上讲,软件测试是指软件产品生命周期内所有检查、评审和确认的活动。如:设计评审、文档审查、单元测试、集成测试、系统测试、验收测试等。从狭义上讲,软件测试是对软件产品质量的检验和评价。它一方面检查、揭露软件产品质量中存在的质量问题,同时又需对产品质量进行客观的评价并提出改进意见。1.3.2软件测试的目的软件测试的目的基于不同的立场,存在着两种完全不同的测试目的。从用户的角度出发,测试的目的就在于在软件投入运行之前,尽可能地多发现软件中的错误以考虑是否可以接受该产品。验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心从软件开发者的角度出发,软件测试是对软件规格说明、设计和编码的最后复审,是软件质量保证的关键步骤。综上所述,软件测试的目的有以下3点:测试是程序的执行过程,目的在于发现错误,而不是证明程序的正确性。一个好的测试用例在于可以发现还未曾发现的错误。一个成功的测试是发现了至今还没有发现的错误。1.4软件缺陷(Bug)我们常将软件测试活动中寻找软件缺陷的过程称为找Bug今天的计算机的Bug之多难以令人置信。例如,微软的Windows98操作系统改正了Windows95里面5000多个Bug!全世界有数千亿个Bug在计算机中飞来飞去!计算机含有这么多Bug有一个技术原因,就是软件越来越庞大复杂。软件Bug是指:软件(包括程序和文档)中不符合用户需求的问题。这里的软件Bug意思相当于我们的软件缺陷erdonghs@126.com软件缺陷案例人们常常不把软件当回事,没有真正意识到它已经深入渗透到我们的日常生活中,软件在电子信息领域里无处不在。现在有许多人如果一天不上网查看电子邮件,简直就没法过下去。我们已经离不开24小时包裹投递服务、长途电话服务和最先进的医疗服务了。然而软件是由人编写开发的,是一种逻辑思维的产品,尽管现在软件开发者采取了一系列有效措施,不断地提高软件开发质量,但仍然无法完全避免软件(产品)会存在各种各样的缺陷。软件中的缺陷有时会造成相当严重的损失和灾难!下面用4个软件缺陷的案例来说明!软件缺陷案例(1)迪斯尼的狮子王游戏软件缺陷。1994年秋天,迪斯尼公司发布了第一个面向儿童的多媒体光盘游戏——狮子王动画故事书(TheLionKingAnimatedStorybook)。尽管已经有许多其他公司在儿童游戏市场上运作多年,但是这次是迪斯尼公司首次进军这个市场,所以进行了大量促销宣传。结果,销售额非常可观,该游戏成为孩子们那年节假日的“必买游戏”。然而后来却飞来横祸。12月26日,圣诞节的后一天,迪斯尼公司的客户支持电话开始响个不停。很快,电话支持技术员们就淹没在来自于愤怒的家长并伴随着玩不成游戏的孩子们哭叫的电话之中。报纸和电视新闻进行了大量的报道。后来证实,迪斯尼公司未能在软件上对市前将投入使用的许多不同类型的PC机型进行兼容性测试。该软件在极少数系统中工作正常—-例如在迪斯尼程序员用来开发游戏的系统中——但在大多数公众使用的系统中却不能运行。软件缺陷案例(2)美国航天局火星登陆探测器事故1999年12月3日,美国航天局的火星极地登陆者号探测器试图在火星表面着陆时失踪。从理论上看,登陆的计划是这样的:在飞船降落到火星的过程中,打开降落伞减缓飞船的下降速度。降落伞打开后的几秒钟内,飞船的3条腿将迅速撑开,并在预定地点着陆。当飞船离地面1800米时,它将丢弃降落伞,点燃着陆推进器,缓缓地降落到地面。美国航天局为了省钱,简化了确定何时关闭着陆推进器的装置。为了替代其他太空船上使用的贵重雷达,他们在飞船的脚上装了一个廉价的触点开关,通过在计算机中设置一个数据位来关闭燃料。很简单,飞船的脚不“着地”,引擎就会点火。
软件缺陷案例遗憾的是,故障评估委员会在事后的测试中发现,当飞船的脚迅速撑开准备着陆时,机械震动在大多数情况下也会触发着陆开关,进而会设置一个的错误数据位。这样飞船开始着陆时,计算机极有可能关闭着陆推进器,这样飞船开始着陆时,计算机极有可能关闭推进器,而火星登陆飞船下坠1800米之后冲向地面,必然会撞成碎片。结果是灾难性的,但背后的原因却很简单。登陆飞船经过了多个小组测试。其中一个小组测试飞船的脚着落过程,但不检查那个关键的数据位,因为那不是这个小组负责的范围;另一个小组测试着陆过程的其他部分。但这个小组总是在开始测试前重置计算机,清除数据位。双方本身工作都没有什么问题,就是没有没有合在一起进行集成测试,后一个小组从来没有注意到数据位已经被错误设定,最终导致了灾难性事故的发生。
软件缺陷案例(3)英特尔奔腾浮点除法缺陷在计算机的“计算器”程序中输入以下算式:(4195835/3145727)*3145727-4195835如果答案是0,就说明计算机浮点运算没有问题。如果得出别的结果,就表示计算机浮点除法存在软件缺陷。英特尔为此缺陷拿出4亿多美元来支付更换芯片的费用!1994年10月30日,弗吉利亚州Lynchburg学院的ThomasR.Nicely博士在他的一个实验中,用奔腾PC机解决一个除法问题时,记录了一个想不到的结果,得出了“错误”的结论。他把发现的问题放到因特网上,随后引发了一场风暴,成千上万的人发现了同样的问题,以及其他得出错误结果的情形。万幸的是,这种情况很少见,仅仅在进行精度要求很高的数学、科学和工程计算中才会导致错误。大多数用来进行税务处理和商务应用的用户根本不会遇到此类问题。事实上,英特尔软件测试工程师在芯片发布之前进行内部测试时已经发现了这个问题。但管理层认为这没有严重到一定要修正,甚至需要公开的程度。这个事故不仅说明软件缺陷所带来的问题,更重要的是,发现软件缺陷后,要有正确对待软件缺陷的态度!erdonghs@126.com软件缺陷案例(4)北京奥运门票被迫暂停销售2007年10月9日上午9点,北京奥运会门票向境内公众的第二阶段预售正式启动。公众纷纷抢在第一时间订票,致使票务官网压力激增,承受了超过自身设计容量的8倍的流量,导致系统瘫痪。为此次门票销售提供技术系统平台的是北京歌华特玛捷票务有限公司。该票务官网设计的流量容量是每小时100万次,但瞬间承受了每小时800万次的流量压力,访问数量过大造成网络堵塞,使系统在启动后不久就出现了处理能力不足的问题。Web压力测试可以有效地测试一些web服务器的运行状态和相应时间等,对于WEb服务器的承受力测试是个非常好的手法!软件缺陷IEEE(1983)729软件缺陷一个标准的定义:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
软件缺陷的主要类型/现象:功能、特性没有实现或部分实现设计不合理,存在缺陷实际结果和预期结果不一致运行出错,包括运行中断、系统崩溃、界面混乱数据结果不正确、精度不够用户不能接受的其他问题,如存取时间过长、界面不美观erdonghs@126.com软件缺陷的定义erdonghs@126.com
软件缺陷即计算机系统或程序中存在的任何一种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷、瑕疵。缺陷会导致软件产品在某种程度上不能满足用户的需求。对于软件缺陷的精确定义,通常有以下5条:软件未达到产品说明书要求的功能软件出现了产品说明书指明不会出现的错误软件功能超出了产品说明书规定的功能软件未实现产品说明书虽未明确指出但应该实现的目标软件难以理解,不易使用,运行缓慢或者最终用户认为使用效果不好软件缺陷为了更好地理解每一条规则,我们以计算器为例进行说明。计算器的产品说明书声称它能够准确无误地进行加、减、乘、除运算。当你拿到计算器后,按下(+)键,结果什么反应也没有,根据第1条规则,这是一个缺陷。假如得到错误答案,根据第1条规则,这同样是一个缺陷。若产品说明书声称计算器永远不会崩溃、锁死或者停止反应。当你任意敲键盘,计算器停止接受输入,根据第2条规则,这是一个缺陷。若用计算器进行测试,发现除了加、减、乘、除之外它还可以求平方根,说明书中从没提到这一功能,根据第3条规则,这是软件缺陷。软件实现了产品说明书未提到的功能若在测试计算器时,发现电池没电会导致计算不正确,但产品说明书未指出这个问题。根据第4条规则,这是个缺陷第5条规则是全面的。如果软件测试员发现某些地方不对劲,无论什么原因,都要认定为缺陷。如“=”键布置的位置使其极其不好按;或在明亮光下显示屏难以看清。根据第5条规则,这些都是缺陷。软件缺陷属性软件缺陷属性包括缺陷标识、缺陷症状、缺陷类型、缺陷严重程度等。缺陷标识:是标记某个缺陷的唯一的表示,可以使用数字序号表示。缺陷症状:包括界面缺陷、不友好行为、非法输入、文档缺陷、无效操作、数据错误、功能设计缺陷、系统崩溃、意外行为等缺陷类型:是根据缺陷的自然属性划分缺陷种类。见软件缺陷类型列表:软件缺陷属性4.缺陷严重程度:是指因缺陷引起的故障对软件产品的影响程度,所谓“严重性”我指的是在测试条件下,一个错误在系统中的绝对影响。见软件缺陷严重等级列表:缺陷严重等级
描述
致命(Fatal)系统任何一个主要功能完全丧失、用户数据受到破坏、系统崩溃、悬挂、死机,或者危及人身安全
严重
(Critical)系统的主要功能部分丧失、数据不能保存,系统所提供的功能或服务受到明显的影响
一般
(Major)系统的部分功能没有完全实现,但不影响用户的正常使用,例如:提示信息不太准确;或用户界面差、操作时间长等一些问题。
较小
(Minor)
使操作者不方便或遇到麻烦,但它不影响功能的操作和执行,如个别的不影响产品理解的错别字、文字排列不整齐等一些小问题。
软件缺陷类型列表缺陷类型
描述
功能
影响了各种系统功能、逻辑的缺陷用户界面
影响了用户界面、人机交互特性,包括屏幕格式、用户输入灵活性、结果输出格式等方面的缺陷
文档
影响发布和维护,包括注释,用户手册,设计文档
软件包
由于软件配置库、变更管理或版本控制引起的错误
性能
不满足系统可测量的属性值,如执行时间,事务处理速率等。
系统/模块接口
与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表等不匹配、冲突。
软件缺陷状态软件缺陷除了严重性之外,还存在反映软件缺陷处于一种什么样的状态,便于跟踪和管理某个产品的缺陷,可以定义不同的bug状态。激活状态:问题还没有解决,测试人员新报的bug,或验证后bug仍然存在。已修正状态:开发人员针对所存在的缺陷,修改程序,认为已解决问题,或通过单元测试。关闭或非激活状态:测试人员验证已经修正的bug后,确认bug不存在以后的状态。
软件缺陷产生的原因5.软件缺陷的原因软件本身文档错误数据考虑不周全引起强度或负载问题对边界考虑不周全,漏掉某几个边界条件造成的错误对一些实时应用系统,保证精确的时间同步,否则容易引起时间上不协调、不一致性带来的问题没有考虑系统崩溃后的安全性、可靠性的隐患硬件或系统软件上存在的错误软件开发标准或过程上的错误
软件缺陷产生的原因2
技术问题算法错误语法错误计算的精度问题系统接口不合理,造成系统性能问题接口参数不匹配,导致模块集成出问题3
团队工作系统分析时对客户的需求不是十分清楚,或者与用户沟通存在一些困难不同阶段的开发人员相互理解不一致,软件设计的需求分析结果的理解偏差,编程人员对系统设计规格说明书中某些内容重视不够,或存在误解设计或编程上的一些假定或依赖性,没有得到充分地沟通。
erdonghs@126.com软件缺陷在不同阶段的分布在真正的程序测试之前,通过审查、评审会可以发现更多的缺陷。规格说明书的缺陷在需求分析审查、设计、编码、测试等过程中会逐步发现,而不能仅在需求分析一个阶段发现erdonghs@126.com缺陷成本erdonghs@126.com软件缺陷造成的修复费用随着时间的推移呈指数级增长!软件缺陷erdonghs@126.com6.软件缺陷的组成我们知道软件缺陷是由很多原因造成的,如果把它们按需求分析结果——规格说明书,系统设计结果,编程的代码等归类起来,比较后发现,结果规格说明书是软件缺陷出现最多的地方,见下图。软件缺陷为什么产品规格说明书是软件缺陷最多的地方?其主要原因是:由于软件产品的设计、开发的特性的描述不够清晰!软件开发人员与用户沟通存在较大困难,开发人员对要开发的产品功能理解与用户不一致!需求变化的不一致性对规格说明书不够重视!没有整个开发队伍中进行充分的沟通!软件缺陷的分类按性质可将软件缺陷分为5类:功能缺陷:规格说明缺陷,实现的功能与用户要求不一致等系统缺陷:外部、内部接口缺陷,硬件结构缺陷、OS缺陷等加工缺陷:算术和操作缺陷、控制缺陷、静态逻辑缺陷等数据缺陷:动态、静态数据缺陷、数据结构缺陷等代码缺陷:语法缺陷等按软件生命周期不同阶段可将软件缺陷分类为:问题定义(需求分析)缺陷。分析员研究用户的要求后所编写的文档中出现的缺陷规格说明缺陷。规格说明说明与问题定义不一致所产生的缺陷设计缺陷。系统设计与需求规格说明中的功能说明不相符。编码缺陷。与缺陷相关的几个概念软件错误(error):在软件生命周期内出现的不可接受的人为错误;软件缺陷(bug):是软件错误的结果,指软件产品预期属性的偏离现象;对产品规格说明的偏离。如:规格说明规定了a+b=>c,而软件产品实际上做的不是这样。对客户(customer)/用户(user)期望的偏离,即用户要求未体现在产品中(可能是规格说明有疏漏,也可能是实现中的问题。)软件失效(failure):当缺陷执行时会发生失效,是指软件运行时产生的不可接受的外部行为结果;软件故障(fault):是指软件运行过程中产生的不可接受的内部状态。常见的软件错误有:软件需求错误,功能和性能错误,软件结构错误,数据错误,软件实现和编码错误,软件集成错误,软件系统结构错误,测试定义和测试执行错误。1.4测试用例(TestCase)测试用例就是为了高效率地发现软件缺陷而精心设计的少量测试数据。好的测试用例应该能发现尚未发现的软件缺陷。通常在测试设计阶段就要进行测试用例的设计!测试用例是为某个特殊目标而编制的一组测试输入、执行条件、预期结果,用于核实是否满足某个特定软件的需求。IEEE610.12给出测试用例的定义如下:测试用例是一组输入(运行前提条件)和为某特定目标而生成的预期结果及与之相关的测试规程的集合,或称为为有效地发现缺陷的最小测试执行单元测试用例是一个文档,详细说明测试的输入、期望输出和为一测试项所准备的一组执行条件erdonghs@126.com测试用例(TestCase)测试用例指的是:在测试执行之前设计一套详细的测试方案,包括:测试环境、测试步骤、测试数据和测试结果。可用一个简单等式来表示:测试用例=输入+输出+测试环境“输入”包括测试数据和操作步骤“输出”指的是期望结果“测试环境”指的是系统环境设置测试环境测试软件的第一件事就是搭建软件的测试环境软件测试环境就是软件运行的平台:测试环境=软件+硬件+网络硬件:主要包括PC机、笔记本、服务器、各种PDA终端软件:这里主要指软件运行的操作系统网络:主要针对的是C/S结构和B/S结构的软件一个合格测试工程师,不仅要熟悉软件知识,还要了解硬件和网络的相关知识。erdonghs@126.com怎么搭建测试环境搭建测试环境的几个要点:真实项目软件:参考系统的最终使用环境。例如:
搭建测试环境时就要按照上面的配置来进行.产品软件:这个相对来说比较复杂,工作量也大。比如,现在要测试微软Word2000,怎样来搭建测试环境呢?由于最终用户使用什么样的系统都有可能,如:硬件联想品牌机,P42.4G,RAM512M软件Windows2000Professional网络10M局域网erdonghs@126.com怎么搭建测试环境2.
干净:测试环境尽量不要安装其他与被测软件无关的软件一般我们测试一款软件时,都要求在一个刚刚装好操作系统的机器上测试.3.无毒:测试环境不会中毒4.独立:测试环境和开发环境独立硬件品牌机,兼容机,笔记本软件Windows98,WindowsMe,WindowsNT,Windows2000,WindowsXP网络不需要erdonghs@126.com软件环境的分类软件开发环境:软件在开发过程中使用的环境,一般包括:VB、VC等一些开发工具软件生产环境:最终用户使用的环境软件测试环境要与软件生产运行环境保持一致,要从开发环境中独立出来。erdonghs@126.com163邮箱登录测试用例用例编号测试步骤输入数据预期结果1输入用户名和密码,点击”登录“按钮用户名:user密码:12345成功登录user的个人邮箱2输入用户名和密码,点击”登录“按钮用户名:user密码:123提示:”密码错误,请重新输入!“3不输入用户名和密码,点击”登录“按钮提示:”请输入用户名和密码“上面只写了3条用例,其实如果全面考虑的话,可写出20条以上用例erdonghs@126.com测试用例模板常用测试模板有两种:Excel模板和Word模板,以Excel模板的应用更普遍些!两种模板比较Excel模板:每个用例占一行,便于集中管理和维护,一般适合写功能用例Word模板:每个用例独占一页,描述的较清楚,但比较分散,适合写性能用例erdonghs@126.com测试用例模板(Excel模板)erdonghs@126.com测试用例模板(Excel模板)项目/软件:需要填写项目或软件的名称程序版本:该软件目前的版本号测试环境:测试的硬件/软件和网络环境编制人:略编制时间:略功能模块:被测模块的名称功能特性:被测模块的主要功能测试目的:测试所期望达到的目标预置条件:在测试该模块之前需要做哪些前期工作erdonghs@126.com测试用例模板(Excel模板)参考信息:测试该模块需要参考的需求文档的章节特殊规程说明:相当于备注用例编号:每个用例有唯一编号,一般为拼音缩写+数字,比如:DL001表示登录模块的第一个测试用例测试步骤:操作描述输入数据:测试数据预期结果:程序应输出的结果测试结果:程序实际输出的结果erdonghs@126.comerdonghs@126.com测试用例模版(WORD模版)测试用例的设计原则测试用例除了应该符合基本的测试用例编写规范,还要遵守以下几条基本设计原则:(1)保证测试用例的明确性。测试人员要尽量避免测试用例存在含糊的因素,否则会影响测试工作的进行,影响测试结果的准确性。清晰的测试用例会使测试人员在测试过程中不会出现模棱两可的测试结果。在测试过程中,测试用例的测试结果是唯一的,即通过、没通过或未进行测试。如果测试没有通过,一般会生成相应的测试错误报告;如果测试没有进行,也会生成相应的原因说明报告,如测试用例本身具有错误性、测试用例的不适用性等等。例如,测试用例这样描述:用户正确操作,系统正常运行;用户进行非法操作,系统不能正常运行。在这里,测试用例没有具体说明什么是正确的操作,什么是非法的操作。另外,从测试用例描述中也无法知道什么是系统的正常或不正常的运行状态。这就必然导致测试人员对测试用例的不确定理解,从而引发测试中的错误问题。测试用例的设计原则(2)保证测试用例的代表性。 尽量将具有相似功能的测试用例抽象合并。这样,每一个测试用例都具有代表性,可以测试一类或一系列的系统功能。(3)保证测试用例的简洁性。 冗长和复杂的测试用例是不应该出现的,因为这样的用例可读性差、不利于测试人员理解和操作。简洁的测试用例可以让测试过程目的明确,让测试结果具有唯一性。编写测试用例的注意事项为什么要写测试用例便于团队交流便于重复测试便于跟踪统计便于用户自测什么时候写用例通常在测试设计阶段来写测试用例,即在《需求规格说明书》和《测试计划》都已完成之后谁来写测试用例一般测试用例是由测试设计人员来编写,由测试执行人员来执行根据什么写测试用例编写测试用例的唯一依据是用户需求,具体的参考资料是<软件需求规格说明书>和软件原型.原型一般指没有嵌入全部源代码的软件界面.erdonghs@126.com软件质量的内涵软件质量是客户满意度的体现客户+
质+量?erdonghs@126.com1.5软件质量(Quality)IEEE<<StandardGlossaryofSoftwareEngineeringTerminology>>软件质量:软件产品具有满足规定的和潜在用户需求的能力的特性与特性总和(ISO8492)软件质量:软件产品满足使用要求的程度软件质量是一个复杂的多层面概念:从用户角度出发,质量是对需求的满足。软件需求是度量软件质量的基础。从软件产品角度出发,质量是软件的内在特征。从软件开发过程出发,质量是对过程规范的符合。
erdonghs@126.com软件质量通常,软件质量由以下几个方面进行评价:软件需求是衡量软件质量的基础,不符合需求的软件就不具备质量。设计的软件应在功能、性能等方面都符合要求,并能可靠地运行。软件结构良好、易读、易于理解,并易于修改、维护软件系统具有友好的用户界面,便于用户使用软件生命周期中各阶段的文档齐全、规范高质量软件标准体系产品质量:是人们实践产物的属性和行为,是可以认识,可以科学地描述的。并且可以通过一些方法和人类活动,来改进质量.质量模型:McCall模型,Boehm模型,ISO9126模型过程质量:
软件能力成熟度模型
CMM(CapabilityMaturityModel).
国际标准过程模型
ISO9000
软件过程改进和能力决断
SPICE(SoftwareProcessImprovementandCapabilitydEtermination)
在商业过程中有关的质量内容:
培训、成品制作、宣传、发布日起、客户、风险、成本、业务等erdonghs@126.com软件质量标准新版GB/T16260标准在总标题《软件工程产品质量》下共分为4个部分:质量模型:GB/T16260.1外部度量:GB/T16260.2内部度量:GB/T16260.3使用质量的度量:GB/T16260.4GB/T16260.1:质量模型部分描述了关于软件产品质量的两部分模型:内部质量与外部质量的模型使用质量的模型。外部质量和内部质量模型第一个模型由6个质量特性和21个子特性组成。当用软件本身的内部属性(如软件的规模、复杂性或模块间的独立性等)来刻画软件产品质量时,所体现的是内部质量;而当软件在特定环境下运行时所表现的行为则代表了产品的外部质量。外部质量和内部质量模型适用性准确性互操作性安全性依从性成熟性容错性易恢复性易理解性易学习性易操作性时间特性资源特性易分析性易变更性稳定性易测试性适应性易安装性共存性易替换性功能性可靠性易用性效率可维护性可移植性外部质量和内部质量内部度量元、外部度量元1.5.1质量管理质量管理制定计划需求评审设计审查程序代码审查测试用例审查
测试跟踪监督质量保证质量控制质量管理质量管理是指以组织为质量中心,以企业全员参与为基础,为追求客户满意和组织所有受益者满意而建立和形成的一整套质量方针、目标和体系。软件质量管理包括两个核心过程:质量保证(QA):评估整个项目满足相关的质量要求,目标是预防缺陷和错误的发生。质量控制(QC):监控是否符合相应的质量标准、满足项目管理者以及整个项目组的要求,用于查找缺陷和错误。质量保证和质量控制什么是QA?
QA是一组计划好的系统化预防活动,用来监控和改善软件开发过程。QA活动对软件产品在多大程度上符合预定义标准作出评价,并为软件开发定义规程。这里所说的规程由一系列活动组成,设计这些活动的目标在于预防软件缺陷
什么是QC?
QC是将产品质量与指定标准进行比较的过程,若质量与标准不符,则采取相应的措施。QC面向缺陷检查,而非预防缺陷质量保证和质量控制QA面向过程,QC面向产品。QA着重于通过对软件开发过程持续的监管和改进来防范缺陷,QC则着重于对产品进行缺陷检查。换言之,QA确保你按正确的方式做正确的事,而QC则确保你所做的结果符合预先的期望.1.5.2软件质量保证的目的软件质量保证(SQA):
是指为了保证软件质量而对软件开发过程和被开发的软件产品进行的有计划、有系统的管理活动。其目的是使软件开发过程对于管理人员来说是可见的。它通过对软件产品和活动进行评审和审计,验证软件是符合标准的。软件质量保证在项目开始时就一起参与建立计划、标准和过程,以使软件项目满足用户要求!erdonghs@126.com1.5.3软件质量保证的工作内容软件质量保证工作有以下几个方面的工作:参与制定软件质量要求组织正式评审软件测试管理对软件的变更进行控制对软件的质量进行度量对软件质量情况及时记录和报告erdonghs@126.com软件质量保证的工作内容软件质量保证和质量管理当前相关的标准有:ISO9000系列标准。软件测试人员可以以此系列标准规范、约定软件的开发过程,提高软件产品质量CMM软件能力成熟度模型,此为软件行业标准模型。它具体等级划分为5个等级:等级1(初始级),等级2(可重复级),等级3(已定义级),等级4(已管理级),等级5(优化级)。1.5.3软件开发各阶段SQA的目标软件质量保证组在项目开始时就一起参与建立计划、标准和过程。软件开发各阶段SQA的目标如下:需求分析阶段确保客户所需的系统是可行的确保客户指定的需求确实能够满足他们的真正要求避免开发者与客户之间的误解向客户提供为满足所提出的需求而实际构建的适当的软件系统软件规格说明书编制阶段通过建立需求跟踪文档,确保规格说明书与系统需求保持一致确保规格说明书能适当地改进系统的灵活性、可维护性及性能确保已经建立了测试策略确保已经建立了现实的开发进度表,包括预定的评审确保已经为系统设计了正式的变更规程erdonghs@126.com1.5.3软件开发各阶段SQA的目标3
软件设计阶段确保已建立用于描述设计的标准,并确保遵循这些标准确保适当地控制并用文档记录对设计进行的变更确保在系统设计组建立按照商定的准则得到批准之后才开始编程确保对设计的评审按照进度进行编码阶段确保代码遵循已建立的风格、结构和文档标准确保代码经过适当测试和集成,同时对编码模块的修改得到适当的标识查看代码编写是否遵循既定的进度确保代码评审按照进度进行1.5.3软件开发各阶段SQA的目标5
测试阶段确保测试计划的建立和遵循确保创建的测试计划能够满足所有系统规格说明书的要求确保经过测试和返工后的软件与规格说明书保持一致6维护阶段确保代码和文档的一致性确保对已建立的变更控制过程进行监测,包括将变更集成到软件的产品版本中的过程确保对代码的修改遵循编码标准,并且要对其进行评审,不要破坏整个代码结构确保代码评审按照进度进行erdonghs@126.com1.5.4软件质量保证与软件测试的关系软件质量保证与软件测试的关系软件质量保证与软件测试二者之间既存在包含又存有交叉的关系。软件测试能够找出软件缺陷,确保软件产品满足需求。但是测试不是质量保证,二者并不等同。测试可以查找错误并进行修改,从而提高软件产品的质量。软件质量保证则是避免错误以求高质量,并且还有其他方面的措施以保证质量问题。从共同点的角度看,软件测试和软件质量保证的目的都是尽力确保软件产品满足需求,从而开发出高质量的软件产品。两个流程都是贯穿整个软件开发生命周期中。1.5.4质量和测试软件质量保证的工作主要为:制定软件质量要求、组织正式审查、软件测试管理、对软件的变更进行控制、对软件质量进行度量、对软件质量情况及时记录和报告。软件质量保证的职能是向管理层提供正确的可行信息,从而促进和辅助设计流程的改进。软件质量保证的职能还包括监督测试流程,这样测试工作就可以被客观地审查和评估,同时也有助于测试流程的改进。二者的不同之处在于:软件质量保证工作侧重对软件开发流程中的各个过程进行管理与控制,杜绝软件缺陷的产生。而测试则是对已产生的软件缺陷进行修复。测试在保证质量方面的主要职责是找出那些在设计开始时就本应该避免的错误并进行修复软件质量保证的任务首先是避免错误,要做到这一点,除了测试外还需要其他方面的处理1.5.4质量和测试软件测试和软件质量是分不开的。测试是手段,质量是目的软件质量保证主要有两种途径:通过贯彻软件工程各种有效的技术方法和措施以尽量减少软件开发过程中的错误通过分析软件和测试软件来发现和纠正错误软件测试与软件质量保证的区别
erdonghs@126.com项目软件测试质量保证工作性质技术性工作管理性工作对象软件产品(包括阶段产品)软件过程焦点事后检验强调预防范围在研发部门和技术部门在公司层面1.5.5软件测试的规范软件测试国家标准GB/T9386-2008《计算机软件测试文档编制规范》GB/T15532-2008《计算机软件测试规范》GB/T8567-2006《计算机软件文档编制规范》GB/T8566-2007《信息技术软件生存周期过程》GB/T18905-2002《软件工程产品评价》GB/T17544-1998《信息技术软件包质量要求和测试》GB/T15532-1995《计算机软件单元测试规范》GB/T9386-1988《计算机软件测试文件编制规范》1.5.5软件测试的规范2软件测试行业标准IEEEStd829-2008软件和系统测试文档的标准。IEEEStd1008-1997软件单元测试标准3企业规范企业规范是由一些大型企业或公司组织制订。针对软件工程工作的需要,制订适用于本部门的规范4项目规范项目规范是由某一科研生产项目组织制订,为该项任务专用的软件工程规范,协助项目组构建符合自身要求的软件测试体系。
1.6与测试相关的几个概念1排错(debug)排错是查找、分析和纠正错误的过程测试的任务是尽可能多地发现软件的缺陷和错误排错的任务是进一步诊断和改正程序中潜伏的缺陷和错误排错的两类活动:确定程序中可疑的缺陷或错误的确切性质和位置对程序(设计、编码)进行修改,排除潜在的缺陷或错误与测试相关的几个概念2验证和确认(V&V)“验证”是检验软件工作产品是否符合规定的设计要求,而“确认”过程则要证明所开发的最终产品在其预定义的环境中能否发挥预定的作用,满足客户使用的需求。“验证”是以产品设计规格说明作为依据,而“确认”是以客户需求为目标。确认是在软件开发结束时,对软件进行评价,确认软件和其需求是否一致的过程,目的是证实在一个给定的外部环境中软件的正确性。验证和确认(V&V)Verification:Arewebuildingtheproductright?是否正确地构造了软件?即是否正确地做事,验证开发过程是否遵守已定义好的内容。验证产品满足规格设计说明书的一致性验证有如下3个含义:确定软件生命周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程程序正确性的形式证明在设计和开发中,验证是指对某项指定活动的结果进行检查的过程,如:评审、测试、检查等各类活动验证的例子有:需求评审、设计评审、代码中走查和代码审查等验证和确认(V&V)Validation:Arewebuildingtherightproduct是否构造了正是用户所需要的软件?即是否正在做正确的事。验证产品所实现的功能是否满足用户的需求,其目的是证实在一个给定的外部环境中软件的正确性。确认包括需求规格说明书的确认和程序的确认,而程序的确认又分为静态确认和动态确认。确认的例子有:单元测试、集成测试、系统测试和用户验收测试等人们通常认为软件工程中开发程序是一个复杂而困难的过程,需要花费大量的人力、物力和时间,而测试程序则比较容易,不需要花费太多的精力。这其实是人们对软件工程开发过程理解上的一个误区。在实际的软件开发过程中,作为现代软件开发工业一个非常重要的组成部分,软件测试正扮演着越来越重要的角色。随着软件规模的不断扩大,如何在有限的条件下对被开发软件进行有效的测试正成为软件工程中一个非常关键的课题。1.7软件测试的复杂性与经济性分析软件测试的复杂性软件测试是一项细致并且需要具备高度技巧的工作,稍有不慎就会顾此失彼,发生不应有的疏漏。下面分析了容易出现问题的根源。(1)完全测试是不现实的在实际的软件测试工作中,不论采用什么方法,由于软件测试情况数量极其巨大,都不可能进行完全的测试。所谓完全测试,就是让被测程序在一切可能的输入情况下全部执行一遍。通常也称这种测试为“穷举测试”。穷举测试会引起以下几种问题:所需的输入量太大;测试的输出结果太多;软件执行路径太多;软件的规格说明书存在主观性。不要试图穷举测试穷举测试是指测试时考虑所有可能的输入值。比如,一个程序需3个整型的输入数据,若计算机的字长为32位,则每个数据可能取的值有232个,3个数的排列组合共有:
232×232×232=296(种)若每执行一次需1ms,则需2万年既然穷举测试行不通,则需要在测试用例上多下功夫,设计出优秀的测试用例,用最少的测试用例达到最大的覆盖率软件测试的复杂性E.W.Dijkstra的一句名言对测试的不彻底性作了很好的注解:“程序测试只能证明错误的存在,但不能证明错误的不存在”。由于穷举测试工作量太大,实践上行不通,这就注定了一切实际测试都是不彻底的,也就不能够保证被测试程序在理论上不存在遗留的错误。软件测试的复杂性(2)杀虫剂现象1990年,BorisBeizer在其编著的《SoftwareTestingTechniques》(第二版)中提到了“杀虫剂怪事”一词,同一种测试工具或方法用于测试同一类软件越多,则被测试软件对测试的免疫力就越强。这与农药杀虫是一样的,老用一种农药,则害虫就有了免疫力,农药就失去了作用。由于软件开发人员在开发过程中可能碰见各种各样的主客观因素,再加上不可预见的突发性事件,所以再优秀的软件测试员采用一种测试方法或者工具也不可能检测出所有的缺陷。为了克服被测试软件的免疫力,软件测试员必须不断编写新的测试程序,对程序的各个部分进行不断地测试,以避免被测试软件对单一的测试程序具有免疫力而使软件缺陷不被发现。软件测试的复杂性(3)软件测试的代价
如右图所示的最优测试量示意图可以观察到,当软件缺陷降低到某一数值后,随着测试量的不断上升软
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年采购工作下半年计划及目标
- 2026年消防工程施工组织计划书
- 2026年国庆节期间安全工作安排部署
- 基于成果导向(OBE)的医学教育成本控制与质量提升
- 基于大数据的成本预测与预算编制
- 基于区块链的医院成本数据安全与共享
- 2026年消防月度工作计划
- 基于价值医疗的医院成本管控评价
- 2026年商场运营下半年工作计划
- 基于RBRVS的成本绩效评价
- 河北石家庄文旅投建设集团有限公司招聘笔试题库2025
- 分式方程第2课时课件北师大版八年级数学下册
- 招投标专项检查报告
- 高速铁路桥隧建筑物病害及状态等级评定 涵洞劣化项目及等级
- 安徽省定远县公开选调教师(第二批)和教研员笔试历年高频考点试题含答案带详解
- 小针刀治疗腱鞘炎-课件
- 核磁共振(NMR)波谱学原理与应用课件
- DB11T 364-2023 建筑排水柔性接口铸铁管管道工程技术规程
- 国际经济学克鲁格曼中文
- GB/T 1920-1980标准大气(30公里以下部分)
- “天然气11.20”事故纪实(定)
评论
0/150
提交评论