CN112000587B - 一种基于关联对象操作统计的测试工时自动统计方法 - Google Patents
一种基于关联对象操作统计的测试工时自动统计方法 Download PDFInfo
- Publication number
- CN112000587B CN112000587B CN202011180987.1A CN202011180987A CN112000587B CN 112000587 B CN112000587 B CN 112000587B CN 202011180987 A CN202011180987 A CN 202011180987A CN 112000587 B CN112000587 B CN 112000587B
- Authority
- CN
- China
- Prior art keywords
- test
- hour
- data
- page
- tester
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种基于关联对象操作统计的测试工时自动统计方法,包括:A.建立实体元素层级树;B.建立测试工时数据表;C.对创建用例、编辑用例、执行用例、创建缺陷和更新缺陷状态等操作添加埋点;D.在软件的图形用户界面、程序接口、程序方法以及程序函数上添加埋点;E.建立后台管理***,并建立测试工时统计和分析的页面;F.建立测试估时准确性的分析页面。本发明将测试工作过程中的全部三类工作:编写和执行测试用例、对软件进行测试、提交和验证缺陷,都可以转化为对软件实体元素的操作动作,并可以利用数据采集工具自动统计操作时长。实现了完全客观化的统计测试工时,数据真实有效,准确度和可信度高。
Description
技术领域
本发明涉及软件测试技术领域,尤其涉及一种基于关联对象操作统计的测试工时自动统计方法。
背景技术
随着互联网时代的不断发展,软件是人们在日常处理工作文件时不可或缺的工具,而一般软件在正式投用前都会有软件测试人员用例对各个模块进行功能测试。而在软件测试领域,项目的测试工时的统计和分析对测试人员和测试团队的效能度量、项目质量度量均有重要意义。
当前对测试工时进行统计大多采用以下方案:在某个任务开始执行前,测试人员在项目管理***中填报该任务的预估测试工时,在任务完成后,测试人员在项目管理***中填报该任务的实际测试工时。在预先估计测试工时和实际测试工时的时候对这两项数据进行结合。
此种方法在一定程度上能够度量项目任务的复杂性、测试人员的工作效能以及测试工时评估的准确性。但这种做法完全依赖于测试人员的主观评估,具有较大的随意性,且受测试人员的经验、职业道德水平等因素所影响,准确度和可信度难以保证。
发明内容
为解决上述问题,本发明提供一种基于关联对象操作统计的测试工时自动统计方法,能够完全客观化的统计测试工时,数据真实有效,准确度和可信度高。
本发明提供一种基于关联对象操作统计的测试工时自动统计方法,包括:
A.对软件进行实体元素提取,将提取到的实体元素存放在数据库的实体元素表中,根据实体元素的所属关系建立新的实体元素层级树或者更新已有的实体元素层级树,将新建立的实体元素层级树或者更新的实体元素层级树存放在数据库的实体元素层级树表中;
B.在数据库中建立测试工时数据表,收集测试人员对软件实体元素的操作耗时;
C.在测试用例管理***和缺陷管理***的页面上,对创建用例、编辑用例、执行用例、创建缺陷和更新缺陷状态这些操作添加埋点,收集测试人员对实体元素进行操作的停留时长,操作完成后,将实体元素的操作类型和操作停留时长的数据传输到后台程序并保存到数据库的测试工时数据表中;
D.在软件的图形用户界面、程序接口、程序方法以及程序函数上添加埋点,收集测试人员对软件的功能模块、功能组件、程序接口、程序方法以及程序函数的实体元素进行操作的停留时长;操作完成后,将实体元素的操作类型和操作停留时长的数据传输到后台程序并保存到数据库的测试工时数据表中;
E.建立后台管理***,并建立测试工时统计和分析的页面;页面展示每个测试人员在工作日内对所有实体元素的测试工时统计总时长;
F.在后台管理***中建立测试估时准确性的分析页面,页面展示软件功能模块的预估测试工时和实际测试工时,并计算和展示预估准确率;其中预估测试工时数据来自于项目管理工具中的已有数据,实际测试工时来自于测试工时数据表。
本发明将测试工作过程中的全部三类工作:编写和执行测试用例、对软件进行测试、提交和验证缺陷,都可以转化为对软件实体元素的操作动作,并可以利用数据采集工具自动统计操作时长。实现了完全客观化的统计测试工时,数据真实有效,准确度和可信度高。
进一步的,步骤A包括:对软件的功能模块、功能组件、代码模块以及代码行中包含的实体元素进行提取;提取到实体元素后,根据实际语义上的从属关系建立实体元素层级树并保存在实体元素层级树表中;如果实体元素层级树表中已有该实体元素层级树则对其进行更新。
所述步骤A提取出软件的所有实体元素,用于计算和统计所有操作这些实体元素的测试工时。将所有实体元素构建为实体元素层级树的目的是为了可以按照功能模块来查询属于该功能模块的所有实体元素,便于计算和统计该功能模块的整体测试工时。
进一步的,步骤B包括:在数据库中建立测试工时数据表,该测试工时数据表包括以下字段:该表的主键ID、实体元素ID、测试人员ID、操作类型、操作持续时间以及操作日期;
建立该测试工时数据表用于保存测试人员对每个实体元素的操作工时数据。
所述步骤B用于记录测试人员对每一个软件实体元素的操作耗时。因为测试工时的实质就是测试人员在软件上的操作耗时,所以每个操作耗时累加起来就是测试工时。
进一步的,步骤C包括:在测试用例管理***的页面上,对创建用例、编辑用例、执行用例的页面操作控件添加埋点;以及在缺陷管理***的页面上,对创建缺陷、更新缺陷状态的页面操作控件添加埋点;
当测试人员对测试用例做了创建用例、编辑用例或者执行用例操作后,埋点程序将对应操作事件发送至后台程序;或者当测试人员对缺陷做了创建缺陷或者更新缺陷状态操作后,埋点程序将对应的操作事件发送至后台程序;
后台程序接收到操作事件后,解析事件中的数据,并生成一个测试工时数据保存到数据库的测试工时数据表中。
所述步骤C收集测试用例编写和更新、缺陷编写和更新过程中,测试人员对每个软件实体元素的操作耗时,用于计算和统计测试工时。
进一步的,步骤D包括:在软件的图形用户界面、程序接口、程序方法和程序函数上添加埋点,当测试人员在软件图形用户界面、程序接口、程序方法或者程序函数上进行了操作后,埋点程序将对应操作事件发送至后台程序;
后台程序接收到操作事件后,解析事件中的数据,并生成一笔测试工时数据并保存到数据库的测试工时数据表中。
所述步骤D收集测试人员在软件界面、程序接口等组件中,测试人员对每个软件实体元素的操作耗时,用于计算和统计测试工时。
进一步的,步骤E包括:建立后台管理***,并建立测试工时统计和分析页面;该页面设置了测试人员ID和操作日期两个统计条件;
当选择操作日期这一个条件进行数据统计时,后台程序根据操作日期条件在测试工时数据表中筛选相应的操作日期内的所有测试工时数据,并根据测试人员ID为分组条件计算测试工时总时长,将所有测试人员在该日期内的测试工时总时长发送给页面进行展示,且可以根据测试工时的长短做升序或者降序的排名;
当同时选择测试人员ID和操作日期这两个条件进行数据统计时,后台程序根据测试人员ID和操作日期这两个条件在测试工时数据表中筛选该测试人员在该操作日期内的所有测试工时数据,并计算测试工时总时长,将该测试人员在该日期内的测试工时总时长发送给页面进行展示。
所述步骤E汇总、计算和统计上述收集到的数据,得到测试人员对软件实体元素的测试工时,并输出到页面。
进一步的,步骤F包括:在后台管理***中建立测试估时准确性的分析页面,该页面设置了软件功能模块和项目周期时间段这两个统计条件,其中软件功能模块的数据来自于数据库的实体元素层级树表,项目周期时间段的数据来自项目管理工具,该页面从项目管理工具中获取每一个项目周期时间段内测试人员对软件功能模块的预估测试工时数据且展示在页面上;
当选择某个软件功能模块和该功能模块的项目周期时间段时,后台程序根据软件功能模块名称,在实体元素层级树表中查询以该软件功能模块名称为根节点的实体元素层级树,获取到树中的所有子节点,遍历每个子节点,在实体元素表中查询每个子节点对应的实体元素数据,根据实体元素ID和项目周期时间段这两个数据,在测试工时数据表中筛选出相应实体元素ID以及创建日期在项目周期时间段内的所有测试工时数据,最后加总计算测试工时总时长,将结果返回给页面;
页面展示该软件功能模块的预估测试工时和实际测试工时,根据工时预估准确率=(实际测试工时/预估测试工时)×100%,计算出工时预估准确率并进行展示。
所述步骤F能够根据测试工时统计结果,和预估工时进行比较,计算和展示预估准确率,并输出到页面。
本发明将文字化的测试用例、缺陷中包含的软件功能、软件模块、程序接口、程序方法、程序函数等元素进行组件化,定义为软件的“实体元素”,每一个测试用例和缺陷都可以转化为对某个或者某一些实体元素的操作动作。在软件模块、测试用例管理***和缺陷管理***中,使用埋点技术,为软件的实体元素添加埋点,收集测试人员对软件实体元素的操作动作和操作时长。测试工作过程中的全部三类工作:编写和执行测试用例、对软件进行测试、提交和验证缺陷,都可以转化为对软件实体元素的操作动作,并可以利用数据采集工具自动统计操作时长。我们定义,测试工作过程中,只有对软件实体元素进行了操作,才是有效的测试工作。那么结合测试人员的预估测试工时,能够真正有效的评估测试人员的工作效能和测试人员对测试工时评估的准确性。能够完全客观化的统计测试工时,数据真实有效,准确度和可信度高。
附图说明
图1为本发明一种基于关联对象操作统计的测试工时自动统计方法的流程图。
具体实施方式
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
如图1所示本发明一种基于关联对象操作统计的测试工时自动统计方法,包括:
A.建立实体元素层级树。
A1.对软件的功能模块、功能组件、代码模块、代码行中包含的实体元素进行提取。假设软件中包含了A、B、C、D、E五个实体元素,提取出这五个实体元素,保存在数据库的实体元素表中。
A2.对A、B、C、D、E五个实体元素,按照实际语义上的从属关系,建立实体元素层级树。例如A、B、C、D、E从左至右依次具有从属关系,即E属于D、D属于C,等等。则以A为根节点,建立从A到E的5层树。
A3.将步骤A2中建立的实体元素层级树保存在数据库的实体元素层级树表中。如果数据库中已经存在以A为根节点或某个子节点的实体元素层级树,且A、B、C、D、E五个节点在该树中均存在,且有与步骤A2中的树一致的节点从属关系,则放弃保存,略过;如果数据库中不存在以A为根节点或某个子节点的实体元素层级树,或者不存在包含了完整的A、B、C、D、E五个节点及一致的节点从属关系的实体元素层级树的话,则将步骤A2中新建的树保存在表中。
B.建立测试工时数据表。
在数据库中建立测试工时数据表,用于保存测试人员对每个实体元素的操作工时数据。
测试工时数据表包括以下字段:该表的主键ID、实体元素ID、测试人员ID、操作类型、操作持续时长以及操作日期。
C.对创建用例、编辑用例、执行用例、创建缺陷和更新缺陷状态等操作添加埋点。
C1.在测试用例管理***的页面上,对创建用例、编辑用例、执行用例等页面操作控件添加埋点,可使用JS脚本等自研埋点工具,或者GrowingIO等商业化的埋点工具。
C2.当测试人员对包含了A、B、C、D、E五个实体元素的测试用例做了创建用例、编辑用例、执行用例等操作后,埋点程序将对应操作事件发送至后台程序。例如,测试人员对实体元素A做了创建用例操作,持续时长为5分钟。当操作完成后,埋点程序向后台程序发送一个事件类型为“创建用例”的操作事件,包含了实体元素ID、测试人员ID、操作类型、操作持续时长、操作日期等数据。后台程序接收到操作事件后,解析事件中的数据,并生成一笔测试工时数据,保存到数据库的测试工时数据表中。
C3.在缺陷管理***的页面上,对创建缺陷、更新缺陷状态等页面操作控件添加埋点。
C4.测试人员对包含了A、B、C、D、E五个实体元素的缺陷做了创建缺陷、更新缺陷状态等操作后,埋点程序将对应操作事件发送至后台程序。例如,测试人员对实体元素B做了创建缺陷操作,持续时长为5分钟。当操作完成后,埋点程序向后台程序发送一个事件类型为“创建缺陷”的操作事件,包含了实体元素ID、测试人员ID、操作类型、操作持续时长、操作日期等数据。后台程序接收到操作事件后,解析事件中的数据,并生成一笔测试工时数据,保存到数据库的测试工时数据表中。
D.在软件的图形用户界面、程序接口、程序方法以及程序函数上添加埋点。
D1.在软件的图形用户界面上添加埋点,可使用JS脚本等自研埋点工具,或者GrowingIO等商业化的埋点工具。
D2.当测试人员对包含了A、B、C、D、E五个实体元素的软件图形用户界面做了点击按钮、在输入框中输入数据等操作后,埋点程序将对应操作事件发送至后台程序。例如,测试人员对实体元素C做了在输入框中输入数据操作,持续时长为10秒。当操作完成后,埋点程序向后台程序发送一个事件类型为“页面功能测试”的操作事件,包含了实体元素ID、测试人员ID、操作类型、操作持续时长、操作日期等数据。后台程序接收到操作事件后,解析事件中的数据,并生成一笔测试工时数据,保存到数据库的测试工时数据表中。
D3.在程序接口、程序方法、程序函数上添加埋点,可使用自研埋点工具,收集接口调用、方法调用、函数调用等操作的数据。
D4.当测试人员对包含了A、B、C、D、E五个实体元素的程序接口、程序方法、程序函数等代码模块做了调用接口、调用方法、调用函数等操作后,埋点程序将对应操作事件发送至后台程序。例如,测试人员对实体元素D做了调用接口操作,持续时长为1秒。当操作完成后,埋点程序向后台程序发送一个事件类型为“接口测试”的操作事件,包含了实体元素ID、测试人员ID、操作类型、操作持续时长、操作日期等数据。后台程序接收到操作事件后,解析事件中的数据,并生成一笔测试工时数据,保存到数据库的测试工时数据表中。
E.建立后台管理***,并建立测试工时统计和分析的页面。
E1.建立后台管理***,并建立测试工时统计和分析页面。页面设置测试人员ID和日期两个统计条件,可根据两个统计条件进行组合统计。
E2.当选择操作日期这一个条件进行数据统计时,后台程序根据操作日期条件在测试工时数据表中筛选相应的操作日期内的所有测试工时数据,并根据测试人员ID为分组条件计算测试工时总时长,将结果返回给页面展示出所有测试人员在该日期内的测试工时总时长,且可以根据测试工时的长短做升序或者降序的排名;
E3.当同时选择测试人员ID和操作日期这两个条件进行数据统计时,后台程序根据测试人员ID和操作日期这两个条件在测试工时数据表中筛选该测试人员在该操作日期内的所有测试工时数据,并计算测试工时总时长,将结果返回给页面展示出该测试人员在该日期的测试工时总时长。
F.建立测试估时准确性的分析页面。
F1.在后台管理***中建立测试估时准确性的分析页面,该页面设置了软件功能模块和项目周期时间段这两个统计条件,其中软件功能模块的数据来自于数据库的实体元素层级树表,项目周期时间段的数据来自项目管理工具,该页面从项目管理工具中获取每一个项目周期时间段内测试人员对软件功能模块的预估测试工时数据且展示在页面上;
F2.当选择某个软件功能模块和该功能模块的项目周期时间段时,后台程序根据软件功能模块名称,在实体元素层级树表中查询以该软件功能模块名称为根节点的实体元素层级树,获取到树中的所有子节点,遍历每个子节点,在实体元素表中查询每个子节点对应的实体元素数据,根据实体元素ID和项目周期时间段这两个数据,在测试工时数据表中筛选出相应实体元素ID以及创建日期在项目周期时间段内的所有测试工时数据,最后加总计算测试工时总时长,将结果返回给页面;
F3.页面展示该软件功能模块的预估测试工时和实际测试工时,根据实际工时在预估工时中所占百分比,计算和展示预估准确率。
实施例1.
假定现在有一个网站,包含“X:首页”、“Y:注册页面”、“Z:购物车页面”等功能模块。现在需要对“Y:注册页面”这个功能模块进行新功能开发,该模块包含了“A:用户名”、“B:设置密码”、“C:确认密码”、“D:注册按钮”、“E:UserRegisterService”、“F:doRegister()”等六个实体元素。在项目管理工具中,“Y:注册页面”功能模块的项目周期时间段为2020-07-01到2020-07-05,测试人员对“注册页面”的预估测试工时为20小时。
一、提取软件的实体元素,生成实体元素数据和实体元素层级树数据。
a.“Y:注册页面”这个软件功能模块包含了“A:用户名”、“B:设置密码”、“C:确认密码”、“D:注册按钮”四个功能组件,以及“E:UserRegisterService”、“F:doRegister()”这两个程序接口和程序方法。
b.根据以上六个功能组件、程序接口、程序方法的名称,在数据库的实体元素表中查询是否已经存在相同的实体元素,如果没有,则新建实体元素,并将数据保存在实体元素表中,并获取实体元素的ID;如果有,则直接获取实体元素的ID。在该例中,Y、A、B、C、D、E、F分别是“Y:注册页面”、“A:用户名”、“B:设置密码”、“C:确认密码”、“D:注册按钮”、“E:UserRegisterService”、“F:doRegister()”等七个实体元素的ID。
c.对所有实体元素,按照实际语义上的从属关系,建立实体元素层级树。在该例中,以“Y:注册页面”为根节点,“A:用户名”、“B:设置密码”、“C:确认密码”、“D:注册按钮”、“E:UserRegisterService”、“F:doRegister()”六个实体元素为子节点,建立一棵实体元素层级树。
d.将步骤c中建立的实体元素层级树保存在数据库的实体元素层级树表中。如果数据库中已经存在以Y为根节点或某个子节点的实体元素层级树,且Y、A、B、C、D、E、F七个节点在该树中均存在,且有与步骤c中的树一致的节点从属关系,则放弃保存,略过;如果数据库中不存在以Y为根节点或某个子节点的实体元素层级树,或者不存在包含了完整的Y、A、B、C、D、E、F七个节点及一致的节点从属关系的实体元素层级树的话,则将步骤c中新建的树保存在表中。
二、在数据库中新建测试工时数据表,用于保存测试人员对每个实体元素的操作工时数据。
a.在数据库中建立测试工时数据表,用于保存测试人员对每个实体元素的操作工时数据。
b.测试工时数据表包括以下字段:ID、实体元素ID、测试人员ID、操作类型、操作持续时长、操作日期。
三、在测试用例管理***和缺陷管理***的页面上,对创建用例、编辑用例、执行用例、创建缺陷、更新缺陷状态等操作添加埋点,收集测试人员对实体元素进行操作的停留时长。操作完成后,将实体元素的操作类型、操作停留时长等数据传输到后台程序,保存到数据库的测试工时数据表中。
a.在测试用例管理***的页面上,对创建用例、编辑用例、执行用例等页面操作控件添加埋点,可使用JS脚本等自研埋点工具,或者GrowingIO等商业化的埋点工具。
b.测试人员(ID为TestUserID1)对包含了Y、A、B、C、D、E、F等七个实体元素的测试用例做了创建用例、编辑用例、执行用例等操作后,埋点程序将对应操作事件发送至后台程序。例如,测试人员针对包含了“A:用户名”的测试用例执行了“创建用例”操作,持续时长为5分钟。当操作完成后,测试用例管理***在“创建用例”页面上的埋点程序将会根据测试人员的操作,生成一个操作类型为“创建用例”的事件,包含了实体元素ID为A、测试人员ID为TestUserID1、操作类型为“创建用例”、操作持续时长为5分钟、操作日期为当前日期等数据。后台程序接收到操作事件后,解析事件中的数据,并生成一笔测试工时数据,保存到数据库的测试工时数据表中,此时测试工时数据表的数据为如表1所示:
表1:
ID | 实体元素ID | 测试人员ID | 操作类型 | 操作持续时长 | 操作日期 |
1 | A | TestUserID1 | 创建用例 | 300s | 2020-7-2 |
c.同理,在缺陷管理***的页面上,对创建缺陷、更新缺陷状态等页面操作控件添加埋点,可使用JS脚本等自研埋点工具,或者GrowingIO等商业化的埋点工具。
d.测试人员(ID为TestUserID1)对包含了Y、A、B、C、D、E、F等七个实体元素的缺陷做了创建缺陷、更新缺陷状态等操作后,埋点程序将对应操作事件发送至后台程序。例如,测试人员对“B:设置密码”做了“创建缺陷”操作,持续时长为5分钟。当操作完成后,缺陷管理***在“创建缺陷”页面上的埋点程序向后台程序发送一个操作类型为“创建缺陷”的事件,包含了实体元素ID为B、测试人员ID为TestUserID1、操作类型为“创建缺陷”、操作持续时长为5分钟、操作日期为当前日期等数据。后台程序接收到操作事件后,解析事件中的数据,并生成一笔测试工时数据,保存到数据库的测试工时数据表中,此时测试工时数据表的数据为如表2所示:
表2:
ID | 实体元素ID | 测试人员ID | 操作类型 | 操作持续时长 | 操作日期 |
1 | A | TestUserID1 | 创建用例 | 300s | 2020-7-2 |
2 | B | TestUserID1 | 创建缺陷 | 300s | 2020-7-2 |
四、在软件的图形用户界面、程序接口、程序方法、程序函数上添加埋点,收集测试人员对软件的功能模块、功能组件、程序接口、程序方法、程序函数等实体元素进行操作的停留时长。操作完成后,将实体元素的操作类型、操作停留时长等数据传输到后台程序,保存到数据库的测试工时数据表中。
a.在网站的“注册页面”上,对“用户名”输入框、“设置密码”输入框、“确认密码”输入框、“注册”按钮等操作控件添加埋点,可使用JS脚本等自研埋点工具,或者GrowingIO等商业化的埋点工具。此案例中,对“A:用户名”、“B:设置密码”、“C:确认密码”、“D:注册按钮”四个实体元素分别对应的页面操作控件“用户名”输入框、“设置密码”输入框、“确认密码”输入框、“注册”按钮,添加埋点。
b.测试人员(ID为TestUserID2)在“注册页面”上,对“用户名”输入框、“设置密码”输入框、“确认密码”输入框、“注册”按钮进行功能测试时,埋点程序将对应操作事件发送至后台程序。例如,测试人员对“用户名”输入框执行了输入文本等功能测试操作,持续时长为5分钟。当操作完成后,“注册页面”上的埋点程序将会根据测试人员的操作,生成一个操作类型为“功能测试”的事件,包含了实体元素ID为A、测试人员ID为TestUserID1、操作类型为“功能测试”、操作持续时长为5分钟、操作日期为当前日期等数据。后台程序接收到操作事件后,解析事件中的数据,并生成一笔测试工时数据,保存到数据库的测试工时数据表中,此时测试工时数据表的数据为如表3所示:
表3:
ID | 实体元素ID | 测试人员ID | 操作类型 | 操作持续时长 | 操作日期 |
1 | A | TestUserID1 | 创建用例 | 300s | 2020-7-2 |
2 | B | TestUserID1 | 创建缺陷 | 300s | 2020-7-2 |
3 | A | TestUserID2 | 功能测试 | 300s | 2020-7-2 |
c.对程序接口、程序方法、程序函数上添加埋点,可使用自研埋点工具,收集接口调用、方法调用、函数调用等操作的数据。此案例中,对“E:UserRegisterService”、“F:doRegister()”两个实体元素分别对应的程序接口UserRegisterService和程序方法doRegister()添加埋点。
d.测试人员(ID为TestUserID2)对UserRegisterService接口做了调用接口操作,持续时长为1秒。当操作完成后,埋点程序向后台程序发送一个事件类型为“接口测试”的操作事件,包含了实体元素ID为E、测试人员ID为TestUserID1、操作类型为“接口测试”、操作持续时长为1秒、操作日期为当前日期等数据。后台程序接收到操作事件后,解析事件中的数据,并生成一笔测试工时数据,保存到数据库的测试工时数据表中,此时测试工时数据表的数据为如表4所示:
表4:
ID | 实体元素ID | 测试人员ID | 操作类型 | 操作持续时长 | 操作日期 |
1 | A | TestUserID1 | 创建用例 | 300s | 2020-7-2 |
2 | B | TestUserID1 | 创建缺陷 | 300s | 2020-7-2 |
3 | A | TestUserID2 | 功能测试 | 300s | 2020-7-2 |
4 | E | TestUserID2 | 接口测试 | 1s | 2020-7-2 |
五、建立后台管理***,并建立测试工时统计和分析页面。页面展示每个测试人员在工作日内对所有实体元素的测试工时统计总时长,可以根据工时长短做升序或者降序排名。
a.新建一个后台管理***,并新建测试工时统计和分析页面。测试工时统计和分析页面读取数据库中测试工时数据表的数据,进行相应运算后将结果展示在页面上。页面设置测试人员ID和日期两个统计条件,可根据两个统计条件进行组合统计。
b.当只选择日期这单个条件进行数据统计时,后台程序根据日期条件在测试工时数据表中筛选操作日期等于该日期的所有测试工时数据,并以测试人员ID为分组条件计算测试工时总时长,结果返回给页面,展示出所有测试人员在该日期的测试工时总时长,可根据测试工时长短做升序或者降序排名。例如,选择日期为“2020-07-02”作为统计条件,进行统计时,后台程序将操作日期为“2020-07-02”的所有工时数据,按照测试人员ID为分组条件,统计测试工时总时长,结果返回给页面,进行展示。根据上述步骤中得到的测试工时数据表数据,此时页面展示结果为如表5所示:
表5:
测试人员ID | 测试工时总时长 | 统计日期 |
TestUserID1 | 600s | 2020-7-2 |
TestUserID2 | 301s | 2020-7-2 |
c.当同时选择测试人员、日期两个条件进行数据统计时,后台程序根据测试人员、日期两个条件在测试工时数据表中筛选测试人员ID为所选测试人员ID、操作日期等于该日期的所有测试工时数据,并计算测试工时总时长,结果返回给页面,页面展示该测试人员在该日期的测试工时总时长。例如,选择测试人员ID为“TestUserID1”、日期为“2020-07-02”作为统计条件,进行统计时,后台程序将测试人员ID等于“TestUserID1”、操作日期等于“2020-07-02”的所有工时数据查询出来,计算出测试工时总时长,结果返回给页面,进行展示。根据上述步骤中得到的测试工时数据表数据,此时页面展示结果为如表6所示:
表6:
测试人员ID | 测试工时总时长 | 统计日期 |
TestUserID1 | 600s | 2020-7-2 |
六、在后台管理***中建立测试估时准确性分析页面。页面展示软件功能模块的预估测试工时和实际测试工时,并计算和展示预估准确率。其中预估测试工时数据来自于项目管理工具中的已有数据,实际测试工时来自于测试工时数据表。
a.在后台管理***中建立测试估时准确性分析页面。页面设置软件功能模块和项目周期时间段两个统计条件,可根据两个统计条件进行组合统计。其中软件功能模块的数据来自于数据库的实体元素层级树表,一般是实体元素层级树数据的根节点。项目周期时间段数据来自于项目管理工具。另外,页面还从项目管理工具中获取每一个项目周期时间段内,测试人员对软件功能模块的预估测试工时数据,展示在页面上。例如,此案例中,软件功能模块为“注册页面”,其实体元素为“Y:注册页面”,通过实体元素ID为Y可在实体元素层级树中查询到一棵以Y为根节点的实体元素层级树,且该树包括了A、B、C、D、E、F等子节点。类似Y一样的所有实体元素,都可作为测试估时准确性分析页面的功能模块查询条件。测试估时准确性分析页面从项目管理工具中读取每个功能模块的项目周期时间段数据作为项目周期时间段查询条件,如对“注册页面”来说,它所在的项目有1个,其项目周期为“2020-0701”到“2020-07-05”。此外,测试估时准确性分析页面还从项目管理工具中读取功能模块的预估测试工时,用作结果计算。此案例中,“注册页面”的预估测试工时为20小时。以上数据均是已有数据。
b.当以功能模块为“注册页面”和项目周期时间段为“2020-07-01”到“2020-07-05”作为统计条件提交后,后台程序根据软件功能模块名称,在实体元素层级树表中查询以该“注册页面”为实体元素名称,且为根节点的实体元素层级树,获取到树中的所有子节点:“A:用户名”、“B:设置密码”、“C:确认密码”、“D:注册按钮”、“E:UserRegisterService”、“F:doRegister()”。然后遍历每个子节点,根据每个实体元素ID和项目周期时间段这两个数据,在测试工时数据表中筛选出所有的实体元素ID为A、B、C、D、E、F,操作日期在“2020-07-01”到“2020-07-05”时间段内的所有测试工时数据,最后加总计算测试工时总时长。结果返回给页面。此时计算结果数据为如表7所示:
表7:
功能模块 | 测试工时总时长 |
注册页面 | 901s |
c.页面根据计算结果数据,计算实际测试工时和预估测试工时的比值,换算成百分比,最后得到预估准确率,展示在页面上,此时页面展示结果为如表8所示:
表8:
功能模块 | 项目周期时间段 | 预估测试工时 | 实际测试工时 | 预估准确率 | 统计日期 |
注册页面 | 2020-07-01--2020-07-05 | 20h | 901s | 1.25% | 2020-07-01 |
Claims (7)
1.一种基于关联对象操作统计的测试工时自动统计方法,其特征在于,包括:
A.对软件的功能模块、功能组件、代码模块以及代码行中包含的实体元素进行提取,将提取到的实体元素存放在数据库的实体元素表中,根据实体元素的所属关系建立新的实体元素层级树或者更新已有的实体元素层级树,将新建立的实体元素层级树或者更新的实体元素层级树存放在数据库的实体元素层级树表中;
B.在数据库中建立测试工时数据表,收集测试人员对软件实体元素的操作耗时;
C.在测试用例管理***和缺陷管理***的页面上,对创建用例、编辑用例、执行用例、创建缺陷和更新缺陷状态这些操作添加埋点,收集测试人员对实体元素进行操作的停留时长,操作完成后,将实体元素的操作类型和操作停留时长的数据传输到后台程序并保存到数据库的测试工时数据表中;
D.在软件的图形用户界面、程序接口、程序方法以及程序函数上添加埋点,收集测试人员对软件的功能模块、功能组件、程序接口、程序方法以及程序函数的实体元素进行操作的停留时长;操作完成后,将实体元素的操作类型和操作停留时长的数据传输到后台程序并保存到数据库的测试工时数据表中;
E.建立后台管理***,并建立测试工时统计和分析的页面;页面展示每个测试人员在工作日内对所有实体元素的测试工时统计总时长;
F.在后台管理***中建立测试估时准确性的分析页面,页面展示软件功能模块的预估测试工时和实际测试工时,并计算和展示预估准确率;其中预估测试工时数据来自于项目管理工具中的已有数据,实际测试工时来自于测试工时数据表。
2.如权利要求1所述的一种基于关联对象操作统计的测试工时自动统计方法,其特征在于,步骤A包括:
提取到实体元素后,建立实体元素层级树并保存在实体元素层级树表中;如果实体元素层级树表中已有该实体元素层级树则对其进行更新。
3.如权利要求1所述的一种基于关联对象操作统计的测试工时自动统计方法,其特征在于,步骤B包括:
在数据库中建立测试工时数据表,该测试工时数据表包括以下字段:该表的主键ID、实体元素ID、测试人员ID、操作类型、操作持续时间以及操作日期。
4.如权利要求1所述的一种基于关联对象操作统计的测试工时自动统计方法,其特征在于,步骤C包括:
在测试用例管理***的页面上,对创建用例、编辑用例、执行用例的页面操作控件添加埋点;以及在缺陷管理***的页面上,对创建缺陷、更新缺陷状态的页面操作控件添加埋点;
当测试人员对测试用例做了创建用例、编辑用例或者执行用例操作后,埋点程序将对应操作事件发送至后台程序;或者当测试人员对缺陷做了创建缺陷或者更新缺陷状态操作后,埋点程序将对应的操作事件发送至后台程序;
后台程序接收到操作事件后,解析事件中的数据,并生成一个测试工时数据保存到数据库的测试工时数据表中。
5.如权利要求1所述的一种基于关联对象操作统计的测试工时自动统计方法,其特征在于,步骤D包括:
在软件的图形用户界面、程序接口、程序方法和程序函数上添加埋点,当测试人员在软件图形用户界面、程序接口、程序方法或者程序函数上进行了操作后,埋点程序将对应操作事件发送至后台程序;
后台程序接收到操作事件后,解析事件中的数据,并生成一笔测试工时数据并保存到数据库的测试工时数据表中。
6.如权利要求1所述的一种基于关联对象操作统计的测试工时自动统计方法,其特征在于,步骤E包括:
建立后台管理***,并建立测试工时统计和分析页面;该页面设置了测试人员ID和操作日期两个统计条件;
当选择操作日期这一个条件进行数据统计时,后台程序根据操作日期条件在测试工时数据表中筛选相应的操作日期内的所有测试工时数据,并根据测试人员ID为分组条件计算测试工时总时长,将结果返回给页面展示出所有测试人员在该日期内的测试工时总时长,且根据测试工时的长短做升序或者降序的排名;
当同时选择测试人员ID和操作日期这两个条件进行数据统计时,后台程序根据测试人员ID和操作日期这两个条件在测试工时数据表中筛选该测试人员在该操作日期内的所有测试工时数据,并计算测试工时总时长,将结果返回给页面展示出该测试人员在该日期的测试工时总时长。
7.如权利要求1所述的一种基于关联对象操作统计的测试工时自动统计方法,其特征在于,步骤F包括:
在后台管理***中建立测试估时准确性的分析页面,该页面设置了软件功能模块和项目周期时间段这两个统计条件,其中软件功能模块的数据来自于数据库的实体元素层级树表,项目周期时间段的数据来自项目管理工具,该页面从项目管理工具中获取每一个项目周期时间段内测试人员对软件功能模块的预估测试工时数据且展示在页面上;
当选择某个软件功能模块和该功能模块的项目周期时间段时,后台程序根据软件功能模块名称,在实体元素层级树表中查询以该软件功能模块名称为根节点的实体元素层级树,获取到树中的所有子节点,遍历每个子节点,在实体元素表中查询每个子节点对应的实体元素数据,根据实体元素ID和项目周期时间段这两个数据,在测试工时数据表中筛选出相应实体元素ID以及创建日期在项目周期时间段内的所有测试工时数据,最后加总计算测试工时总时长,将结果返回给页面;
页面展示该软件功能模块的预估测试工时和实际测试工时,根据实际工时在预估工时中所占百分比,计算和展示预估准确率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011180987.1A CN112000587B (zh) | 2020-10-29 | 2020-10-29 | 一种基于关联对象操作统计的测试工时自动统计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011180987.1A CN112000587B (zh) | 2020-10-29 | 2020-10-29 | 一种基于关联对象操作统计的测试工时自动统计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112000587A CN112000587A (zh) | 2020-11-27 |
CN112000587B true CN112000587B (zh) | 2021-11-23 |
Family
ID=73475805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011180987.1A Active CN112000587B (zh) | 2020-10-29 | 2020-10-29 | 一种基于关联对象操作统计的测试工时自动统计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112000587B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416807A (zh) * | 2020-12-10 | 2021-02-26 | 武汉光庭信息技术股份有限公司 | 一种测试用例结果分析及关联的***及方法 |
CN112231196B (zh) * | 2020-12-14 | 2021-03-16 | 平安科技(深圳)有限公司 | App埋点行为分类方法、装置、计算机设备及存储介质 |
CN113076299A (zh) * | 2021-04-27 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种基于操作类型的锁耗时统计方法及装置 |
CN115617702A (zh) * | 2022-12-20 | 2023-01-17 | 中化现代农业有限公司 | 一种测试工时的预测方法和预测装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018113385A1 (zh) * | 2016-12-24 | 2018-06-28 | 上海壹账通金融科技有限公司 | 对客户端的应用程序动态埋点的方法、***、客户端及服务器 |
CN109271314A (zh) * | 2018-08-21 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种软件测试人员绩效评估***及其使用方法 |
CN110442511A (zh) * | 2019-06-25 | 2019-11-12 | 苏宁云计算有限公司 | 可视化埋点测试方法及装置 |
CN111813697A (zh) * | 2020-08-26 | 2020-10-23 | 四川新网银行股份有限公司 | 一种基于测试对象调用标记的测试覆盖率统计方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4907237B2 (ja) * | 2006-06-22 | 2012-03-28 | 大日本スクリーン製造株式会社 | テスト工数見積装置およびプログラム |
JP2014092980A (ja) * | 2012-11-05 | 2014-05-19 | Fujitsu Ltd | 判定装置、判定方法及び判定プログラム |
US10880197B2 (en) * | 2018-07-13 | 2020-12-29 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for testing a network node using source code for programming a packet forwarding plane of the network node |
CN109634822B (zh) * | 2018-11-27 | 2023-04-14 | 平安科技(深圳)有限公司 | 一种函数耗时统计方法、装置、存储介质及终端设备 |
-
2020
- 2020-10-29 CN CN202011180987.1A patent/CN112000587B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018113385A1 (zh) * | 2016-12-24 | 2018-06-28 | 上海壹账通金融科技有限公司 | 对客户端的应用程序动态埋点的方法、***、客户端及服务器 |
CN109271314A (zh) * | 2018-08-21 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种软件测试人员绩效评估***及其使用方法 |
CN110442511A (zh) * | 2019-06-25 | 2019-11-12 | 苏宁云计算有限公司 | 可视化埋点测试方法及装置 |
CN111813697A (zh) * | 2020-08-26 | 2020-10-23 | 四川新网银行股份有限公司 | 一种基于测试对象调用标记的测试覆盖率统计方法 |
Non-Patent Citations (1)
Title |
---|
"基于功能点的装备软件成本度量研究";曹杨华 等;《航空财会》;20200315(第2期);第46-49页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112000587A (zh) | 2020-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112000587B (zh) | 一种基于关联对象操作统计的测试工时自动统计方法 | |
Fioravanti et al. | Estimation and prediction metrics for adaptive maintenance effort of object-oriented systems | |
Basili | Viewing maintenance as reuse-oriented software development | |
Kitchenham et al. | Modeling software measurement data | |
Briand et al. | Modeling development effort in object-oriented systems using design properties | |
Janes et al. | Identification of defect-prone classes in telecommunication software systems using design metrics | |
US9354867B2 (en) | System and method for identifying, analyzing and integrating risks associated with source code | |
Von Knethen | Change-oriented requirements traceability. Support for evolution of embedded systems | |
Bianchi et al. | An exploratory case study of the maintenance effectiveness of traceability models | |
Scott et al. | Practical software process improvement-the IMPACT project | |
CN111813697B (zh) | 一种基于测试对象调用标记的测试覆盖率统计方法 | |
Demeyer et al. | A Pattern Language for Reverse Engineering. | |
Mišić et al. | Estimation of effort and complexity: An object-oriented case study | |
Sneed | Impact analysis of maintenance tasks for a distributed object-oriented system | |
Sabev et al. | Manual to automated testing: An effort-based approach for determining the priority of software test automation | |
Arnuphaptrairong | A literature survey on the accuracy of software effort estimation models | |
Morozoff | Using a line of code metric to understand software rework | |
Eichelberger et al. | A comprehensive survey of UML compliance in current modelling tools | |
Hammad et al. | Identifying designers and their design knowledge | |
Ellsel et al. | Using MBSE With SysML to Analyze Change Impacts, Including Efforts, in Technical Systems | |
Weber et al. | Detecting inconsistencies in multi-view uml models | |
Lavazza et al. | Defining and evaluating software project success indicators: A GQM-based case study | |
Fu et al. | Structural Equation Modeling in Technology Adoption and Use in the Construction Industry: A Scientometric Analysis and Qualitative Review | |
Pimentel et al. | Application of the independence axiom on the design of object-oriented software using the axiomatic design theory | |
Hadar et al. | The composition refactoring triangle (crt) practical toolkit: From spaghetti to lasagna |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |