1、 毕业设计(论文)题 目: 基于工作岗位的软件技术专业设 计作品或研究 专 业: 移动互联 摘要随着现代生活水平的提高,人们对生活质量的要求也就越来越高,越来越向舒适便捷的生活而努力。各种各样的系统迅速地出现,方便着人们的生活。为了更能满足人们的需求,一个优秀的系统不光要有全面强大的功能,而且质量也要有一定的保障。如果有两个系统,一个功能特别多,但是经常运行出错或闪退,而另一个功能不及第一个多,但是整个系统运行很流畅,很少会出现系统报错,我相信大多数人会选择第二款。软件测试就是规避这些问题出现的一个重要的过程。所以在这篇文章中,我是基于现有的工作,对软件测试进行更近一步的研究,将运用到一些参考
2、文献及文件,来对软件测试的相关技术,运用的方法,过程等进行研究,在此次研究中,完成了我预期的研究目标。第 1 章 绪论1.1 软件测试的背景与意义软件测试的发展史软件测试是伴随着软件的产生而产生的。早期的软件开发过程中,那时软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试” ,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工作。对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试 到了上世纪 80 年代初期,软件和 IT 行业进入了大发展,软件趋向大型化、高复杂度,软件的质量越来越重要。这个
3、时候,一些软件测试的基础理论和实用技术开始形成,并且人们开始为软件开发设计了各种流程和管理方法,软件开发的方式也逐渐由混乱无序的开发过程过渡到结构化的开发过程,以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征。人们还将“质量”的概念融入其中,软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且将测试作为软件质量保证(SQA)的主要职能,包含软件质量评价的内容,Bill Hetzel 在 软件测试完全指南(Complete Guide of Software Testing)一书中指出 :“测试是以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度量。
4、”这个定义至今仍被引用。软件开发人员和测试人员开始坐在一起探讨软件工程和测试问题 软件测试已有了行业标准(IEEE/ANSI ),1983 年 IEEE 提出的软件工程术语中给软件测试下的定义是:“ 使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别” 。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。它再也不是一个一次性的,而且只是开发后期的活动,而是与整个开发流程融合成一体。软件测试已成为一个专业,需要运用专门的方法和手段,需要专门人才和专家来承担。 进入上世纪 90 年代,软件行业开始迅猛发展,软件的规
5、模变的非常大,在一些大型软件开发过程中,测试活动需要花费大量的时间和成本,而当时测试的手段几乎完全都是手工测试,测试的效率非常低;并且随着软件复杂度的提高,出现了很多通过手工方式无法完成测试的情况,尽管在一些大型软件的开发过程中,人们尝试编写了一些小程序来辅助测试,但是这还是不能满足大多数软件项目的统一需要。于是,很多测试实践者开始尝试开发商业的测试工具来支持测试,辅助测试人员完成某一类型或某一领域内的测试工作,而测试工具逐渐盛行起来。人们普遍意识到,工具不仅仅是有用的,而且要对今天的软件系统进行充分的测试,工具是必不可少的。测试工具可以进行部分的测试设计、实现、执行和比较的工作。通过运用测试
6、工具,可以达到提高测试效率的目的。测试工具的发展,大大提高了软件测试的自动化程度,让测试人员从繁琐和重复的测试活动中解脱出来,专心从事有意义的测试设计等活动。采用自动比较技术,还可以自动完成测试用例执行结果的判断,从而避免人工比对存在的疏漏问题。设计良好的自动化测试,在某些情况下可以实现 “ 夜间测试 ” 和 “ 无人测试 ” 。在大多数情况下,软件测试自动化可以减少开支,增加有限时间内可执行的测试,在执行相同数量测试时节约测试时间。 而测试工具的选择和推广也越来越受到重视。在软件测试工具平台方面,商业化的软件测试工具已经很多,如捕获/回放工具、Web 测试工具、性能测试工具、测试管理工具、代
7、码测试工具等等,这些都有严格的版权限制且价格较为昂贵,但由于价格和版权的限制无法自由使用,当然,一些软件测试工具开发商对于某些测试工具提供了 Beta 测试版本以供用户有限次数使用。幸运的是,在开放源码社区中也出现了许多软件测试工具,已得到广泛应用且相当成熟和完善。软件测试的意义软件测试的意义在于,保证发布出去的产品达到了一定的质量标准。软件测试工程师的工作就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。 使用人工或者自动手段来运行或测
8、试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别. 它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度 (completeness)和质量(quality) 的软件过程;是 SQA(software quality assurance)的重要子域。软件测试的重要性测试很重要,因为软件错误可能很昂贵甚至很危险,一个 bug 越长越不被发现,它就可能带来更大的隐患。此外,如果测试团队错过了准确详尽地捕捉或识别风险和软件问题,会导致一些灾难发生,那么就需要付出昂贵的代价来检测bug,所以软件漏洞或是 B
9、ug 可能会导致货币和人员的损失,历史上太多这样的例子,下面我们就来看看这些经典的事例。2015 年 4 月,伦敦彭博终端由于软件漏洞宕机,导致金融市场上超过 30 万交易商受到影响。迫使政府推迟 30 亿英镑的债务出售。日产尼桑汽车由于安全气囊感应探测器的软件故障,召回超过 100 万辆汽车。据报道,由于此软件故障导致两起事故。星巴克咖啡由于 POS 系统的软件故障无法处理交易,因此被迫关闭了美国和加拿大约 60的商店。亚马逊的一些第三方零售商看到他们的产品由于软件故障价格全部被降至 1 英磅,由此导致惨重损失。Windows 10 中的漏洞,此问题使用户能够通过 win32 系统中的缺陷脱
10、离安全沙箱。2015 年, F-35 战斗机成为软件漏洞的受害者,导致其无法正确检测目标。1994 年 4 月 26 日,中国航空公司空中客车 A300 因软件故障而坠毁,造成264 人无辜死亡1985 年,加拿大的 Therac-25 放射治疗机由于软件 Bug 而发生故障,向患者提供了致命的辐射剂量,造成 3 人死亡,3 人严重受伤。1999 年 4 月,一个软件漏洞导致 12 亿美元的军事卫星发射失败,这是历史上最昂贵的事故。1996 年 5 月,一个软件问题导致美国一家大型银行 823 名客户的银行账户被记入 9.2 亿美元。2018 年 6 月 27 日,阿里云出现大规模故障,原因为
11、上线自动化运维系统触发未知 Bug,导致部分产品访问链接不通,影响时间约半小时,不知道云中的程序猿们年终奖是否会泡汤。1.2 软件测试的理论基础软件测试的定义关于软件测试的定义,不同学者有不同的观点, 了解软件测试的定义, 对于日后在工作中是很有帮助的,首先要明确测试的定义,所谓测试, 就是以检验产品是否满足需求为目标。而软件测试,自然是为了发现软件(产品)的缺陷而运行软件(产品)比较标准的软件测试的定义是:在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。IEEE 标准的定义:使用人工或自动的手段来运行或测定某个系统的过程,其目的在于检验;它是否满足规定的需求或是弄清预期结果与实
12、际结果之间的差别。对软件测试还有一些不同的定义。G.J.Myers 给出的定义: “程序测试是为了发现错误而执行程序的过程” 。这个定义被软件测试业界所认可,并经常被引用。但实际上,这样的定义还不能完全反映软件测试的内涵,它仍局限于“程序测试” 。随后,G.J.Myers 进一步提出了有关程序测试的 3 个重要观点,那就是:(1)测试是为了证明程序有错,而不是证明程序无错误。(2)一个好的测试用例在于它能发现至今未发现的错误。(3)一个成功的测试是发现了至今未发现的错误的测试。要完整地理解软件测试,就要从不同方面和视角去辨证地审视软件测试。概括起来,软件测试就是贯穿整个软件开发生命周期、对软件
13、产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中存在的各种问题与用户需求、预先的定义不一致的地方。1.3 研究思路我将运用理论结合实践的方法进行本次研究,打算从测试方法、需求分析、软件项目测试过程进行研究。1.4 研究架构这篇文章由摘要、绪论、相关技术、需求分析、软件项目测试过程构成,其中摘要是简要论述了这篇文章的形成原因,绪论则是这个研究的背景和意义,软件项目测试过程则需依靠需求分析来完成。第 2 章 相关技术2.1 相关技术介绍按阶段划分:单元测试、集成测试、接口测试、系统测试、验收测试按是否查看代码及是否执行程序划分:动态测试、静态测试;黑盒测试、白盒测
14、试、灰盒测试、自动化测试。2.1.1 单元测试( Unit Testing)单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。单元测试又称为模块测试 测试阶段:编码后 测试对象:最小模块 测试人员:白盒测试工程师或开发工程师 测试依据:代码和注释+详细设计文档 测试方法:白盒测试 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试2.1.2 集成测试( Integration Testing)集成测试也称联合测试、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作
15、。主要目的是检查软件单位之间的接口是否正确。 测试阶段:一般单元测试之后进行 测试对象:模块间的接口 测试人员:白盒测试工程师或开发工程师 测试依据:单元测试的模块+概要设计文档 测试方法:黑盒测试与白盒测试相结合 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响2.1.3 系统测试(System Testing)将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段 测试阶段:集成测试通过之后 测试对象:整个系统(软、硬件) 测试人员:黑盒测试工程师 测试依据:需求规格说明文档 测
16、试方法:黑盒测试 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等2.1.4 验收测试( Acceptance Testing)验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。总结验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。 测试阶段:系统测试通过之后 测试对象:整个系统(包括软硬件)。 测试人员:主要是最终用户或者需求方。 测试依据:用户需求、验收标准 测试方法:黑盒测试 测试内容:同系统测试(功能及其各类文档)2.1.5 黑盒测试(Black-box Testing
17、)黑盒测试,又称功能测试或者数据驱动测试。是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。软件测试人员以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。2.1.6 白盒测试(White-box Testing)白盒测试,又称结构测试或者逻辑驱动测试。白盒测试是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆
18、盖、判定/ 条件覆盖、条件组合覆盖和路径覆盖。白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。2.1.7 灰盒测试(Gray-box Testing)灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的
19、运行状态。2.1.8 静态测试(Static Testing)静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。 检查项:代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核;走查、审查与技术复审手册。 静态质量:度量所依据的标准是 ISO9126。在该标准中,软件的质量用以下几个方面来衡量,即功能性(Functionality) 、可靠性(Reliability) 、可用性(Usability) 、有效性(Efficiency)、可维护性(Maintainab
20、ility)、可移植性(Portability)。 2.1.9 动态测试(Dynamic Testing)动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。2.1.10 自动化测试(Automation Testing)就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。简单说自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,一般不需要人干预,通常在 GUI、性能等测试和功能测试中用得较多。通过录制测试脚本,然后执行这个测试脚本来实现测
21、试过程的自动化。自动化测试工具有 QTP、Testcomplete 、 AutoRunner 和 TAR 等。第 3 章 需求分析 15363995377改功能为国内长途报错3.1 需求详情需求编码:LIBSS-223997故障单号:IT-ZH20180119697922-01故障标题:15363995377 改功能为国内长途报错故障现象:【接入号/业务号码】15363995377 通话级别:限制呼出呼入,因无法拨打电话需变更为国内长途,前台按正常变更后提示失败。相关数据库及字段DICT_ID DICT_NAMECDMA05 限制呼出呼入ATTR_VALUE PRODUCT_NAMECDMA0
22、3 国际及港澳台长途电话CDMA03 国际及港澳台长途电话CDMA02 国内长途电话3.2 分析原因:CDMA05 这个是省的属性值, 集团按理只有这个 CDMA03 属性值。属性值为这个才返回给集团。92 CDMA03 国际及港澳台长途电话集团只有这个字段。省内也是配置这个跟集团匹配。3.3 影响范围:珠海3.4 解决方案:(1)程序解决方案:修复程序。(2)临时解决方案: (1)操作方案陈述:无临时解决方法。 (2)数据风险及处理陈述:影响业务受理。(3)其它风险陈述: 无3.5 分公司 /分部联系人及其联系方式:维护人员及其联系方式:3.6 附录(名词解析)1、 产品:电信可以出售的物品
23、,包括实物或虚拟物品,如:普通电话、移动电话、电信卡等;2、 服务:虚拟产品销售后,在 CRM 受理后形成服务,即有具体的接入号,在 CRM 上可查询到具体的信息。3、 客户:以人或公司作为个体,不同证件号认为不同的客户,在 CRM 上每个客户编码代表一个客户。如:张三、A 公司,有可能存在同一个名称,不同证件号的情况,在系统上认为是不同的客户。4、 账户:账户是由付款名称+付款银行+ 付款帐号组成,银行付费的银行帐号、现金都会建成帐户,所有的服务都会与账户关联。5、 一次性费用:在 CRM 上生成的费用为一次性费用,一次性费用的支付方式可通过业务受理时定制,亦可在收费时修改,支付方式:账务代
24、收、前台现金、银行划扣。6、 话费:产品变成服务后,每月产生的费用称为话费,费用是由 CBS 每月根据服务的基础费用、使用费等计算出来,根据服务设定的支付方式,每月缴费。现金:前台缴费,银行划后:每月出账后在服务绑定的银行帐号扣费。7、 计费周期:目前除动态月结以外的服务都是以自然月计费,即每月 1-31 号,此段时间产生的费用,需要在下个缴费周期缴交。8、 缴费周期:每月的 4 号至下月 3 号,缴交上个计费周期的费用。举例:3 月 1 日至3 月 31 日产生的费用,在 4 月 4 日至 5 月 3 日期间缴交,过期的话每月按欠费金额*0.3%计算滞纳金。9、 工号:登陆 CRM 使用的登陆号称为工号机构:登陆 CRM 时,显示的是工号所属机构,机构在 ITOP 增删改,由 ITOP 下发到本地 CRM。岗位:系统权限集,每个工号可对应多个岗位。角色:系统权限最细化,一个或多个角色组成岗位,岗位指定到工号后,即赋予工号使用系统的权限。第 4 章 软件项目测试过程4.1 测试计划应用部署说明: