Я использую Interop.TDAPIOLELib.dll для интеграции QC ALM, но для получения всей древовидной структуры плана тестирования требуется слишком много времени.

Я использую Interop.TDAPIOLELib.dll для интеграции QC ALM 12 и установил QcConnector.exe по ссылке на инструмент из QC ALM 12 на моем 32-разрядном компьютере с Windows.

Я хочу получить все TestPlan с иерархией родительских папок. Но это занимает слишком много времени: 75 артефактов QC ALM (включая план тестирования и папку) занимает 1 минуту 50 секунд.

  Private Sub LoadQCTree()

    Dim rootNode As Object = Nothing

    _treeManager = CType(_qcConnection.TreeManager, TreeManager)

    Dim rootList As TDAPIOLELib.List = _treeManager.RootList

    Dim rNode = rootList.Item(1)

    rootNode = _treeManager.TreeRoot(rNode)

    Dim FolderList As List = rootNode.NewList()

    'Read sub node hierarchy...

    RecurseTree(CType(FolderList, List))

    ReadChildTestCases(rootNode)

 End Sub


  Private Sub RecurseTree(ByVal SubNodes As TDAPIOLELib.List)

    For Each itm As SysTreeNode In SubNodes
        Dim Description = CStr(itm.Description).Trim
        If Not Description = "" Then Description = ConvertPlain(Description).Trim
        AddNodeEntry(itm.Name, CStr(itm.NodeID), CStr(itm.Father.NodeID), "Folder", Description, Now, Now, "TestCase", "folder")

        Dim children = itm.NewList
        RecurseTree(CType(children, List))
        ReadChildTestCases(itm)

    Next

  End Sub

  Private Sub ReadChildTestCases(ByVal itm As SysTreeNode)

    Dim testFilter As TDFilter = CType(_testFactory.Filter, TDFilter)

    testFilter.Filter("TS_SUBJECT") = Chr(34) & itm.Path & Chr(34)


    Dim TestList As List = _testFactory.NewList(testFilter.Text)

    For Each test As Test In TestList
        Try
            Dim description As String = Convert.ToString(test.Field("TS_DESCRIPTION")).Trim
            If Not description = "" Then description = ConvertPlain(description).Trim
            Dim modifiedOn As Date = CDate(test.Field("TS_VTS"))
            Dim CreationDate As Date = CDate(test.Field("TS_CREATION_DATE"))
            modifiedOn = Date.SpecifyKind(modifiedOn, DateTimeKind.Local)
            CreationDate = Date.SpecifyKind(CreationDate, DateTimeKind.Local)

            Dim BaseId = test.Field("TS_BASE_TEST_ID")
            Dim type = test.Field("TS_TYPE")
            AddNodeEntry(test.Name, CStr(test.ID), CStr(itm.NodeID), "File", description, modifiedOn, CreationDate, "TestCase", type)
        Catch ex As Exception
            'Do nothing..
            'Current node will skip from the tree hierarchy

        End Try
    Next
  End Sub

А также хотите получить требования с иерархией папок, но это также занимает много времени.

Итак, я попытаюсь улучшить производительность с помощью thread.

Тема 1: загрузить весь план тестирования

Тема 2: Загрузить все требования

и работать параллельно, но я думаю, что параллельный запрос не поддерживается. Потому что, когда я извлекаю требования, это занимает 40 секунд (для 30 требований), но параллельное получение обоих занимает 1 минуту 15 секунд только для требований.

Пожалуйста, помогите мне узнать, как улучшить производительность.

Можно получить всю древовидную структуру плана тестирования за один вызов.

Спасибо


person Shubham    schedule 13.05.2017    source источник
comment
Вы можете получить помощь только от эксперта, который очень хорошо знает продукт. Вероятность того, что вы найдете его здесь, особенно с текущими тегами вопроса, равна нулю. Воспользуйтесь форумом поддержки Hewlett Packard, чтобы найти его.   -  person Hans Passant    schedule 13.05.2017


Ответы (1)


Если вам нужны все требования и тесты проекта, то быстрее использовать фабрики объекта соединения с NewList(""). Что-то вроде этого (это просто псевдокод):

RequirementFactory factory = connection.RequirementFactory;
List reqs = factory.NewList(""); /* this is all a project's requirements */

Вместо того, чтобы ходить по иерархии и получать требования или тесты для каждой папки.

person TheArtTrooper    schedule 22.05.2017
comment
Спасибо @TheArtTrooper, это очень полезно для меня, используя это, я могу получить все требования с папкой. - person Shubham; 14.06.2017