The following relates generally to automated testing, such as in executing testing operations in a performance engineering environment.
As the number of mobile users increases, so too does the importance of measuring performance metrics on mobile devices. For example, it is found that users expect applications (also referred to herein as “apps”) to load within a short amount of time, e.g., about two seconds. Because of this, some feel that native app load times should be as fast as possible. Additionally, poor app performance can impact an organization in other ways, for example, by increasing the number of technical service requests or calls, as well as negatively impacting ratings or rankings in application marketplaces (e.g., app stores), or more generally reviews or reputation. These negative impacts can also impact customer retention and uptake, particularly for younger generations who value their ability to perform many tasks remotely and with mobility.
Mobile performance testing typically measures key performance indicators (KPIs) from three perspectives, namely the end-user perspective, the network perspective, and the server perspective. The end-user perspective looks at installation, launch, transition, navigation, and uninstallation processes. The network perspective looks at network performance on different network types. The server perspective looks at transaction response times, throughput, bandwidth, and latency. This type of testing is performed in order to identify root causes of application performance bottlenecks to fix performance issues, lower the risk of deploying systems that do not meet business requirements, reduce hardware and software costs by improving overall system performance, and support individual, project-based testing and centers of excellence.
Testing applications, particularly those that provide both mobile and desktop/browser versions, and interact with multiple business units within an organization, typically require a number of different testing tools, monitoring tools, and diagnostic tools. Testing applications also may require multiple stages or routines that can become difficult to manage across an entire testing environment. There is currently a lack of an integrated testing framework that can manage these complexities. From these complexities can arise inefficiencies as well as a lack of uniformity across different test teams, making automation and streamlining more difficult. As a result, performance engineers are often required to execute on many tools and coordinate the implementation and results, which necessitates certain knowledge and skills, thus limiting the number of individuals able to perform the testing.
Embodiments will now be described with reference to the appended drawings wherein:
It will be appreciated that for simplicity and clarity of illustration, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. In addition, numerous specific details are set forth in order to provide a thorough understanding of the example embodiments described herein. However, it will be understood by those of ordinary skill in the art that the example embodiments described herein may be practiced without these specific details. In other instances, well-known methods, procedures and components have not been described in detail so as not to obscure the example embodiments described herein. Also, the description is not to be considered as limiting the scope of the example embodiments described herein.
An integrated end-to-end testing framework with automation and enhanced monitoring tools is provided herein, including features and capabilities to increase testing efficiencies, to better integrate testing operations within and across technology frameworks, and to provide monitoring tools that focus on the user's perspective allowing non-technical resources to review and report on test results.
An automated testing system is provided, with an automation framework that provides a single integrated platform on which to test web, mobile, desktop, web services, and mainframe applications.
In order to enable the automation framework to share testing data and handover testing between multiple testing environments, a test repository is provided. This includes storing application programming interfaces (APIs) for framework-to-framework integration to permit app testing across different app environments, for example, across different lines of business within an organization. The automation framework passes test data and test states between testing environments using or along with providing this repository to implement a complete “end-to-end” capability, even across different areas within a larger digital ecosystem.
As used herein a “build” may refer to the process of creating an application program for a software release, by taking all the relevant source code files and compiling them and then creating build artifacts, such as binaries or executable program(s), etc. “Build data” may therefore refer to any files or other data associated with a build. The terms “build” and “build data” (or “build file”) may also be used interchangeably to commonly refer to a version or other manifestation of an application, or otherwise the code or program associated with an application that can be tested for performance related metrics.
It will be appreciated that while examples provided herein may be primarily directed to automated testing of mobile applications, the principles discussed herein equally apply to applications deployed on or otherwise used by other devices, such as desktop or laptop computers, e.g., to be run on a web browser or locally installed instance of an application. Similarly, the principles described herein can also be adapted to any performance engineering environment in which executable tasks are implemented, whether they include development, testing, implementation, production, quality assurance, etc.
Certain example systems and methods described herein are able to automate testing in a performance engineering environment. In one aspect, there is provided a device for automated testing. The device includes a processor, a communications module coupled to the processor, and a memory coupled to the processor. The memory stores computer executable instructions that when executed by the processor cause the processor to connect via the communications module to a plurality of testing frameworks, each testing framework configured to execute at least one operation in a distinct test or a portion of a multi-stage test on an application under test. The computer executable instructions, when executed, also cause the processor to receive first test data and a first test state from a first testing framework of the plurality of testing frameworks, via the communications module; store the first test data and the first test state in a test repository; and provide the first test data and the first test state from the test repository to a second testing framework of the plurality of testing frameworks via the communications module, wherein the first test data and the first test state are interpretable by the second testing framework to enable a corresponding distinct test or portion of the multi-stage test on the application under test to be executed by the second testing framework. The computer executable instructions, when executed, also cause the processor to receive second test data and a second test state from the second testing framework, via the communications module; store the second test data and the second test state in the test repository in association with the first test data; and provide access to the test repository upon completion of the multi-stage test or a set of all distinct tests on the application under test.
In another aspect, there is provided a method of automated testing. The method is executed by a device having a communications module. The method includes connecting via the communications module to a plurality of testing frameworks, each testing framework configured to execute at least one operation in a distinct test or a portion of a multi-stage test on an application under test. The method also includes receiving first test data and a first test state from a first testing framework of the plurality of testing frameworks, via the communications module; storing the first test data and the first test state in a test repository; and providing the first test data and the first test state from the test repository to a second testing framework of the plurality of testing frameworks via the communications module, wherein the first test data and the first test state are interpretable by the second testing framework to enable a corresponding distinct test or portion of the multi-stage test on the application under test to be executed by the second testing framework. The method also includes receiving second test data and a second test state from the second testing framework, via the communications module; storing the second test data and the second test state in the test repository in association with the first test data; and providing access to the test repository upon completion of the multi-stage test or a set of all distinct tests on the application under test.
In another aspect, there is provided a non-transitory computer readable medium for automated testing. The computer readable medium includes computer executable instructions for connecting via a communications module to a plurality of testing frameworks, each testing framework configured to execute at least one operation in a distinct test or a portion of a multi-stage test on an application under test. The computer readable medium also includes instructions for receiving first test data and a first test state from a first testing framework of the plurality of testing frameworks, via the communications module; storing the first test data and the first test state in a test repository; and providing the first test data and the first test state from the test repository to a second testing framework of the plurality of testing frameworks via the communications module, wherein the first test data and the first test state are interpretable by the second testing framework to enable a corresponding distinct test or portion of the multi-stage test on the application under test to be executed by the second testing framework. The computer readable medium also includes instructions for receiving second test data and a second test state from the second testing framework, via the communications module; storing the second test data and the second test state in the test repository in association with the first test data; and providing access to the test repository upon completion of the multi-stage test or a set of all distinct tests on the application under test.
In certain example embodiments, the device can automatically transition the application under test through multiple distinct tests or the multi-stage test by passing the test data and test states across the plurality of testing frameworks according to at least one transition criterion, via the communications module.
In certain example embodiments, the device can process the first test data or the second test data to be interpretable by the other of the first and second testing frameworks.
In certain example embodiments, the first and second testing frameworks are each associated with different lines of business in an organization associated with the application under test. The application under test can include mobile and web browser versions requiring testing by each of the plurality of testing frameworks.
In certain example embodiments, the device can map objects in a user interface for the application under test to generate a database file to search for objects in testing the user interface, store the database file in an objects repository, and access the database file from the objects repository to execute at least one automated testing feature for at least one of the plurality of testing frameworks.
The at least one automated testing feature can include executing a self-healing operation using the database file in the repository. The at least one automated testing feature can also include automatically designing a test or test operation using the database file in the repository. The at least one automated testing feature can also include performing a visual verification operation to automatically detect and report differences found between screenshots and baselines for the application under test. The at least one automated testing feature can also include executing a smart object recognition process by navigating screens in the application to add to or revise the objects repository based on changes made to the application. The at least one automated testing feature can also include analyzing automation script failures from a feed of logs for failed scenarios and categorizing failures based on past occurrences.
In certain example embodiments, the device can monitor application testing by executing a test of the application under test on one or more devices, capturing images of screens during execution of the test, assembling an animated output using the images, and displaying the animated output during the test execution to visualize what is occurring on the one or more devices during the test execution.
The application development environment 12 includes or is otherwise coupled to one or more repositories or other data storage elements for storing application build data 18. The application build data 18 can include any computer code and related data and information for an application to be deployed, e.g., for testing, execution, or other uses. In this example, the application build data 18 can be provided via one or more repositories and include the data and code required to perform application testing on a device or simulator.
It can be appreciated that while
Also shown in
The computing environment 8 may be part of an enterprise or other organization that both develops and tests applications. In such cases, the communication network 14 may not be required to provide connectivity between the application development environment 12, the automated testing system 24, and the application testing environment 10, wherein such connectivity is provided by an internal network. The application development environment 12, automated testing system 24, and application testing environment 10 may also be integrated into the same enterprise environment as subsets thereof. That is, the configuration shown in
Moreover, the computing environment 8 can include multiple enterprises or organizations, e.g., wherein separate organizations are configured to, and responsible for, implementing application testing and application development. For example, an organization may contract a third-party to develop an app for their organization but perform testing internally to meet proprietary or regulatory requirements. Similarly, an organization that develops an app may outsource the testing stages, particularly when testing is performed infrequently. The application deployment environment 16 may likewise be implemented in several different ways. For example, the deployment environment 16 may include an internal deployment channel for employee devices, may include a public marketplace such as an app store, or may include any other channel that can make the app available to clients, consumers or other users.
One example of the computing environment 8 may include a financial institution system (e.g., a commercial bank) that provides financial services accounts to users and processes financial transactions associated with those financial service accounts. Such a financial institution system may provide to its customers various browser-based and mobile applications, e.g., for mobile banking, mobile investing, mortgage management, etc.
Test devices 22 can be, or be simulators for, client communication devices (e.g., client device 26) that would normally be associated with one or more users. Users may be referred to herein as customers, clients, correspondents, or other entities that interact with the enterprise or organization associated with the computing environment 8 via one or more apps. Such customer communication devices are not shown in
In certain embodiments, a user may operate the customer communication devices such that customer device performs one or more processes consistent with what is being tested in the disclosed embodiments. For example, the user may use customer device to engage and interface with a mobile or web-based banking application which has been developed and tested within the computing environment 8 as herein described. In certain aspects, test devices 22, customer devices, and client device 26 can include, but are not limited to, a personal computer, a laptop computer, a tablet computer, a notebook computer, a hand-held computer, a personal digital assistant, a portable navigation device, a mobile phone, a wearable device, a gaming device, an embedded device, a smart phone, a virtual reality device, an augmented reality device, third party portals, an automated teller machine (ATM), and any additional or alternate computing device, and may be operable to transmit and receive data across communication networks such as the communication network 14 shown by way of example in
Communication network 14 may include a telephone network, cellular, and/or data communication network to connect different types of electronic devices. For example, the communication network 14 may include a private or public switched telephone network (PSTN), mobile network (e.g., code division multiple access (CDMA) network, global system for mobile communications (GSM) network, and/or any 3G, 4G, or 5G wireless carrier network, etc.), WiFi or other similar wireless network, and a private and/or public wide area network (e.g., the Internet).
Referring back to
Referring now to
Each application testing environment 10 in this example has its own testing framework, i.e., a first testing framework, a second testing framework and a third testing framework in this example. The testing frameworks can be the same, similar or dissimilar to each other, but each are provided, maintained and/or controlled within a particular application testing environment 10 such that a testing stage or separate test or tests is/are performed on an application under test. For example, an enterprise application may have multiple modules that are each tested separately by different business units, thus creating separate and multiple application testing environments 10 and corresponding testing frameworks.
The automated testing system 24 enables test data and test states to be accessible across multiple testing frameworks such that tests can proceed from framework to framework as illustrated in
In
The editor module 30 can be used by a developer/programmer to create and edit program code associated with an application being developed. This can include interacting with the version and access control manager 32 to control access to current build files and libraries 34 while honoring permissions and version controls. The compiler 36 may then be used to compile an application build file and other data to be stored with the application build data 18. It can be appreciated that a typical application or software development environment 12 may include other functionality, modules, and systems, details of which are omitted for brevity and ease of illustration. It can also be appreciated that the application development environment 12 may include modules, accounts, and access controls for enabling multiple developers to participate in developing an application, and modules for enabling an application to be developed for multiple platforms. For example, a mobile application may be developed by multiple teams, each team potentially having multiple programmers. Also, each team may be responsible for developing the application on a different platform, such as Apple iOS or Google Android for mobile versions, and Google Chrome or Microsoft Edge for web browser versions. Similarly, applications may be developed for deployment on different device types, even with the same underlying operating system.
By having build files stored for all of the various operating systems, device types, and versions that are currently compatible and being used, and providing access via the development environment interface 38, the application testing environments 10 can automatically obtain and deploy the latest builds to perform application testing in different scenarios and using the multiple different testing frameworks illustrated in
While not shown in
Turning now to
The testing environment interface 40 can provide a platform on which the automated testing system 24 (or an instance thereof) can operate to instruct the development environment interface 38, e.g., by sending a message or command via the communication network 14, to access the application build data 18 to obtain the latest application build(s) based on the number and types of devices being tested by the testing host(s) 44. The latest application builds are then returned to the application testing environment(s) 10 by the development environment interface 38 to execute an automated build retrieval operation. This process can be implemented to enable each application testing environment 10a, 10b, 10c, etc. to obtain the latest build in order to perform a distinct test or a stage in a multi-stage test. As shown in
The test devices 22 are also coupled to the testing execution module 42 to allow the testing execution module 42 to coordinate tests 46 to evaluate metrics, for example, by executing tests for application traffic monitoring, determining UI response times, examining device logs, and determining resource utilization metrics (with Test 1, Test 2, . . . , Test N; shown in
It can be appreciated that while the testing environment interface 40, the testing host(s) 44, and the testing execution module 42 are shown as separate modules in
Turning now to
The automation framework 50 can be used to automate the execution of these tests 46 as well as obtain test results, e.g., test data and test states that can be stored in a test repository 52. This allows the automation framework 50 to pass test data and test states to other testing environments 10b, 10c, etc. or otherwise enable such other environments 10b, 10c to access the test repository 52. By being integrated with and between the multiple application testing environments 10a, 10b, 10c, etc., the automated testing system 24 (and automation framework 50) can provide complete end-to-end testing of an application under test. That is, multiple distinct tests or multiple stages of a same test that are implemented by separate testing frameworks can be coordinated and framework-to-framework integration provided.
The dashboard 48 is also shown in
The automation framework 50 can also integrate several artificial intelligence (AI) tools, some of which are illustrated in the configuration shown in
Various other AI tools 59 can also be utilized by the automation framework 50. For example, visual verification can be implemented using an AI-powered computer-vision algorithm to detect and report any difference found between screenshots and baselines. By emulating the human eye and brain, the algorithms can be used to only report differences that are visible to the users (e.g., with no calibration, training, tweaking or thresholds required). Another example of the other tools 59 can include a smart failure analysis tool that implements a bot to assist in the analysis of automation script failures. Such an analysis tool can be configured to takes the feed of various logs (e.g., automation logs, application logs, error messages in screenshots, network logs, etc.) for the failed scenarios, categorize the failures based on past learning, and execute or trigger an appropriate action according to the category of failure.
Various other integrated testing features can be deployed with or on top of the automation framework 50. For example, as shown in
The mobile mirror utility 60 and execution monitor 62 are examples of user-centric monitoring features for monitoring the testing process(es). Referring to
An advantage of the mobile mirror utility 60 is that normally the tester is unable to observe the execution of the test from the perspective that the user would see. The mobile mirror utility 60 provides visibility into what is happing on the device 22 as the test mimics the functionality by providing a “listener” in the device 22 and obtaining a current state of the associated driver to provide screens in an automated fashion as shown in
In
The recommendation engine 76 is used by the AI tools 54, 56, 58, 59 of the automated testing system 24 to generate one or more recommendations for the automated testing system 24 and/or a client device 26 that is/are related to testing automation, such as by determining or using smart objects, automating test design(s), and self-healing of application features. It may be noted that a recommendation as used herein may refer to a prediction, suggestion, inference, association or other recommended identifier that can be used to generate a suggestion, notification, command, instruction or other data that can be viewed, used or consumed by the automated testing system 24, the testing environment interface 40 and/or the client devices 26 interacting with same. The recommendation engine 76 can access application test data 20, application build data 18 other data stored by in the test repository 52 (e.g., test states) or other data and information, e.g., analytics data handled by the dashboard 48, and apply one or more inference processes to generate the recommendation(s). The recommendation engine 76 may utilize or otherwise interface with the machine learning engine 78 to both classify data currently being analyzed to generate a suggestion or recommendation, and to train classifiers using data that is continually being processed and accumulated by the automated testing system 24. That is, the recommendation engine 76 can learn testing outcomes, testing failures (e.g., for self-healing) or other test-related metrics and revise and refine classifications, rules or other analytics-related parameters over time. For example, the trained model 84 can be updated and refined using the training module 82 as client devices 26 interact with the automated testing system 24 during various interactions to improve the AI/machine learning (ML) parameters and understanding of how testing is implemented, monitored, and fixed.
The machine learning engine 78 may also perform operations that classify the test and application data in accordance with corresponding classifications parameters, e.g., based on an application of one or more machine learning algorithms to the data or groups of the data (also referred to herein as “app content”, “test or testing content”, “application build requests” or “test results content”). The machine learning algorithms may include, but are not limited to, a one-dimensional, convolutional neural network model (e.g., implemented using a corresponding neural network library, such as Keras®), and the one or more machine learning algorithms may be trained against, and adaptively improved, using elements of previously classified profile content identifying suitable matches between content identified and potential actions to be executed. Subsequent to classifying the testing-related content or content being analyzed, the recommendation engine 76 may further process each element of the content to identify, and extract, a value characterizing the corresponding one of the classification parameters, e.g., based on an application of one or more additional machine learning algorithms to each of the elements of the chat-related content. By way of example, the additional machine learning algorithms may include, but are not limited to, an adaptive natural language processing (NLP) algorithm that, among other things, predicts starting and ending indices of a candidate parameter value within each element of the content, extracts the candidate parameter value in accordance with the predicted indices, and computes a confidence score for the candidate parameter value that reflects a probability that the candidate parameter value accurately represents the corresponding classification parameter. As described herein, the one or more additional machine learning algorithms may be trained against, and adaptively improved using, the locally maintained elements of previously classified content. Classification parameters may be stored and maintained using the classification module 80, and training data may be stored and maintained using the training module 82.
The trained model 84 may also be created, stored, refined, updated, re-trained, and referenced by the automated testing system 24 (e.g., by way of the AI tools 54, 55, 58, 59) to determine associations between testing-related messages or commands, and suitable responses or actions, and/or content related thereto. Such associations can be used to generate recommendations or suggestions for improving testing procedures or application features being tested.
In some instances, classification data stored in the classification module 80 may identify one or more parameters, e.g., “classification” parameters, that facilitate a classification of corresponding elements or groups of recognized content based on any of the exemplary machine learning algorithms or processes described herein. The one or more classification parameters may correspond to parameters that can indicate an affinity or compatibility between testing objectives and testing outcomes, and certain potential actions. For example, the smart object repository 54 can be used to determine a feature that can be subjected to a self-healing 56 operation.
In some instances, the additional, or alternate, machine learning algorithms may include one or more adaptive, NLP algorithms capable of parsing each of the classified portions of the content and predicting a starting and ending index of the candidate parameter value within each of the classified portions. Examples of the adaptive, NLP algorithms include, but are not limited to, NLP models that leverage machine learning processes or artificial neural network processes, such as a named entity recognition model implemented using a SpaCy® library.
Examples of these adaptive, machine learning processes include, but are not limited to, one or more artificial, neural network models, such as a one-dimensional, convolutional neural network model, e.g., implemented using a corresponding neural network library, such as Keras®. In some instances, the one-dimensional, convolutional neural network model may implement one or more classifier functions or processes, such a Softmax® classifier, capable of predicting an association between an element of event data (e.g., a value or type of data being augmented with an event or workflow) and a single classification parameter and additionally, or alternatively, multiple classification parameters.
Based on the output of the one or more machine learning algorithms or processes, such as the one-dimensional, convolutional neural network model described herein, machine learning engine 78 may perform operations that classify each of the discrete elements of testing-related content as a corresponding one of the classification parameters, e.g., as obtained from classification data stored by the classification module 80.
The outputs of the machine learning algorithms or processes may then be used by the recommendation engine 76 to generate one or more suggested recommendations, instructions, commands, notifications, rules, or other instructional or observational elements that can be presented to the AI tools 54, 56, 58, 59, to the automation framework 50, dashboard 48 or other module of the automated testing system 24.
Referring again to
The automated testing system 24 in this example also includes the automation framework 50 described above, which can also provide access to the dashboard 48. The integration module 64, parallel execution module 66, and report module 68 are also shown in
The automated testing system 24 may also include the enterprise system interface module 88 to provide a graphical user interface (GUI) or API connectivity to communicate with an enterprise system 90 (see
As illustrated in
In
Mobile application server 94 supports interactions with a mobile application installed on client device 26 (which may be similar or the same as a test device 22). Mobile application server 94 can access other resources of the enterprise system 90 to carry out requests made by, and to provide content and data to, a mobile application on client device 26. In certain example embodiments, mobile application server 94 supports a mobile banking application to provide payments from one or more accounts of user, among other things.
Web application server 96 supports interactions using a website accessed by a web browser application running on the client device. It can be appreciated that the mobile application server 94 and the web application server 96 can provide different front ends for the same application, that is, the mobile (app) and web (browser) versions of the same application. For example, the enterprise system 90 may provide a banking application that be accessed via a smartphone or tablet app while also being accessible via a browser on any browser-enabled device.
The client data 98 can include, in an example embodiment, financial data that is associated with users of the client devices (e.g., customers of the financial institution). The financial data may include any data related to or derived from financial values or metrics associated with customers of a financial institution system (i.e., the enterprise system 60 in this example), for example, account balances, transaction histories, line of credit available, credit scores, mortgage balances, affordability metrics, investment account balances, investment values and types, among many others. Other metrics can be associated with the financial data, such as financial health data that is indicative of the financial health of the users of the client devices 26.
An application deployment module 102 is also shown in the example configuration of
In
In the example embodiment shown in
In
In the example embodiment shown in
It will be appreciated that only certain modules, applications, tools and engines are shown in
It will also be appreciated that any module or component exemplified herein that executes instructions may include or otherwise have access to computer readable media such as storage media, computer storage media, or data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Computer storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Examples of computer storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information, and which can be accessed by an application, module, or both. Any such computer storage media may be part of any of the servers or other devices in the application testing environment(s) 10, application development environment 12, automated testing system 24, enterprise system 90, client device 26, or test device 22, or accessible or connectable thereto. Any application or module herein described may be implemented using computer readable/executable instructions that may be stored or otherwise held by such computer readable media.
Referring to
The stored test data and test state are interpretable by other testing frameworks to enable a corresponding distinct test or portion of a multi-stage test on the application under test to be executed by the other application testing frameworks. In this way, duplicate testing operations can be avoided, and failures already detected can be observed and taken into account within the other testing framework. This can include processing the first test data and/or first test state to be interpretable within other frameworks, e.g., by normalizing data, converting data, etc.
At block 156, the automation framework 50 can provide the first test data and first test state to a second of the testing frameworks, e.g., by sending or providing access to the first test data and first test state to another of the application testing environments 10. This can be done in the context of automatically transitioning the application under test through multiple distinct tests or the multi-stage test by passing the test data and test states across the multiple testing frameworks according to at least one transition criterion. For example, testing may need to pass between frameworks in a particular order and/or require review or approvals between transitions.
At block 158, the automation framework 50 receives second test data and a second test state from a second testing framework, which are stored in the test repository 52 at block 160. This effectively “stiches” or concatenates the testing data from multiple application testing environments 10 in the test repository 52 to provide true end-to-end testing, monitoring, control and visualization, e.g., using the dashboard 48. In this way, at block 162, the automation framework 50 can provide access to the test repository 52 at least upon completion of the multi-stage test or a set of distinct tests on the application under test. That is, the test repository 52 can be accessed to provide the necessary data (e.g., results) and test states to provide an overall end-to-end view of the testing being performed on a particular build of the application, which can span across multiple business units or other departments or phases within an enterprise or other organization.
Turning now to
It will be appreciated that the examples and corresponding diagrams used herein are for illustrative purposes only. Different configurations and terminology can be used without departing from the principles expressed herein. For instance, components and modules can be added, deleted, modified, or arranged with differing connections without departing from these principles.
The steps or operations in the flow charts and diagrams described herein are just for example. There may be many variations to these steps or operations without departing from the principles discussed above. For instance, the steps may be performed in a differing order, or steps may be added, deleted, or modified.
Although the above principles have been described with reference to certain specific examples, various modifications thereof will be apparent to those skilled in the art as outlined in the appended claims.