Uploaded image for project: 'SAFe Program'
  1. SAFe Program
  2. SP-631

Explore refactoring of TANGO code for testability

Change Owns to Parent OfsSet start and due date...
    XporterXMLWordPrintable

Details

    • Obs Mgt & Controls
    • Hide

      Revised benefit

      Currently TANGO device and client code is not always testable. One reason is that the "business logic" is too closely meshed with the details of how Tango devices operate. The end result of this feature is that these examples should let SKA developers to learn the Humble Object pattern and its benefits.

      Initial benefit:

      Currently TANGO device and client code is not optimised for unit testing.

      Socialised Ideas for design for testability and effective mocking techniques means teams can be more productive increasing test coverage of MVP code.

      Show
      Revised benefit Currently TANGO device and client code is not always testable. One reason is that the "business logic" is too closely meshed with the details of how Tango devices operate. The end result of this feature is that these examples should let SKA developers to learn the Humble Object pattern and its benefits. Initial benefit: Currently TANGO device and client code is not optimised for unit testing. Socialised Ideas for design for testability and effective mocking techniques means teams can be more productive increasing test coverage of MVP code.
    • Hide

      After a discussion between Karoo team, Giorgio and Vivek, here's a revised acceptance criteria suggested by Giorgio and agreed on:

      1. Create examples in existing codebases of the humble object technique; one example was already discussed during a recent Testing CoP meeting (and it deals with logging: see https://confluence.skatelescope.org/pages/viewpage.action?pageId=87100720). Produce a second different example.
      2. With the Testing CoP coordinator write an appropriate confluence page that explains these two examples.

      Initial acceptance criteria:

      • example of how to test TANGO, using mocks,
      • updated TANGO usage example,
      • presentation on mocking and architecture for testability
      Show
      After a discussion between Karoo team, Giorgio and Vivek, here's a revised acceptance criteria suggested by Giorgio and agreed on: Create examples in existing codebases of the humble object technique; one example was already discussed during a recent Testing CoP meeting (and it deals with logging: see  https://confluence.skatelescope.org/pages/viewpage.action?pageId=87100720 ). Produce a second different example. With the Testing CoP coordinator write an appropriate confluence page that explains these two examples. Initial acceptance criteria: example of how to test TANGO, using mocks, updated TANGO usage example, presentation on mocking and architecture for testability
    • 2
    • 2
    • 3
    • Team_KAROO
    • Sprint 5
    • 5.6
    • PI22 - UNCOVERED

    • Enabler Team_KAROO goal_O3 testing

    Description

      After a discussion between Karoo team, Giorgio and Vivek, here's a revised description suggested by Giorgio and agreed on:

      Create examples of code by applying the Humble Object technique to TANGO device python code, extracting the logic from the Tango-related code. This logic should reside either in helper methods or in some other python class that are totally independent from Tango (i.e. they do not use any tango API). The output of this feature are examples of how to design more testable TANGO code so that teams can improve the testability of their code.

      Initial description:

      TANGO device as humble object, separating behaviour from communication. (May lead to hexagonal  architecture). Separation of concerns: compliance to CORBA and ZeroMQ vs the logic implementation of business logic. Output of this can be an example of how to design more testable TANGO code so that teams can improve the testability of their code. 

      On the other side, explore testability, mockability of existing TANGO code. By doing this exploration, one may reach an architecture that is testable. Specifically, explore mocking of DeviceProxy to remove dependency on real devices running while testing TANGO clients. Output of this can be an example (using an existing TMC device) of how mocking of DeviceProxy is applied in testing of a TANGO client. This can be scoped to e.g. dish leaf node.

      Attachments

        Issue Links

          Structure

            Activity

              People

                g.brajnik Brajnik, Giorgio
                p.swart Swart, Paul [X] (Inactive)
                Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Feature Progress

                  Story Point Burn-up: (100.00%)

                  Feature Estimate: 2.0

                  IssuesStory Points
                  To Do00.0
                  In Progress   00.0
                  Complete13.0
                  Total13.0

                  Dates

                    Created:
                    Updated:
                    Resolved:

                    Structure Helper Panel