none
Target, Product Instance, Device Family, Project... explain please RRS feed

  • Question

  • While attempting to automate HCK testing, I am finding that I need to understand some concepts.  They are the following, with my best effort at defining them, and with a request for help to understand them better.

        Target:

    All I know about this is that the HCK runs its tests against a target.  Somehow the target is defined sufficiently so that the HCK knows what device and driver to test.  I do not understand clearly how to define a target in the object model.  The sample scripts seem to accomplish this by borrowing some intrinsic information from the test machine...

        Product Instance:

    Yes, explain this please : )  I really have no solid idea what this is.

        Device Family:

    Ok, so this is a group of hardware IDs (specific, or general, or both?) that enable the HCK to know what to test against (therefore, why the need for the Product Instance or Target?).  It seems in all my research that everyone is just hard-coding these into their scripts.  I'm going to create a separate question in just a few minutes here and try to link it to this question.  Do I need to create a device family always?  Can a device family have all my hardware IDs specified and then the HCK just choose the proper one for the one hardware piece I'm testing in one machine?

        Project:

    It seems that as soon as this is sufficiently defined, the HCK knows what tests need to be run in.  What is a project, in Object Model terms?

    In advance, thank you for the help, guidance, (sample code : ), and explanation.


    • Edited by hh-hh-hh Thursday, March 28, 2013 1:24 PM Attempting to add newlines to better separate the terms.
    Thursday, March 28, 2013 1:19 PM

Answers

  • I think the better way to explain these concepts is to answer them in reverse order -

    A Project is similar to a project is Visual Studio. It's a wrapper or collection of all the data associated with the testing instance.

    A Project can have multiple Product Instances. A Product Instance indicates which OS and platform you are testing (i.e. x86 on Windows 8). You can have different Product Instances for the different platforms but no duplicates.

    A Product Instance can have many Target Families. A Target Family is a collection of similar targets for testing. This allows for distributing the set of tests across those targets to reduce testing time.

    A Device Family is used to help associate multiple targets to a device family. When I said "similar targets" under Target Family, this meant that the targets needed to be the same in many attributes including platform, drivers, class, manufacturer and hardware Ids. A Device Family is used to "override" or associate targets with dissimilar hardware. These targets must still match the other criteria.

    Finally, a Target is the object you are testing. A Target could be the system, a physical device or filter/software device. You can get a list of targets via a Machine using Machine::GetTestTargets() or Machine::GetTestTargets(TargetType). You can then query the returned list of targets for the specific target you want to test.

    For further information, look at the documentation at http://msdn.microsoft.com/en-us/library/windows/hardware/jj124658.aspx


    John -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Thursday, March 28, 2013 2:52 PM

All replies

  • I need to know how all the concepts relate to each other.  Forgot to mention that : )
    Thursday, March 28, 2013 1:25 PM
  • I think the better way to explain these concepts is to answer them in reverse order -

    A Project is similar to a project is Visual Studio. It's a wrapper or collection of all the data associated with the testing instance.

    A Project can have multiple Product Instances. A Product Instance indicates which OS and platform you are testing (i.e. x86 on Windows 8). You can have different Product Instances for the different platforms but no duplicates.

    A Product Instance can have many Target Families. A Target Family is a collection of similar targets for testing. This allows for distributing the set of tests across those targets to reduce testing time.

    A Device Family is used to help associate multiple targets to a device family. When I said "similar targets" under Target Family, this meant that the targets needed to be the same in many attributes including platform, drivers, class, manufacturer and hardware Ids. A Device Family is used to "override" or associate targets with dissimilar hardware. These targets must still match the other criteria.

    Finally, a Target is the object you are testing. A Target could be the system, a physical device or filter/software device. You can get a list of targets via a Machine using Machine::GetTestTargets() or Machine::GetTestTargets(TargetType). You can then query the returned list of targets for the specific target you want to test.

    For further information, look at the documentation at http://msdn.microsoft.com/en-us/library/windows/hardware/jj124658.aspx


    John -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Thursday, March 28, 2013 2:52 PM
  • Like John points out, please refer to the HCK developer guide. More specifically, you can take a look at HCK object hierarchy to give you an understanding of how these objects are related.

    Wednesday, April 3, 2013 8:23 PM