关于集成测试
集成测试的实施方案有很多种,如自底向上集成测试、自顶向下集成测试、Big-Bang集成测试、三明治集成测试、核心集成测试、分层集成测试、基于使用的集成测试等。在此,笔者将重点讨论其中一些经实践检验和一些证实有效的集成测试方案。
·自底向上集成测试
自底向上的集成(Bottom-Up Integration)方式是最常使用的方法。其他集成方法都或多或少地继承、吸收了这种集成方式的思想。自底向上集成方式从程序模块结构中最底层的模块开始组装和测试。因为模块是自底向上进行组装的,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)事前已经完成组装并经过测试,所以不再需要编制桩模块(一种能模拟真实模块,给待测模块提供调用接口或数据的测试用软件模块)。自底向上集成测试的步骤大致如下:
步骤一: 按照概要设计规格说明,明确有哪些被测模块。在熟悉被测模块性质的基础上对被测模块进行分层,在同一层次上的测试可以并行进行,然后排出测试活动的先后关系,制定测试进度计划。图2给出了自底向上的集成测试过程中各测试活动的拓扑关系。利用图论的相关知识,可以排出各活动之间的时间序列关系,处于同一层次的测试活动可以同时进行,而不会相互影响。
步骤二: 在步骤一的基础上,按时间线序关系,将软件单元集成为模块,并测试在集成过程中出现的问题。这里,可能需要测试人员开发一些驱动模块来驱动集成活动中形成的被测模块。对于比较大的模块,可以先将其中的某几个软件单元集成为子模块,然后再集成为一个较大的模块。
步骤三: 将各软件模块集成为子系统(或分系统)。检测各自子系统是否能正常工作。同样,可能需要测试人员开发少量的驱动模块来驱动被测子系统。
步骤四: 将各子系统集成为最终用户系统,测试是否存在各分系统能否在最终用户系统中正常工作。
方案点评: 自底向上的集成测试方案是工程实践中最常用的测试方法。相关技术也较为成熟。它的优点很明显: 管理方便、测试人员能较好地锁定软件故障所在位置。但它对于某些开发模式不适用,如使用XP开发方法,它会要求测试人员在全部软件单元实现之前完成核心软件部件的集成测试。尽管如此,自底向上的集成测试方法仍不失为一个可供参考的集成测试方案。
·核心系统先行集成测试
核心系统先行集成测试法的思想是先对核心软件部件进行集成测试,在测试通过的基础上再按各外围软件部件的重要程度逐个集成到核心系统中。每次加入一个外围软件部件都产生一个产品基线,直至最后形成稳定的软件产品。核心系统先行集成测试法对应的集成过程是一个逐渐趋于闭合的螺旋形曲线,代表产品逐步定型的过程。其步骤如下:
步骤一: 对核心系统中的每个模块进行单独的、充分的测试,必要时使用驱动模块和桩模块;
步骤二: 对于核心系统中的所有模块一次性集合到被测系统中,解决集成中出现的各类问题。在核心系统规模相对较大的情况下,也可以按照自底向上的步骤,集成核心系统的各组成模块。
步骤三: 按照各外围软件部件的重要程度以及模块间的相互制约关系,拟定外围软件部件集成到核心系统中的顺序方案。方案经评审以后,即可进行外围软件部件的集成。
步骤四: 在外围软件部件添加到核心系统以前,外围软件部件应先完成内部的模块级集成测试。
步骤五: 按顺序不断加入外围软件部件,排除外围软件部件集成中出现的问题,形成最终的用户系统。
方案点评: 该集成测试方法对于快速软件开发很有效果,适合较复杂系统的集成测试,能保证一些重要的功能和服务的实现。缺点是采用此法的系统一般应能明确区分核心软件部件和外围软件部件,核心软件部件应具有较高的耦合度,外围软件部件内部也应具有较高的耦合度,但各外围软件部件之间应具有较低的耦合度。
·高频集成测试
高频集成测试是指同步于软件开发过程,每隔一段时间对开发团队的现有代码进行一次集成测试。如某些自动化集成测试工具能实现每日深夜对开发团队的现有代码进行一次集成测试,然后将测试结果发到各开发人员的电子邮箱中。该集成测试方法频繁地将新代码加入到一个已经稳定的基线中,以免集成故障难以发现,同时控制可能出现的基线偏差。使用高频集成测试需要具备一定的条件: 可以持续获得一个稳定的增量,并且该增量内部已被验证没有问题; 大部分有意义的功能增加可以在一个相对稳定的时间间隔(如每个工作日)内获得; 测试包和代码的开发工作必须是并行进行的,并且需要版本控制工具来保证始终维护的是测试脚本和代码的最新版本; 必须借助于使用自动化工具来完成。高频集成一个显著的特点就是集成次数频繁,显然,人工的方法是不胜任的。
高频集成测试一般采用如下步骤来完成:
步骤一: 选择集成测试自动化工具。如很多Java项目采用Junit+Ant方案来实现集成测试的自动化,也有一些商业集成测试工具可供选择。
步骤二: 设置版本控制工具,以确保集成测试自动化工具所获得的版本是最新版本。如使用CVS进行版本控制。
步骤三: 测试人员和开发人员负责编写对应程序代码的测试脚本。
步骤四: 设置自动化集成测试工具,每隔一段时间对配置管理库的新添加的代码进行自动化的集成测试,并将测试报告汇报给开发人员和测试人员。
步骤五: 测试人员监督代码开发人员及时关闭不合格项。
按照步骤三至步骤五不断循环,直至形成最终软件产品。
方案点评: 该测试方案能在开发过程中及时发现代码错误,能直观地看到开发团队的有效工程进度。在此方案中,开发维护源代码与开发维护软件测试包被赋予了同等的重要性,这对有效防止错误、及时纠正错误都很有帮助。该方案的缺点在于测试包有时候可能不能暴露深层次的编码错误和图形界面错误。
以上我们介绍了几种常见的集成测试方案,一般来讲,在现代复杂软件项目集成测试过程中,通常采用核心系统先行集成测试和高频集成测试相结合的方式进行,自底向上的集成测试方案在采用传统瀑布式开发模式的软件项目集成过程中较为常见。读者应该结合项目的实际工程环境及各测试方案适用的范围进行合理的选型。
编者按:
在软件测试中,系统测试是针对整个产品系统进行的软件测试,目的是验证系统是否满足了需求的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试不仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。
小编从51Testing网站中,适当的整理了下系统测试这一部分的文章,希望能对大家以后的学习会有所帮助。
【关于系统测试流程的改进与思考】
看了经理的EMAIL,谈到我社系统上线有时存在测试不完善导致的错误,我周末这两天回去也想了很多,也和一些做软件开发的朋友交流看法,知道了我们国内大部分企业对软件测试还不是很重视,由于时间、成本的压力,很多测试流程也都是敷衍了事。但是我们农联社是一个庞大的金融机构,网点众多,每日的交易量成千上万,也意味着我们的一段代码一天会被运行了千万次,对于我们的信息系统来讲,稳定是最重要的因素,必须保证我系统的开发的质量。
经过这两天的思考,结合以前学习过的相关知识,我说说我的一些看法,希望对我们的测试工作有帮助。
1、设计测试用例时,加大在边界值范围的测试强度,因为软件较容易在数据域的边界出现错误。
2、通过输入无效的或非正常的数据,测试系统在错误异常情况下的处理能力。
3、在单元测试时全面覆盖所有路径。除了保证对关键路径的覆盖,还应该覆盖所有逻辑判断路径,保证所有“真”、“假”情况的路径都能被测试到。
4、发布程序时可以考虑下是否先以小部分分社为试点,运行一段时间,看看有没有存在一些未发现的问题,及时改正之后再在全市所有分社推广。
5、随着业务的发展,在未来条件允许的情况下,或许我们可以考虑成立一个专门的测试小组,负责软件开发的质量监管工作。通过专业的测试人员,编写测试用的驱动模块和桩模块,对代码的质量和性能进行深入全面的测试。
关于规范测试流程,我这几天翻阅了一些相关的材料,在软件开发的测试流程上,现在比较流行也比较可靠的是“V”模型。
在测试用例的设计上采用测试先行的方法,即软件开发每做完一个环节,就编写设计的测试方案。需求分析过程结束后,便开始设计验收测试,主要以黑盒测试为主,结合需求分析结果,用于检验系统的系统功能是否达到要求。在开发前期设计测试用例,可以更好的明确开发需求,规范开发思路,把握开发的方向。然后再进行下一环节的开发——概要设计。概要设计相对应的是集成测试的设计,在这个阶段以黑盒测试和白盒相结合,主要用于检验系统各个模块之间的接口以及模块功能是否达到要求。最后是详细设计,与单元测试相对应,主要以白盒测试为主,测试人员主要也是开发人员本身,检验该模块单元内的代码以及所有逻辑路径。
“V”测试模型的好处是设计测试用例的工作可以在软件开发的前期就介入到整个开发过程中来,有很多问题可以在开发前期被发现,可以规避开发风险,降低改正缺陷的成本。但是,“V”模型也存在着一些局限性:
“V”模型依赖于开发文档的准确性,完整性和实时性,文档是测试用例的设计依据,所以,该模型对开发文档提出了较高的要求。由于业务需求的不确定性和易变性,当需求改变的时候,与之相关联的测试文档也必然需要做相应的修改。这提高了文档维护的复杂性。
但是,开发文档是软件工程的核心,它的准确性,完整性和实时性也是保证软件开发质量的内在要求,它贯穿于需求,设计,开发,测试,维护整个软件周期,是不同阶段开发人员相互沟通的桥梁,也是所有开发人员共同遵守的一个开发规范,所以,加强完善文档管理,有利于保证我们农信信息系统的开发质量,把握开发进度,控制开发成本。
我刚参加工作不久,许多地方还需要向同事学习,实践经验也还不是很充足,对于我社综合业务系统的了解还不是很充分,所以以上所说的,难免有一些疏漏和错误,还请各位指正。希望通过我们的努力,能让我们的系统运行得更好,更稳定,更好的为农信的发展服务。
专题入口:http://www.51testing.com/zhuanti/xtcs/xtcs.html
【经验共享:如何做好系统测试】
一套软件做完了,在给客户上线之前,我们自己要进行完整的系统测试,这个工作听起来好象没什么,但其实是很不好做的,这要求测试人员要熟悉业务、熟悉系统的各个功能项、还要有一套完整的测试方法。我们软件销售部从开始做系统分析工作,现在又开始担当系统测试的角色了,没办法,公司人手不够,只能担当多种角色了。不过对于我们来说也有一定好处,系统分析设计是我们做的,现在做好的系统由我们来测试,一是我们对业务比较熟悉,二是对我们来说也是一种自我的检验,检验一下自己设计的系统是否合理,为以后更好的系统分析打好基础。
好了,言归正传,讲一下我们在测试工作中的一点体会吧,写出来一面为自己理一下思路,二也是为自己做工作的一个总结。
一、测试之前要充分掌握业务流程
首先,在进行系统测试之前,要知道系统的业务流程,也就是说要清楚每项业务间发生的前后顺序。只有知道了业务的先后顺序,你的测试数据才能继续在ERP系统功能间流转,否则,无法进行各项业务的全面覆盖测试。
其次,还要明白每一项业务中的详细流程和各个环节涉及的角色,一项比较复杂的业务其详细流程往往比较多,只有了彻底掌握了这项业务,才能对当前业务环节进行全方位的测试。比如:订单管理中,销售业务员创建了一个销售订单,还要经过主管审核,方可执行订单,订单执行完毕后关闭订单。
二、了解业务流程对应的ERP系统的功能
对整个业务有了总体的认识,再把业务分块,在ERP中找出相应的模块与业务对应起来。只有把业务和REP功能完全对应上了,才能说有可能对ERP系统进行全面的覆盖测试。
三、系统功能集中测试和测试方法
找到与具体业务对应的ERP子系统,根据当前业务的流程与角色,对ERP子系统进行集中测试。测试还要讲求方法,尽量做到全覆盖测试,其中注意几点:
1)按正常场景进行测试
根据业务流程,按着正常的顺序,用正确的测试数据测试系统;检查系统的结果是否与预期的结果相同,如果结果相符,表示当前系统模块符合业务逻辑;否则,系统有问题,将错误信息记录到BUG报告中,及时提交开发部门。
2)测试异常场景
根据业务流程,输入异常的测试数据测试系统,查看系统提示哪些异常信息,并查看是否有异常判断,如果有,则表示系统做过异常考虑处理,否则表示系统漏掉了当前异常情况,需要提示开发部门,添加当前异常情况的考虑处理。
3)特殊数据的处理
根据业务流程,在输入测试数据时,输入边缘数据、空值等特殊字符,查看系统是否做了数据录入范围和要求的判断,如果没有,表示系统遗漏数据范围和录入要求的考虑,需要提示开发部门,添加相应数据范围和要求的处理。
以上三方面的考虑,是比较常见而且不可遗漏的测试部分,当然,可以用测试用例来规范。如:
用例编号 | 001 | 编制时间 | 2007-1-20 | 相关的用例 |
| |||
功能特性 | 投料 | |||||||
测试目的 | 把车间物料台账存放库位调整与实物的投料地点相同 | |||||||
数据准备 | 5条 物料流水码 | |||||||
预置条件 | 车间物料台账中存在5条物料流水码,并已登记存放库位。 | |||||||
测试项 | 操作描述 | 测试数据 | 期望结果 | 测试结果 | ||||
1输入库位号 | 输入新的库位编号,回车(投料) | 02 | 页面跳转到下一页面,并显示刚输入的库位编号信息 |
| ||||
| 没有输入库位编号,回车(投料) | 空值 | 提示输入库位信息才能投料 |
| ||||
| 输入长度超过4位的数字编号或不存在的库位编号,回车(投料) | 020202或abc | 提示没有当前库位编号 |
| ||||
2输入流水码 | 扫描(输入)物料流水码,回车(加至投料清单) | QM0600011 | 把输入的物料流水码添加到投料清单表格中 |
| ||||
| 没有输入流水码,回车 | 空值 | 提示物料流水码不能为空 |
| ||||
| 输入长度超过9位的编号或随意输入值 | QM060001121或abc | 提示物料流水码不正确 信息 |
| ||||
3投料 | 检查清单,需投的物料全部录入后,选择 投料 |
| 提示投料成功 |
| ||||
| 检查清单,需投的物料全部录入后,选择 投料 |
| 如果投料操作失败,提示错误信息 |
| ||||
测试人员 |
| 开发人员 |
|
| ||||
四、 提交BUG报告
通过前边的测试,把得出的错误信息,以BUG报告的形式展现出来,转发给开发部门相应人员,以例开发部集中修改系统错误信息。下边说一下BUG报告的内容:错误序号、发现日期、子系统名称、二级模块名称、三级模块名称、发生页面、错误描述、发现者、是否修改状态、修改人意见、修改人、修改日期、确认人、确认日期。按着上边这几项内容,将错误信息以BUG报告的形式列表出来,转发给相应的部门修改。
五、 回归测试
BUG修改完毕后,更新ERP系统,更新完毕后,对已往的错误信息进行二次测试,以确保错误信息的正确修改。
通过以上五个步骤,把我们销售部当前进行的测试工作,做了一个完整的总结,这就是我们目前采用的简单的测试方法和步骤,经过我们的测试,系统性能得到了一定的提高,当然不否认系统还可能存在一些潜在的问题,这需要我们在后期维护中不断的改进,今天写到这里,希望有测试经验的朋友能提出更好的测试建议,我们一同提高!!