报表测试
报表测试根据项目的定义有大有小,有时只是作为软件的一个部分进行测试,有时整个项目都是测试各种报表。但不论如何。报表的作用始终都是将系统中已经存在的数据根据用户的设置计算加工/整理汇总/最终以清晰的格式展示给用户。以便用户进一步做数据分析或统计。
软件中的报表实现一般分为定义报表的所需数据(一般可以通过选择或手工输入条件来缩小数据范围)和定义报表格式两个部分。报表格式除了如国家各行业标准中规定的报表使用固定格式外,大多是根据企业或用户的需要定制报表。
所以,做报表测试时要注意以下方面:
1. 数据的正确
用户使用报表就是期望通过一个简单方便的平台能快速的查找到他所需要的数据。所以在测试报表时首先就要检查报表中的数据是不是用户需要的数据,如果没有加工的数据,是否保持了原貌,加工过的数据查看加工的结构是否和手工加工的结果一致。简言之,需要测试以下内容:
1) 数据的来源:来源于哪张表,哪个字段,数据库中的数值与界面数据的对应。如数据库中性别的数据可能是0或1,但界面显示为男或女,这个对应关系是否正确;
2) 数据的范围:是否只显示了报表设置的对应范围;特别要注意边界数据,要清楚报表的需求,是否需要过滤掉被选择的数据。如时间选择为2006-9-27~2007-9-27,那么是否应该包含9-27这天;
3) 数据的对应关系:数据库中的字段是否与报表中的信息对应。数据的格式:小数位,千位符,四舍五入等是否与报表设置一致;单位或税率转换是否正确;组合显示的数据是否合理;
4) 数据的排序:排序方式是否与报表设置一致(如果没有设置,是否有一个清晰的默认排序方式,如按字母或数字排序);
5) 流水号:如报表有使用流水号,流水号的生成和格式是否正确。取消操作是否会生成流水号;
6) 明细与合计的一致性:各部分明细或小节是否与最后总和一致
7) 其他
(1) 测试这一部分内容需要对业务逻辑相当熟悉,对数据库的设计也要非常了解,必要时可以通过自己写查询语句查看数据;
(2) 有些报表的条件有多有少,但测试方法都是一样。根据条件通过等价类划分和排列组合设置各种条件组合。千万不要盲目的测试,否则会导致该测的没测,多余的测试做了一堆。一般来说有类别划分的(一般界面表现为下拉框),每个类别都要测试到,如性别中的男,女都要测试。输入的可以用等价类来划分要测试的数据。
2. 格式的正确
数据验证正确后,就需要看看报表的输出格式是否符合要求。可以从以下几方面来检查。
1) 报表的整体风格:报表是否符合规定的或用户设置的格式;
2) 报表标题:报表的标题是否是正确的报表名称;如报表中有嵌入的数据(会跟随用户的选择而变化的)。需要检查数据是否正确,如XX企业9月份财务报表,这个9月就是用户选择的;或者XX公司2006-9-27~2007-9-27的网站访问量,这个时间段也是用户选择的;
3) 公司的一些标志:如logo,名称,地址之类的是否正确;
4) 报表的页首与页尾:是否采用了一致的规则;
5) 分页:当输出的内容多时,分页是否正确。翻页功能是否正确;
6) 友好性:数据或图表是否清晰,一目了然,数据的展示符合用户的习惯;需要特别提醒的数据(如合计,异常数据)是否突出显示;复杂算法处,用户不明白或容易混淆处是否有注释;一些默认的格式是否让人感觉舒服,如对齐,边界,间隔等。
3. 权限的控制
对于有权限控制的系统,报表当然也应该和用户所具有的权限相一致。需要从两方面校验权限的控制。
1) 报表的条件定义:在条件选择区域,有些下拉框中应该不能显示用户权限范围外的数据。如普通文员在使用报表时,报表名称下拉框中是不可以显示管理者才能查看的报表的。有些以输入的文本框有级别的划分时,都应该要测试输入超越权限的数据的相应。注意这里一定要测试每个条目。
2) 报表内容:报表中的内容不能显示用户本没有权限查看的数据。
4. 报表的输出
报表在电脑上生成后,并不是报表的结束。报表一般都需要打印出来他用,如开会或者提交审批之类。所以报表的打印功能也是非常重要的。测试主要分成几部分:
1) 打印设置;
2) 打印预览;
3) 实际打印效果;
4) 除了打印之外,用户有可能需要导出报表做进一步的分析或用于和其他报表的比较。所以也应该提供导出报表的功能。一般可以导出为CSV,Excel,pdf,html,xml格式。看公司需要了。这里主要要检查导出的报表默认属性是否为读写,然后导出的内容是否正确,与生成的报表相一致。
5. 报表与报表之间的关系
有些报表都使用了相同的数据,只不过针对不同的需要做了不同的处理。所以报表与类似报表之间要做些测试,看看数据是否一致。
6. 报表的性能
1) 用户在设置好条件后都希望不要等待报表太长时间,当然有时数据量大时等待时间长些也是合理的。但是在做报表的开发时或测试人员可以提出一些意思来提高报表的性能;
2) 报表的条件设置区域应该设置默认值以避免用户不输入任何条件直接生成报表所造成的长时间等待。例如开始和结束时间可以默认为当前的一个月,一些输入文本框可以根据用户的身份默认一个数值;
3) 生成报表时用类似进度条表现进度,避免用户盲目的等待;
4) 生成报表的语句尽量采用最优的查询语句,多调试几遍,查看语句的性能。
7. 报表控件的独特性
一般公司会用专门的报表控件来生成报表,例如MS的Report service, Crystal报表等。所以最好先了解一般的报表生成流程和这类报表控件的特点,这样在测试时就可以有的放矢,而不是盲目的比较。