这里有一份完整软件测试案例,部分存在参考,若有不足,敬请指正!
1 引言
1.1 编写目的
编写该测试总结报告主要有以下几个目的:
1.通过对测试结果的分析,得到对软件质量的评价;
2.分析测试的过程,产品,资源,信息,为以后制定测试计划提供参考;
3.评估测试测试执行和测试计划是否符合;
4.分析系统存在的缺陷,为修复和预防bug提供建议。
1.2 背景
说明被测试的软件产品,包括项目背景、介绍、功能、测试环境、部署等。
1.3 用户群
主要读者:XX项目管理人员,XX项目测试经理
其他读者:XX项目相关人员。
1.4 定义
严重bug:出现以下缺陷,测试定义为严重bug
1.系统无响应,处于死机状态,需要其他人工修复系统才可复原。
2.点击某个菜单后出现“The page cannot be displayed”或者返回异常错误。
3.进行某个操作(增加、修改、删除等)后,出现“The page cannot be displayed” 或者返回异常错误。
4.当对必填字段进行校验时,未输入必输字段,出现“The page cannot be displayed” 或者返回异常错误。
5.系统定义不能重复的字段输入重复数据后,出现“The page cannot be displayed” 或者返回异常错误。
1.5 测试对象
包括括源程序、目标程序、数据以及相关文档等。
1.6 测试阶段
系统测试。
1.7 测试工具
常用测试工具:
1.测试管理工具:PingCode-Testhub(简单好用,25人以下免费)、TestDirector(大而全)、jira(简单好用)、Quality Center(复杂,收费)、禅道(简单好用)、bugzilla(功能简单)、svn(代码和文档管理工具)、vss类似svn、git,同svn,但是多分支管理比svn好、Note(大而全,费用太贵)、CQ(ClearQuest-IBM产品-大而全)
2.接口测试工具:Jmeter(开源)、postman、SoapUI**(推荐使用 jmeter 和 postman,**jmeter是一款100%纯Java编写的免费开源的工具,它主要用来做性能测试,相比loadrunner来说,它内存占用小,免费开源,轻巧方便、无需安装,越来越被大众所喜爱;Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。)
** 3.性能测试工具:loadrunner,大而全,要学精通还是有点难度,重量级工具、jmeter 基于java平台的性能开源测试工具,其实也很强大,而且比较好用、Web bench 一个简单的web基准指标测试工具、Load UI,一款开源的压力测试工具,支持图形化、httperf 一款高性能的web性能测试工具、Siege 一款开源的压力和指标测试工具、Gatling(**前两种是比较常用的)。
**4.C/S自动化工具:qtp (录制回放和脚本编辑),用到的是vb语言、winrunner IBM产品类似qtp、**autoit 在窗口定位上做到很不错。
** 5.白盒测试工具:jtest java语言的单元测试框架、JUnit 验证java的工具、cppunit 跨平台的c++单元测试框架、gtest 跨平台的c++单元测试框架、PhpUnit Php、BoundsChecker C++,Delphi API和OLE错误检查、指针和泄露错误检查、内存错误检查、**TrueTime C++,Java,Visual Basic 代码运行效率检查、组件性能的分析
** 6.代码扫描工具:Coverity源代码静态分析工具、cppcheck c++静态扫描工具、gcover代码覆盖率工具、findbugs:基于字节码分析,大量使用数据流分析技术,侧重运行时错误检测,如空指针引用等、SonarLint、**TscanCode。
**7.持续集成工具:**jenkins、Hudson。
** 8.网络测试工具:思博伦 目前流行的一款网络自动化测试商用平台了(而且能够完全顶替loadrunner),基本上能够满足所有的网络产品测试需求了,不过很贵、Ixia,也是对网络设备进行性能和压力测试工的平台、wireshark 数据包抓取分析和回放测试工具、tc 网络丢包和试验模拟工具,非常好用、iperf 用来测试tcp和udp的网络质量、**tcpping工具工作在 TCP 层,通过发送伪造的 TCP SYN 包并侦听来自服务器或中间设备返回的 SYN/ACK 或 RST。
** 9.app自动化工具:appium 这个应该算是目前最流行的基于app的自动化测试框架了、instruments ios平台下的自动化测试框架,用java语言写的、uiautomator安卓自动化测试框架,基本上支持安卓的所有事件操作、Monkey 安卓自带的测试工具、Monkey Runner Monkey改进版,支持自己编写脚本测试,用Python语言、**Robotium 一款国外的Android自动化测试框架,用法比较简单。
**10.web安全测试工具:appscan,算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来、Netsparker Community Edition 这个程序可以检测SQL注入和跨页脚本事件。牛逼的是还能提供解决方案、Websecurify 这是个简单易用的开源工具,此程序还有一些人插件支持,可以自动检测网页漏洞。运行后可生成多种格式的检测报告、Wapiti 这是一个用Python编写的开源的工具,可以检测网页应用程序,探测网页中存在的注入点、N-Stalker Free Version 此工具可一次检测100个以上的页面,包括跨页脚本的检测、skipfish 这是一个轻量级的安全测试工具,处理速度很快,每秒可处理2000个请求。、Scrawlr HP的一款免费软件,可检测SQL注入漏洞、Watcher: 这个是Fiddler的插件,可在后台静默运行,可检测跨域提交等。、WebScarab 这个实际上是一个代理软件,有很多功能,可以检测XSS跨站脚本漏洞、SQL注入漏洞等、抓包工具:fiddler、**burpsuite:暴力破解、抓包工具。
1.8 参考资料
1.《XX需求和设计说明书》;
2.《XX数据字典》;
3.《XX后台管理系统测试计划》;
4.《XX后台管理系统测试用例》;
5.《XX项目计划》。
2 测试概要
XX后台管理系统的测试工作自X年X月X日启动,至X年X月X日圆满结束,历时X天。在此期间,我们针对X个功能点展开了全面的测试,执行了X个精心设计的测试用例,平均每个功能点执行了X个测试用例。测试过程中,我们共发现了X个bug,其中严重级别的bug有X个,经核实无效的bug为X个,平均每个测试功能点存在X个bug。
在测试过程中,XX团队共发布了X个测试版本。其中,B1至B5版本属于计划内的迭代开发版本,它们严格按照项目计划的基线标识进行开发。在测试进度方面,B1至B4版本均按照项目计划的时间节点准时完成了测试并提交了报告。值得一提的是,B4版本因故推迟了一天发布,但测试团队通过增加一个人日的工作时间,确保了测试的准时完成。B5版本则推迟了两天发布,测试团队相应增加了2个人日的工作时间,同样保证了测试的准时完成。B6至B8版本为计划外的回归测试版本,测试团队为此增加了5个工作人日的资源投入,并成功实现了测试的准时完成。
为了确保测试工作的高效进行和问题的有效跟踪,XX团队采用了Bugzilla缺陷管理工具。在B1至B4的测试阶段,我们均提供了详细的bug分析表和阶段测试报告,为项目的顺利推进提供了有力的支持。
2.1 进度回顾
2.2 测试执行
此次测试工作严格遵循项目计划和测试计划的指导,确保了测试对象在规定时间内得到全面而细致的测试。在测试执行过程中,我们充分贯彻了测试计划中所规定的测试策略,确保每一项策略都得到了有效的实施。同时,我们依据测试计划和精心设计的测试用例,对系统进行了全面而深入的测试,确保系统功能的完整性和稳定性。通过此次测试,我们成功按时完成了测试计划所规定的任务,为项目的顺利推进奠定了坚实的基础。
2.3 测试用例
2.3.1功能性
1.系统实现的主要功能,包括查询,添加,修改,删除;
2.系统实现的次要功能,包括为用户分配酒店,为用户分配权限,渠道酒店绑定,渠道RATE绑定,权限控制菜单按钮;
3.需求规定的输入输出字段,以及需求规定的输入限制。
2.3.2 易用性
1.操作按钮提示信息正确性,一致性,可理解性;
2.限制条件提示信息正确性,一致性,可理解性;
3.必填项标识;
4.输入方式可理解性;
5.中文界面下数据语言与界面语言的一致性。
3 测试环境
3.1 软硬件环境
3.2 网络拓扑
4 测试结果
4.1 测试BUG图
此次黑盒测试总共发布10个版本,V1.0.1-V1.0.5为计划内迭代开发版本(针对项目计划的基线标识),V1.1.1-V1.2.2为进行的回归测试版本,所有版本一共发现bug 1306个。bug版本趋势图如下图所示:
由Bug的版本分布图可以看出,V1.0.1-V1.0.5版本质量非常不稳定,bug数量最高达到189个,V1.0.1作为第一个版本bug数量为58个。在版本V1.0.3验证了前面发现的所有bug的基础上遗留bug数量在123个质量表现也不够稳定,在V1.1.1新增了批量制证、数据恢复、数据备份、数据清除等功能所以bug数目骤增为232个。随着版本的迭代在版本V1.2.2 bug数量逐渐将为0。
4.2 BUG优先级
测试发现的bug主要集中在未完善功能级别major,属于一般性的功能缺陷,但是测试的时候,出现了163个涉及到程序崩溃、程序启动不了、不能完成正常制证、不能完成正常印刷等严重级别的bug,出现严重级别的bug主要表现在以下几个方面:
1.系统的主要功能没有实现;
2.本地数据库数据量比较大的时候出现程序崩溃死机;
3.系统主要功能逻辑混乱导致意外bug;
4.后台进程在程序关闭后没有相应停止导致程序不能启动;
5.WebAPI接口调用错误导致核心功能不可实现。
4.3 测试类型
系统的问题类型主要分布于测试过程和维护过程发现影响系统运行的缺陷bug和对现有系统功能的改进improvement。Bug占所有问题类型的百分比为:97%,improvement占所有问题类型的百分比为:3%。图上结果说明系统在需求采集、程序设计工作过程中考虑十分全面极少存在功能设计遗漏问题。
4.4 BUG模块分布图
由上图可以看出,bug主要分布模块是CerDesk印刷端(405个)和CerDesk制证端(534个)两个工作台,占到了全部bug的2/3以上。而CerWeb服务器端(260个)的bug分布相对来说比较少占总体百分比为7%。CerDesk运维端(107个)的bug量最少主要原因是功能比较简单。
4.5 最近提交的缺陷图
由上图可以看出,在统计的十个周bug提交和解决状况比较理想,当前提交的bug都能够在很快的时间得到修复,并且随着版本的稳定解决bug数量为全部解决新增bug数量逐渐降为0,整个过程属于正常的软件版本迭代过程。
4.6 BUG状态分布
由bug状态图可以看出,打开的bug有0个,重新打开的bug有0个。已解决bug有2个,主要是版本V1.2.2中提交的界面易用性bug,而其他的1304个都是已验证修复并关闭的bug。系统整体的遗留bug数量达到测试结束标准。
5 测试结论
5.1 功能性
系统正确实现了通过数据字典管理基础数据的功能,实现了数据内容的多语言功能,实现了中英文界面。实现了基础数据管理,酒店集团管理,酒店基础信息管理,渠道管理,代理管理,用户管理的查询,添加,修改,删除的功能,系统还实现了将权限控制细化到菜单按钮的功能。
系统在实现用户管理下的权限管理功能时,存在重大的缺陷,权限控制不严密,权限设计有遗漏。
5.2 易用性
1.现有系统实现了如下易用性:
查询,添加,删除,修改操作相关提示信息的一致性,可理解性;
输入限制的正确性;
输入限制提示信息的正确性,可理解性,一致性。
2.现有系统存在如下易用性缺陷:
界面排版不美观;
输入,输出字段的可理解性差;
输入缺少解释性说明;
中英文对应的正确性;
中英文混排。
5.3 可靠性
1.现有系统的可靠性控制不够严密,很多控制是通过页面控制实现的,如果页面控制失效,可以向数据库插入数据,引发错误。
2.现有系统的容错性不高,如果系统出现错误,返回错误类型为找不到页面错误,无法回复到出错前的状态
5.4 兼容性
1.现有系统支持window下的IE浏览器和傲游浏览器,支持linux系统下的IE浏览器和火狐浏览器。
2.现有系统未进行其他兼容性测试
5.5 安全性
1.现有系统控制了以下安全性问题:
把某一个登录后的页面保存下来,不能单独对其进行操作不进行登录;
直接输入某一页面的Url能否打开页面并进行操作不应该允许。
2.现有系统未控制以下安全性问题;
用户名和密码应对大小写敏感;
登陆错误次数限制。
6 分析摘要
6.1 覆盖率
此次测试,所有测试用例都是在中文界面下执行,未在英文界面下执行,测试不包括英文界面下的测试,也不包括正对英文翻译的测试。
此次测试,部分页面需求描述无明确的定义,对输入限制无详细定义,无明确的测试依据,在测试过程中,测试是根据输入字段含义,测试人员理解,以及和项目经理,开发人员沟通获得测试依据,无法保证测试依据的正确性和完整性,因此,没有进行完整的,正确的无效数据的测试,测试覆盖率不够,无法保证测试的有效性和正确性
下面为此次测试测试用例覆盖率分析图:
6.2 遗留缺失的影响
**1.缺陷描述:**酒店娱乐项添加页面, “距离”字段无单位,建议增加单位
** 缺陷影响:**距离字段无单位说明,无衡量标准,用户易用性不好
** 推迟原因:**需求定义无单位定义,统一在升级版本中解决
**2.缺陷描述:**新建业务管理员权限用户,进入打包促销页面出现权限异常错误
** 缺陷影响:**除系统管理员外,其他用户无法进行打包促销操作
** 推迟原因:**B10版本发现该bug,目前该模块开发人员调休,无法修改bug
6.3 建议
1.在项目开始的时候应该制定编码标准,数据库标准,需求变更标准,开发和测试人员都严格按照标准进行,可以在后期减少因为开发,测试不一致而导致的问题,同时也可以降低沟通成本。
2.发布版本的时候,正确布置测试环境,减少因为测试环境,测试数据库数据的问题而出现的无效bug。
3.开发人员解决bug的时候,填写bug原因以及解决方式,方便bug的跟踪。
4.开发人员在开发版本上发现bug,可以通知测试人员,因为开发人员发现的bug很有可能在测试版本上出现,而测试人员和开发人员的思路不同,有可能测试人员没有发现该bug,而且,这样可以保证发现的bug都能够被跟踪。
7 度量
7.1 资源消耗
7.2 缺陷密度
基本的缺陷测量是以每千行代码的缺陷数(Defects/KLOC)来测量的。称为缺陷密度(Dd),其测量单位是defects/KLOC。缺陷密度=缺陷数量/代码行或功能点的数量。
我们可以按照以下步骤来计算一个程序的缺陷密度:
1.累计开发过程中每个阶段发现的缺陷总数(D)。
2.统计程序中新开发的和修改的代码行数(N)。
3.计算每千行的缺陷数Dd=1000D/N。例如,一个29.6万行的源程序总共有145个缺陷,则缺陷密度是: Dd=1000145/296000=0.49 defects/KLOC。
**注:**在CMMI体系的测试过程中定义了四个度量指标:测试覆盖率、测试执行率、测试执行通过率、测试缺陷解决率。
1 测试覆盖率
计算公式:已设计测试用例的需求数/需求总数。
测试覆盖率数据的收集,我们可以通过需求跟踪矩阵RTM来实现。在需求跟踪矩阵,测试人员填写的“系统测试用例”列的数据。测试人员通过计算RTM列出的需求数量,和已设计测试用例的需求数量,可以快速的计算出测试覆盖率。通过RTM,测试人员,包括项目组成员都可以很清楚的、快速的知道当前这个项目测试的测试覆盖情况。
2 测试执行率
计算公式:已执行的测试用例数/设计的总测试用例数。
在实际测试过程中,经常有如下这种情况发生。一种情况是,因为系统采用迭代方式开发,每次Build时都有不同的重点,包含不同的内容;第二种情况是,由于测试资源的有限,不可能每次将所有设计的测试内容都全部测试完毕。由于这两种情况的存在,所以在每次执行测试时,我们会按照不同的测试重点和测试内容来安排测试活动,所以就存在了“测试执行率”这个指标。
3 测试执行通过率
计算公式:执行结果为“通过”的测试用例数/实际执行的测试用例总数。
为了得到测试执行通过率数据,我们在测试执行时,需要在测试用例副本中记录下每个测试用例的执行结果,然后在当前版本执行完毕,或者定期(如每周)统计当前测试执行数据。通过原始数据的记录与统计,我们可以快速的得到当前版本或当前阶段的测试执行通过率。
4 缺陷解决率
计算公式:已关闭的缺陷/缺陷总数
缺陷解决率,指某个阶段已关闭缺陷占缺陷总数的比率。缺陷关闭操作包括以下两种情况:
正常关闭:缺陷已修复,且经过测试人员验证通过;
强制关闭:重复的缺陷;由于外部原因造成的缺陷;暂时不处理的缺陷;无效的缺陷。这类缺陷经过确认后,可以强制关闭。
在项目过程中,在开始时缺陷解决率上升很缓慢,随着测试工作的开展,缺陷解决率逐步上升,在版本发布前,缺陷解决率将趋于100%,在每个版本对外发布时,缺陷解决率都应该达到100%。也就是说,除了已修复的缺陷需要进行验证外,其他需要强制关闭的缺陷必须经过确认,且有对应的应对措施。可以将缺陷解决率作为测试结束和版本发布的一个标准。如果有部分缺陷仍处于打开或已处理状态,那么原则上来说,该版本是不允许发布的。
测试度量指标不仅仅只包括上述四个,在实际工作中,还会用到如:验证不通过率、缺陷密度等指标。收集这些数据目的是为了能对测试过程进行量化管理。但是,简单收集度量数据不是目的,通过对数据的分析、预防问题、对问题采取纠正措施,减少风险才是目的。
8 典型缺陷原因分析
测试过程中发现的缺陷主要有以下几个方面:
1.需求定义不明确
需求文档中,存在功能定义错误,输入输出字段描述错误,输入输出字段限制定义错误,输入输出限制定义缺失这几种类型的缺陷。使得开发人员根据需求进行设计时,没有考虑相关功能的关联性,以及需求错误的地方,在测试过程中,需求相关的问题表现出来。需求做改正,设计必须跟着做改动,浪费时间和影响开发人员的积极性,降低开发人员对需求的信任,可能会导致开发人员不按照需求进行设计而根据自己的经验来进行设计。
2.功能性错误
1)功能没有实现,导致无法进行需求规定的功能的测试。主要是无法进入酒店设施管理,会议室管理页面,酒店安全项管理无法保存信息,地区,房型删除功能缺失。
2)功能实现错误,实现了需求未定义的功能,执行需求定义的功能时系统出现错误。主要是角色拥有不属于自己的权限,酒店联系人删除页面跳转错误等。
3.页面设计和需求不一致
页面设计没有根据需求进行,输入,输出字段文字错误,用户无法理解字段含义。页面设计没有完成需求规定的输入限制验证,导致用户可以输入错误的或者无效的数据,这些数据有可能会引起功能性错误。
4.多语言数据问题
1)系统中很多输入字段是通过调用数据字典的方式输入,但是现有系统中,很多数据字典的多语言信息没有完成,导致使用多语言的时候,显示空白字段。
2)系统中很多地方使用多语言,由于多语言编码不统一导致页面设计和数据设计使用语言编码不一致,由此引起的多语言数据无法显示的缺陷。
5.页面设计易用性缺陷
1)页面设计不友好,系统中很多页面的输入字段无明确的输入提示,用户无法理解何种输入是正确的,但是用户输入错误后,系统提示出错,增加用户负担。
2)提示信息错误,不同模块相同结果的提示信息不一致,用户操作后,相应的提示信息不明确,引起用户误解。
3)提示信息一致性,用户在不同页面执行相同的操作,提示信息不同。
6.开发人员疏忽引起的缺陷
因为开发人员的疏忽,导致系统需要验证的地方,调用了错误的验证,系统需要进行输入控制的地方没有进行相应的控制。