简介:软件测试报告是软件开发生命周期中记录验证过程、衡量产品质量的核心文档。这份《完整版软件测试报告模板(完美实用)V3》面向测试工程师、项目管理者、QA与质量管理人员,提供一套可直接套用的规范化报告框架。模板覆盖了完整的关键章节:项目基本信息、引言(编写目的/项目背景/参考资料)、测试概要(测试用例设计原则、环境与配置)、测试内容和执行情况(功能、性能、可靠性、安全性、兼容性、易用性等测试类型及覆盖分析)、缺陷统计与分析(缺陷汇总、缺陷分析、残留缺陷),以及测试结论与建议、版本变更记录和目录结构,结构清晰,符合GB/T 15532和GB/T 9386规范要求。资源包共1个文件,为doc格式,大小仅48KB,轻量易用,下载后可直接编辑。目前已有229人学习下载。模板自带示例文字、表格和数据占位,使用时可快速替换为实际项目信息,有效节省报告编写时间,也能帮助新手理解测试报告每一部分的撰写要点。
1. 软件测试报告不是“填空”,是给项目验收交底
很多项目做完了开发,卡在验收前最后一关:测试报告写不满一页,评审问两句就露馅。原因不是不会测,而是不知道怎么把测试过程和结论组织成一份能让人信服的文档。这份完整版软件测试报告模板V3,把版本变更、测试概要、执行情况、缺陷统计、测试结论五段结构全预制好,连性能参数表、覆盖分析公式和残留缺陷表都留好了位置,适合用禅道管理用例和缺陷的Web系统项目。测试新人照着填能出完整报告,老手则可以把它当检查清单,避免漏项。下面按实际填表顺序拆开讲。
2. 先把报告骨架立住:版本记录、项目信息与测试概要的填法
2.1 版本变更记录:让报告从“草稿”到“正式发布”有迹可循
版本变更记录表有五列:版本号、操作人、操作、日期、说明。模板里V1.0先是“创建”,再是“校对”,同一版本号对应两行操作,这个设计很容易被忽略。很多新手拿到模板后把“校对”那行删掉,觉得同版本号重复了;等评审问“这一版到底谁审过、什么时候审的”,就答不上来。
版本变更记录的价值在可追溯性——报告如果被修改过,看这页就能知道谁在什么时候做了什么操作。填法上建议:创建时填版本号、编写人和日期;校对、审核、修订各占一行,版本号不变,操作类型不同;只有内容发生实质变更时才升版本号。操作类型不要自创,按模板里的“创建、校对、修改、正式发布”四类走,顶多加一个“审核”,保持和报告状态字段(草稿/正式发布/正在修改)对得上。
注意一个细节:报告编号,也就是模板里的“JDFWXT_SSQA_2016_001”,编码规则建议是“项目代号_阶段_QA_年份_序列号”。项目代号用拼音缩写,阶段标明是SIT、UAT还是回归,年份写四位,序列号三位补零。这样同一项目的多份报告放在一起,按编号排序就是按时间和阶段排序,找历史报告不用翻文件夹挨个猜。
2.2 项目基本信息表:别把角色和责任填串行
模板0-2这张表有项目名称、客户方、开发方、测试负责人、项目负责人五项,字段少,但最容易填错的是“客户方”和“开发方”的关系。客户方是提出需求、验收并出资的一方;开发方是承接开发和交付的一方。如果测试外包给第三方,测试方的名称要出现在测试负责人或开发方备注里,不能只写身份不写归属。
这五项怎么填才算到位?项目名称写全称加子系统名,例如“XX系统—鉴定服务子系统”,避免只看“XX系统”对不上具体模块;客户方写合同上的法人或牵头部门全称;开发方写到团队级,例如“某公司研发三部”,方便后续追溯;测试负责人和项目负责人写人名加邮箱,不要只写姓氏。模板里的“保密级别”也不要忽略,涉及客户生产数据的项目建议标“普通”以上的级别,而不是空着不填。
提示:报告编号、版本状态、保密级别这三项属于元信息,建议在开始填写正文之前先填完。有人把版本状态留在“草稿”就发给客户,客户直接退回,理由是“没走完审批流程的东西我们不看”。
2.3 测试概要:先写假设,再谈范围和项目背景
测试概要在模板里是一个简介性质的章节,包含测试范围、测试目的、测试假设。很多人把它写成一段套话,比如“本项目测试覆盖了系统全部功能”,实际上这里最关键的是那四条假设:
a) BA人员提供的需求用例可以100%反映业务需求;b) 需求变更后会及时更新用例或发布需求变更;c) 任何测试需求变更是稳定、有序的;d) 业务对测试人员提供必要的业务培训或协助。
为什么假设这么重要?因为测试报告是有边界的——假设a决定了“需求没写的东西,测不到不算漏测”;假设b决定了“需求变了而用例没更新,问题不该算在测试头上”。评审最爱挑战的就是“这个功能为什么没测”,假设部分就是你回答这类问题的事前依据。
项目背景这一小节在模板里只有标题没有内容,填的时候写两到三行就好:系统服务的业务是什么、本次测试处在哪个里程碑。例如“本系统为鉴定业务的线上办理平台,本次测试针对V2.0版本,为项目验收提供质量依据”。不要写成长篇项目介绍,评审想知道的是“为什么这次测试会发生”,不是业务科普。
2.4 测试环境与配置:三层架构的环境表逐项拆解
模板2.2按数据库服务器、应用服务器、客户端三张配置表组织,每张表要填机器名、CPU、内存、软件环境。适用范围很明确:B/S架构的三层系统。如果是单机部署或容器化部署,把“应用服务器”和“数据库服务器”合并成“服务器环境”一列即可,但机器名和软件环境这两个字段必须保留。
填表的颗粒度要注意:机器名不要写“server1”就完事,要区分用途,比如“TEST_DB_01”一看就知道是测试环境数据库节点;CPU和内存写实际规格;软件环境写操作系统、中间件、数据库版本的完整组合。版本号不能省略,兼容性测试结果是否可信,全靠环境版本兜底。
| 环境角色 | 机器名 | CPU/内存 | 软件环境 |
|---|---|---|---|
| 数据库服务器 | TEST_DB_01 | 8核16线程/16G | Windows Server 2016、MySQL 5.7 |
| 应用服务器 | TEST_APP_01 | 8核16线程/16G | Windows Server 2016、JDK 1.8、Tomcat 8.5 |
| 客户端 | TEST_CLIENT_01~05 | 4核8线程/8G | Windows 10、Chrome 90+、IE11 |
模板里还有一条“说明”字段,建议填访问地址、账号权限范围、测试数据初始化方式。特别是测试数据初始化——性能测试和可靠性测试前后数据是否清零,会直接影响缺陷复现,这条不写清楚,后面分析缺陷时很容易扯皮。
2.5 测试方法与工具:一张表把口径统一
模板2.3给出了一张“测试内容/测试方法/测试工具/备注”的汇总表,里面功能、安全、兼容性、易用性、文档测试五类,方法都是“黑盒、手工、回归”,工具都是“禅道”。这张表看着简单,但它统一了两个口径:
第一,测试方法是黑盒为主。也就是说报告不讨论代码覆盖率、不讨论单元测试,只验证外部行为。第二,回归测试是标准动作。功能、安全、兼容性测试都标注了“回归”,意味着每条缺陷修复后都要走一遍回归,不能只验证修复点不验证周边。
填这张表时,建议把“文档测试”也保留。文档测试在模板里单独出现,说明文档验收也是交付物的一部分,比如用户手册里的截图与实际界面不符、按钮名称与系统不一致,都算缺陷。很多项目把这条漏掉,等到交付文档评审时才被发现。
2.6 参考资料与术语表:把依据写在明处
模板1.3参考资料列了需求规格说明书、测试用例V1.0、GBT 15532-2008 计算机软件测试规范、GBT 9386-2008 计算机软件测试文档编制规范。参考资料的价值是把报告依据固定下来,写的时候要带文档版本号,比如“需求规格说明书V2.3”,不能只写名称不带版本。
术语和缩略语表容易走两极:要么不填,要么把所有IT术语都扔进去。正确做法是只收录报告里有特殊含义的词,比如模板里的“用户”“系统管理员”“UDC”“BA”。如果报告通篇没用到UDC、BA,那这条术语就不该出现在表里。术语表的作用是消除歧义,不是展示词汇量。
3. 把测试内容和执行情况写出说服力:从通过率到覆盖率的度量细节
3.1 项目测试概况表:通过率不是“算个数”,是“逼数据完整”
模板3.1的项目测试概况表是整份报告的数据中枢,字段有项目版本、开始时间、结束时间、用例数、用例通过数、问题数与用例通过率。填这张表前,必须先把统计口径想清楚,否则后面3.2、4.1都会跟着乱。
口径一:用例数指的是本次报告周期内计划执行的有效用例数,不是维护在禅道里的总用例数。口径二:用例通过数指的是最后一次执行结果为通过的用例数,中间失败但后续修复通过,按通过计。口径三:问题数指的是缺陷管理单里的缺陷数,一个缺陷可能关联多个用例,所以问题数和用例通过数之间没有加减关系,别拿“用例总数减通过数等于问题数”来反推。
通过率公式在模板里给了:执行数除以用例总数乘以百分之百。实际使用时我会同时算两个辅助指标:阻塞用例数和重测通过率。阻塞用例数反映测试环境稳定性,重测通过率反映开发修复质量,这两个数不是模板必填项,但写进测试结论会比单看一个通过率更有分量。
示例:假设用例数286,通过数261,问题数43,则通过率为91.3%。这组数据填进概况表后,再看3.2模块表的通过率合计是否一致,如果模块表加起来对不上,回查禅道导出数据。
3.2 功能测试:模块表、轮次和冒烟测试三件套
功能测试在模板里要求按模块填表:模块名称、开始时间、结束时间、用例数、通过数、问题数、通过率,还包含每轮分布后的例行冒烟测试。填写时先按模块分表,再用一行汇总,模块粒度不要太大也不要太细。“系统管理”“业务办理”这种粒度看不出工作量;“用户新增按钮”这种粒度又会导致用例数被拆得七零八落。比较实用的粒度是页面级或功能点级,例如“登录/退出”“鉴定申请”“鉴定审核”“报表查询”四行,正好覆盖主流程和支撑流程。
轮次怎么填?模板给了两个空:模块内功能测试执行了N轮,冒烟测试执行了M轮。这个数字要写实际执行的轮次,比如“模块内功能测试共执行3轮,冒烟测试共执行2轮”。如果只写1轮,说明覆盖不足,评审通常都会追问:1轮全过的话,问题数为什么还有43个?所以轮次数必须和缺陷趋势前后呼应——第1轮发现问题最多,第2轮收敛,第3轮回归通过,这样的曲线本身就是测试有效性的证据。
填写模块表时还要注意时间区间。模块并行执行时,时间区间可以有重叠,但不能出现“模块A还没开始、模块B已经结束”这种逻辑颠倒,评审看到时间轴异常会怀疑报告的严谨性。
3.3 性能测试:先定基线,再谈并发
3.3性能部分在模板里拆成了5个小节:性能测试用例、参数设置、通信效率、设备效率、执行效率。这块是很多测试报告的短板,要么只贴LoadRunner截图,要么只写“性能良好”四个字。模板预留了表格,问题在于怎么把表格填得有说服力。
先看性能测试用例。模板里给了一个例子:“登录、XX用户同时登录查询退出”,基本要求要写清楚预期的响应时间和成功率约束,比如“500用户并发登录,成功率99.5%以上,平均响应时间不超过3秒”。没有写成量化指标的表述都不该出现,这是性能报告的第一原则。
参数设置建议按下面的粒度记录:
| 参数项 | 填写方式与建议 |
|---|---|
| 脚本循环次数 | 按迭代轮次设定,单轮不少于3次,压测时持续循环至系统稳定 |
| 并发用户数 | 按业务峰值估算,从50开始逐档翻倍加压 |
| 真实客户端数 | 按测试机数量填写,与并发用户数区分 |
| 脚本录制方法 | 自动/手动,注明录制工具,例如LoadRunner |
| 模拟线路类型 | 10/100M以太网,或注明实际测试网络环境 |
实际执行时,从50并发开始摸底,每档翻倍,直到响应时间劣化或错误率超过阈值,记录每个阶梯的结果。并发数和真实客户端数不要混填——如果只有10台客户端,每台虚拟用户数设置得再高,结果也会被本机资源拖累,要在报告里说明这个约束。
通信效率表关注接收/发送字节数和当前带宽占用;设备效率表关注CPU、内存、磁盘占用率、磁盘传输率;执行效率表关注不同并发下登录、查询、退出的平均响应时间。填这些表有一个通用手法:先写性能指标数值,再配说明,解释为什么这个数值可以接受。判断标准可以写“业务预期2秒内”“参照上一版本基线”“参照同类系统公开指标”,但必须写明比较基准是谁,否则数值绿灯没有意义。
注意:性能测试截图不要一次性堆十张。每张图配一句话结论,截图放在指标表之后,表格数据为主,截图只是佐证。如果响应时间波动剧烈,宁可把波动范围写出来,也不要只写平均值掩盖毛刺。
3.4 可靠性、安全性与兼容性测试:用“实现要求”收口结果
这三类测试模板里各带一张表,字段是:测试内容、基本要求、测试情况、测试通过。写法的核心是把“基本要求”写成可验证的断言,例如可靠性表的“客户机掉电或强行关机后重启机器,不丢失数据”、安全性表的“所有授权用户能在所授权限下进行工作,不允许超越权限”、兼容性表的“系统能够使用Chrome和IE8及以上访问且能正常使用”。
把“基本要求”写成可验证断言后,“测试通过”一栏才能填得理直气壮。如果填“基本通过”或“部分通过”,那基本要求本身就要拆分,比如权限测试拆成“正常授权用户可访问”“越权访问被拦截并记录日志”两条,分别填通过状态,而不是一条笼统结果。
兼容性测试有个常见坑:测试环境里的“Chrome版本”只写“Chrome”没写版本号。模板示例里明确写了具体版本和“IE8及以上”,说明兼容性测试必须体现版本边界。填写时建议写“Chrome 90+,IE11,Edge Chromium”,并在说明中注明用什么工具做了多浏览器并行验证。
安全测试的表格填完,还要在说明里写清楚是否做了越权测试、SQL注入和敏感数据加密验证。模板4.1缺陷表格里安全缺陷通常单独分类,安全测试表格里的结论会和后面缺陷统计互相印证,这两处数据要对得上,不能前面说全部通过,后面缺陷分析里又冒出两个安全缺陷。
3.5 易用性测试与覆盖分析:覆盖率要主动解释分母
易用性测试在模板里有表格但没有细分内容,实际填写时建议按操作效率、用户习惯、UI规范三个维度各写至少一条验证项。比如“用户能在一级菜单内完成鉴定申请全流程,不需要跳转超过3个页面”“高频操作按钮在页面固定位置”“页面字体、颜色、间距符合UI规范”。易用性测试看似主观,但写成可验证的操作路径后,同样可以给出通过或不通过的结论。
覆盖分析表是本章最后一张表,结构是:模块名称、用例个数、执行数、各模块测试覆盖率、未/漏测分析和原因。覆盖率的计算公式模板里给了:执行数除以用例总数乘以百分之百。
这栏最容易被忽略,很多人算完覆盖率就上传,不解释未执行的是什么。建议把未执行用例分三类写:环境不具备(如依赖第三方接口未就绪)、需求变更导致用例废弃、时间不足无法执行。三类原因里,前两类可以接受,第三类要单独说明风险等级,并明确写在残留缺陷中。因为测试报告的本质是暴露风险,覆盖分析表就是整份报告里证明“自己知道没测什么”的关键位置。
4. 缺陷统计与分析:用数据回答“测出来的东西到底代表什么”
4.1 缺陷汇总:三张维度的图表要对着看
模板4.1要求从“问题类型”“其他数据”“问题产生原因”三个维度做BI表或柱状图。问题类型通常按缺陷性质分:功能错误、界面问题、数据问题、性能问题、安全漏洞、兼容性问题、文档错误。问题产生原因建议按缺陷引入阶段分:需求理解偏差、设计缺陷、编码错误、数据配置错误、环境问题。其他数据这里最实用的是缺陷的轮次分布和严重程度分布。
三张图表要对着看,不要单独看。例如功能错误数量高,且产生原因集中在“编码错误”,说明开发自测不充分;界面问题多且集中在“需求理解偏差”,说明UI走查环节缺失;性能问题数量少,但标记为严重的占比高,就比几十个界面小问题更需要优先关注。这就是分析而不只是统计。
实际操作时,先把禅道的缺陷导出为CSV,再做透视表。这里给一个轻量处理脚本,用Python直接统计CSV里缺陷类型和严重程度的分布,适合禅道导出后快速出数。
import csv from collections import Counter def defect_stats(csv_path, type_col="严重程度", severity_col="缺陷类型"): rows = [] with open(csv_path, encoding="utf-8-sig", newline="") as f: reader = csv.DictReader(f) rows = list(reader) type_counter = Counter(r[type_col] for r in rows if r.get(type_col)) severity_counter = Counter(r[severity_col] for r in rows if r.get(severity_col)) total = len(rows) print("缺陷总数:", total) for name, count in type_counter.most_common(): print(f"{name}: {count} ({count/total:.1%})") print("严重程度分布:", dict(severity_counter)) if __name__ == "__main__": defect_stats("defects.csv")代码逻辑说明:用csv.DictReader按表头读入导出文件,Counter统计两个指定字段的分布,打印总数和百分比。两个字段参数可以用默认值,也可以按禅道导出模板的表头改成“bug类型”“bug严重程度”等实际列名。
参数说明:csv_path填导出文件路径;type_col和severity_col分别对应缺陷类型和严重等级的列名,导出模板列名变化时只需改这两个参数,不用改统计逻辑。编码用utf-8-sig是考虑到禅道导出的CSV通常带BOM,直接utf-8读会把第一个列名读出乱码。
统计出分布后,在Excel里做透视表堆叠柱状图更直观:行放“缺陷类型”,列放“严重程度”,值放“计数”,图表类型选堆叠柱状图。这种图能同时看出哪类缺陷最多、严重缺陷集中在哪个类型,比纯表格更适合放进报告。
4.2 重要缺陷分析:不要让“已修复”三个字交代所有事
模板4.2的重要缺陷分析表字段是:模块名称、缺陷编号、简要描述、分析结果、测试通过状态。这里的“分析结果”是最能区分报告质量的一栏,只写“已修复”等于没写。合格的分析结果至少要包含三件事:缺陷是怎么引起的、影响范围有多大、修复后回归验证结论是什么。
举一个可以落地的写法:缺陷编号BUG-102,模块“鉴定审核”,现象是“审核员提交意见后列表不刷新”。分析结果写:原因,审核接口在成功后未触发列表查询事件;影响,所有含审核流转的页面在提交后均存在数据滞后显示;已在当前版本修复,并对鉴定申请、鉴定审核、报表查询三个模块执行回归,均通过。
这样写的价值是评审可以快速判断:这个缺陷是不是典型问题、修复是否彻底、回归是否覆盖到相关功能。填写顺序建议按严重程度从高往低排,只挑重要缺陷,不是把全部缺陷都贴进来——全部缺陷在4.1的分布图里已经出现了,4.2的责任是解释原因。
4.3 残留缺陷与未解决问题:这节不写,测试结论就没有边界
模板4.3要求记录:模块名称、缺陷编号、性质、简要描述、原因分析。特别要求分析“如何引起缺陷,缺陷的后果,描述造成软件局限性和其他限制性的原因”。残留缺陷通常分三类处理:不修复的已知缺陷、暂缓修复的缺陷、环境原因无法复现的缺陷。
不修复的缺陷最常见的原因是业务取舍。比如某个提示文案不全,产品评估认为不影响主流程,决定本期不做。这类缺陷要写明决策人,出现开发团队私自关闭的情况,报告评审时会被挑战。
暂缓修复的缺陷要写明计划版本和影响范围,例如“报表导出在数据量超过10万行时响应时间超过10秒,优化排期在下一迭代”。这条必须写进风险清单,否则下一版本迭代时容易忘。
环境原因无法复现的缺陷最麻烦。写明复现步骤、现场日志和已排查原因,结论写“待环境恢复后复测”,不要写“无法复现”就了事——这四个字在缺陷管理里基本等于悬案,评审会认为测试方没有尽到跟踪义务。
5. 软件测试报告避坑:模板到落地的五个真问题
5.1 占位符替换不彻底,报告交到评审手里还带“XX”
现象:封面、页眉、正文表格里仍然能看到“XX系统”“XXX系统”“[ ]草稿”这类占位符,个别地方替换了,页眉页脚没替换。
原因:模板是从别处拿来的,很多人只盯着正文改,全局查找替换做了几轮,但页眉页脚、表格标题、引用块里的占位符漏掉了。特别是“JDFWXT_SSQA_2016_001”这种报告编号原样出现在首页,评审一眼就知道是复制来的。
解决:动笔前先做一次全局替换,把“XX”“XXX”“[ ]”全部查出;替换完正文再检查页眉页脚和文件属性里的标题;最后导出PDF目检一遍,重点看封面、目录页、表格表头。不要只信Word的替换统计数字,PDF里肉眼过一遍最实在。
5.2 用例统计口径不一致,通过率前后对不上
现象:3.1概况表写了用例数286、通过率91.3%,3.2功能模块表各模块用例相加只有250条,通过率算出来也不是91.3%。
原因:概况表统计的是全部用例,模块表统计的是本次实际执行到的用例,两者本就不是一回事;或者中途需求变更删除了部分用例,但禅道里的状态没同步。
解决:先在3.1下面加一句话说明统计口径:“用例数以本次报告周期内实际执行的有效用例计,需求变更废弃用例不计入。”然后所有模块表的用例数之和与概况表严格一致。每天测试结束从禅道导一份当前统计数据,快照留档,评审问差异时直接翻快照。
5.3 性能表只有截图没有数值,评审看完一脸懵
现象:性能章节贴了五六张LoadRunner截图,看不到数字表格,结论写“系统性能稳定”。
原因:截图是工具自动生成的,测试人员没把关键指标摘录成表,也没有和业务预期对比。
解决:先填表再贴图。把平均响应时间、最大并发数、错误率、CPU占用率四类关键数值摘进对应的表,每张图下面加一行结论句。如果响应时间有波动,把P90和P95也一并写上,只写平均值会掩盖长尾问题。
5.4 严重等级和优先级混用,缺陷定级跟着感觉走
现象:把“登录按钮文案不统一”标成严重,把“并发下偶发登录失败”标成普通。开发按严重等级排修复顺序,结果普通缺陷反而导致线上问题。
原因:很多人用优先级直觉代替严重度矩阵。严重度描述的是影响程度,优先级描述的是修复次序,两者不能互相替代。
解决:按“影响范围、数据损失、可绕过性”三维矩阵定严重度:影响全部用户且无替代路径的算严重;影响部分用户但有替代路径的算一般;只影响展示不阻塞流程的算轻微。优先级再结合发布时间和开发资源排。报告里凡是有“严重程度”这一列,就必须用统一矩阵打分,不能拍脑袋。
5.5 测试结论直接抄模板,通篇都是“完全达到要求”
现象:5.1的测试结论几乎照抄模板原文,“系统架构先进、功能全面、安全性较好、可靠性高、兼容性好”这类话全部保留,没有对应数据支撑。
原因:模板的结论部分是往期项目的评价示例,写报告时顺手改了个系统名称就交了。评审一旦追问“先进在哪里、通过率多少、覆盖多少”,报告里找不出依据。
解决:把结论改写成“数据加结论”结构,例如“功能测试用例286条,通过率91.3%;性能测试在500并发下平均响应时间2.1秒,错误率0.2%;安全测试越权访问拦截率100%。”每一条结论都对应一个可复核的数据来源。模板里的形容词可以删,数据不能缺。
6. 让这份模板真正复用的三个小习惯:从占位符清理到结论三件套
6.1 替模板建一个“占位符清理检查单”
每次拿到模板先不急着写内容。把全文所有“XX”“XXX”“[ ]”列成一个清单,逐个确认替换,确认过的打个勾。这条其实是5.1避坑动作的固定化,用不了十分钟,但能避免报告发出去之后被评审指着封面问“这个XX是哪来的”的尴尬。
6.2 报告编号和版本记录固定为第一动作
填完项目信息后,立刻把报告编号和版本状态写进摘要页,并在版本变更表里登记“创建”一行。之后再改内容,每改一轮同步补“修订”行。这样的好处是,不管中间改了几版,交出去之前都能准确说出当前版本相比上一版改了什么。
6.3 结论栏拆成“达标结论、残留风险、未覆盖项”三部分
模板5.1测试结论和5.2建议分开,但建议部分容易写成空话。我习惯把结论拆成三块:已达标项,带数据引用;残留风险,引用4.3残留缺陷表;未覆盖项,引用3.5覆盖分析表。这样写,评审关心的三个问题都能在同一页找到答案。
从那以后,我每次出测试报告都强制走一遍这套流程:先清占位符,再定统计口径,最后用数据填结论。模板能兜住格式,兜不住数据,数据是自己挣出来的。希望帮到你。
本文还有配套的精品资源,点击获取