Visual Studio Online中的时间跟踪

13

有没有一种方法可以在Visual Studio Online上测量用例或任务所花费的时间?我想把所有东西都放在一个地方(Visual Studio Online将是该情况),然后能够从那里生成报告,例如每个用户的月度时间跟踪报告和每日报告,反映实际工作在特定用例/任务上所耗费的时间与估计时间的差异。


1
这里有一个关于使用Team Foundation Server和Visual Studio Online进行时间跟踪的好讨论:https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2060101-tfs-needs-the-ability-to-track-hours-tied-to-a-wor - Ed Blankenship
3个回答

6
当你创建与待办事项或错误相关联的任务时,字段“剩余工作”实际上是以小时为单位的。因此,您可以将其设置为一种时间跟踪方式。
不幸的是,据我所知,在完成任务后没有设置实际花费时间的方法。

没有这个功能,因为系统无法真正知道用户在做什么。你走在正确的轨道上了,他们可以将工作与特定的任务/错误/问题相关联,以便报告有意义。 - Jason
@Jason 当您将任务设置为“完成”时,可能会有一个名为“实际工作”的字段,用户可以设置该字段以设置任务所需的实际小时数。 - Gimly
有一个实际的工作环境(至少有CMMI档案)。估计、剩余、实际。这并不能解决我认为OP所问的确切时间问题,因为工人可以随便填写。 - Jason
谢谢!我一定会尝试这种方法。我需要把所有东西都放在一个地方,这样就不会因为双重证据而出现错误或遗漏。当然,作为项目经理,我也对测量感兴趣(例如估计与实际用于实现功能的时间之间的差异),这样我们就可以从这些糟糕的估计中学习,并建立团队的速度。 - Diana TM
无法将TFS用作时间跟踪工具。 - MrHinsh - Martin Hinshelwood

3
不,VSO或TFS原生无法实现此功能。这种方法不利于有效和高价值的交付。事实上,研究表明这可能对向客户提供价值有害。
虽然有第三方工具可以插入VSO并提供此功能,但我建议采用不同的方法。
针对粗略任务进行单独的时间跟踪。专注于计费而不是时间跟踪。我想知道要向哪位客户或项目计费以及资本支出与运营支出...除此之外,数据的价值很小。我使用Freshbooks,并过去成功地使用过Harvest。
更新:如果您是咨询公司,显然需要跟踪您的时间以进行计费。这应该在与TFS不同的系统中完成。

2
我对此感到困惑。目前我们使用FogBugz为我们所做的所有工作创建案例 - 我指的是错误案例、新功能案例、新项目所有功能的案例,以及公司开发任务等等。这样我们就知道我们如何花费时间,并且有一个确切的记录,可以用来计费客户(我们的很多计费都是按照实际工作时间计算的,因此这非常重要)。如果有一个功能可以让我们在VSO中记录时间,那么我们就可以从FogBugz切换到VSO,我不明白为什么有这么多人反对呢? - tomRedox
1
Tom_redox,这跟我们公司的工作流程完全不一样。我们根本不追踪时间,因为它没有任何价值。如果我为客户工作了一天,我会向他们收取一天的费用。如果我工作了两个小时,我就会向他们收取两个小时的费用。你遇到这种观点是因为任何形式的时间追踪,非计费目的都没有价值。如果你的客户需要按小时详细列出你所做的工作,则意味着他们不信任你。如果他们不信任你,那么他们真的适合成为你的客户吗? - MrHinsh - Martin Hinshelwood
1
好的,没问题。我们在这里都没有进一步的理解,你一再地声称这是一个坏主意,却没有任何真正的理由,而我可能没有完全传达我们的情况。这可能不是讨论这个问题的正确场所,评论的简短格式限制了我们。感谢您抽出时间回复,就让它到此为止吧。 - tomRedox
1
很高兴您能给我发电子邮件,我们可以详细讨论! - MrHinsh - Martin Hinshelwood
4
很抱歉插入一个老话题,但这对我很有兴趣。我也想跟踪我们的开发人员在工作上花费的时间,但不是因为我想向客户计费(我们开发的应用程序是内部使用),而是因为我想知道我们的表现如何与我们的估算相比。如果开发人员给我一个工作估算时间为35小时,我想知道实际完成需要多长时间。我想报告这一点,以便了解我们的预估情况。我很失望VSO没有这样的功能。 - Philip Stratford
显示剩余6条评论

2

我以前使用过Jira,并喜欢记录工作时间的方式。

我们在VSTS中创建了一个解决方法,使用评论列表。虽然不太优雅,但它确实有效。将数字值添加到评论中,这将被计算为工作小时数。您可以使用正则表达式使其更加复杂,但我附上的代码假定其中有一个浮点数或整数。

URL_PREFACE =  "https://yourproject.visualstudio.com/defaultcollection/"

def getTicketComments(ticketID):
    """ Gets a list of the comments (in order from oldest to newest) for a given ticket """

    url = URL_PREFACE + "_apis/wit/workitems/" + str(ticketID) + "/comments?api-version=3.0-preview&order=asc"
    jsonDict = readURL(url)

    return jsonDict["comments"]

然后我们将找到的值相加:
def getHoursSum(ticketID):
    """ For the given ticket, gets their comments, and calculates the hours
    """
    commentList = getTicketComments(ticketID)
    hourSum = 0
    for comment in commentList:
        try:
            hourSum += float(comment["text"]) # Will break if it's not a number
        except:
            pass

return hourSum

最后,我们将工作小时数存储在CompletedWork字段中:
def updateHours(ticketID, completedHours):

    headers = {"Content-Type": "application/json-patch+json"}

    url = URL_PREFACE + "_apis/wit/workitems/" + str(ticketID) + "?api-version=1.0"

    body = """[
        {
            "op": "replace",
            "path": "/fields/Microsoft.VSTS.Scheduling.CompletedWork",
            "value": """ + str(completedHours) + """
        }
    ]"""

    username = 'username'  # Doesn't matter
    password = TOKEN

    # TO GET TOKEN:
    #   Log into https://yourproject.visualstudio.com/
    #   Click on your name -> My Profile
    #   In the left-hand sidebar, click on "Security"
    #   Under "Personal Accesss Tokens," click "Add"
    #   Under "Description" give your token a name (doesn't matter)
    #   Choose an expiration for your token (recommend: 1 yr)
    #   "Authorized Scopes" = "All Scopes"
    #   Click "Save"
    #   Copy the token it gives you into token field below (paste between quotes)

    session = requests.Session()
    request = requests.Request(method="PATCH", headers=headers, auth=(username, password),
                               url=url,  data=body)
    prepped = request.prepare()
    response = session.send(prepped)

    return response

我只是复制并粘贴了一些简化的代码 - 你需要将其集成。

代码是由我的杰出同事@Elliptica编写的。


你可以将其添加为定期构建。 - numeratus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接