Power BI – A Visualization Tool which is easy to understand and develop

Power BI is a tool used for generating business intelligence reports, charts and graphs, that incorporate easy to understand visuals. It is a self-service BI tool that is particularly useful for data analysts who create and distribute BI reports throughout the organization. With moderate knowledge of SQL, one can develop simple power BI visuals after only very basic training.

The first important point is that it is essential to determine the Storage mode before starting to develop any power BI report. Storage modes that can be used for accessing the data can include:

  1. Import mode
  2. DirectQuery mode
  3. LiveConnect mode
  4. Push mode

My experience in developing a power BI report increased quickly, as I started by developing a very simple report and ended up learning a huge amount about more advanced elements of Power BI as the project requirements changed.

In the beginning, it was exciting to work on the first simple power BI report, which I developed using a database like SQL Server and Storage mode as Import.

PowerBI 1

As shown above, the visualisation was for a count of orders for the time period indicated by the date slider. The stacked column chart on the right shows the orders based on service type on a yearly basis. The visualisation can be done for any date hierarchy including daily, weekly, monthly, quarterly and yearly. In the pie chart on the left, the total orders are shown as both a total count and a percentage breakdown. As specifically requested by the client, we also added a reset button to restore the initially selected filters values.

Later on, during the deployment phase, we had to search for an on-premises data gateway to maintain the continuous connection with the data relying on the SQL server. We installed the on-premises data gateway on our database server connecting to the datasets created on the Power BI portal as shown below:

Datasets 2

We maintained daily refresh schedule as shown below:

Scheduled Cache refreshing 3

After deploying this report to production, the client requested a live report that showed current statistics without needing a page refresh. After some research I found that automatic page refresh can be achieved using the DirectQuery Storage mode. Unfortunately, my report was developed using the Import mode. This is when I learned the hard way that choosing the right storage mode from the beginning is very important, as I had to recreate the whole report using the DirectQuery storage mode. Meeting the clients’ needs required converting the storage mode to Direct Query, recreating the report and setting the automatic page refresh option to 5 seconds.

Orders 4

We can develop a variety of reports using the Visualization options as shown in the image below.

Visualization option 5

We can even use visuals other than those available in the Visualization pane, such as the Search tool shown below:

Search tool 6

At MetaSys, we  are focused on investing time into new and innovative projects like Power BI, to meet our clients’ needs.

For more information refer to  https://www.metasyssoftware.com/contact

Few tips to help you get better at building app features through Unit Testing

At MetaSys, we place great importance on writing unit tests, as it leads to faster development and reduces the time it takes for software to get to the production stage.Unit testing is the first step of software testing, where individual units/components of a software are verified. A unit refers to the smallest module of any software, and usually has one or more inputs and often a single output. The purpose of unit testing is to check whether the units are working as expected.

Unit tests help in finding regressions, test error cases and reduces the requirement for manual testing significantly. Unit tests also help in improving the code quality, e.g. if you are not able to write a unit test for a particular scenario, then it typically means that the code needs to be refactored. For a better understanding of the topic, I recommend reading Kent Beck’s book on unit testing ‘Test-Driven Development by Example’.
Having said that, here are my comments on Unit testing –

● Any *newly*developed app feature should not be considered complete until a unit test has been performed. This means, the development estimates should always include the unit testing time. For example, a developer might build a feature without writing a unit test and perform manual testing instead for which he might spend 24 hours plus an additional 24 hours to fix bugs and regressions. Instead, it would be better to spend 48 hours or less for building a feature by writing the unit tests, as it will ensure that the code quality is better. The developer will have more confidence in the code after completing the unit test. Unit testing is particularly useful for identifying regression bugs, as the same tests can be reused to prevent future regressions.

● Some existing applications do not have any unit tests because they have been developed by developers who have not prioritized unit testing, or may not have been aware of its benefits. When new developers who are aware of unit test concepts start working on the application, they should not necessarily interrupt the work to start writing unit tests for all components immediately. Instead, the process can be undertaken gradually. For instance, if they are working on specific components that lack tests, they should take the opportunity to write unit tests, at least to verify the newly added functionality. It is important that the project manager takes care of estimates for development time for writing unit tests for old components. Over time the code coverage for these components will increase and at some point in time, it may become sensible to set a goal specifically to increase test coverage.

Advantages of unit testing –
1. It reduces the level of bugs in the production environment.
2. It builds confidence in the developer.
3. It allows the code to be easily refactored or changed.
4. Regression bugs can be caught easily.

Disadvantages of unit testing –
1. In our experience, writing unit tests requires about 20-30% more time at the beginning of the project. For a complicated project, it may require even more time.
2. If the architecture/design of the project is not correct from the beginning, then tests need to be rewritten when the project is re-architected. This can turn into a major time loss.
3. For big/complex projects, unit testing alone is not enough. Typically, integration tests and e2e tests will be required alongside the unit tests to have proper test coverage.

As developers, we always look to reduce costs whilst still fulfilling all the project requirements. Unit testing can play a big role in achieving this. Unit testing helps any developer to produce bug-free and quality software with confidence.
Over the years, MetaSys has successfully built a robust testing environment to build custom software solutions. Feel free to reach us and do share your feedback in the comments section below.

Automation Testing- Process and Tools

Automation Testing is a software testing method in which an automation tool is configured to execute tests and compare the actual outcome with the expected outcome defined in the scripts. In this article, I will explain the benefits of automation testing, outline the process of automation testing, and finally list some of the tools on the market.

Why use Automation Testing?

With continuous development in software technology, it is becoming extremely challenging to maintain the quality and efficiency of the development process. Testing is one of the crucial activities of the software development process, and the irony is that it is often neglected because of time and cost. Traditional manual testing methods are tedious and time-consuming. Also, it is tough to test each and every functionality of the software manually. Test automation helps to improve the speed and quality of the development process.

At MetaSys, we use  automation testing for many of our projects to deliver within timelines and within budget. As an application keeps on evolving, the number of regression test cases to be executed keeps increasing and becomes extremely time-consuming. Regression testing refers to the re-running of tests to ensure that previously tested software still performs after a change. Despite its importance, regression testing is particularly tedious and repetitive as many of the same test cases are executed for every sprint release cycle. We often employ the Agile testing methodology, which follows the philosophy ‘Test early, test often’. With tight schedule sprints, it becomes very demanding to execute the required testing. Automation testing is essential to maintaining software quality alongside fast paced development.

Using automation regression testing has significantly increased our test coverage, and thereby improved the quality of the software we deliver to our clients.

Advantages of Automation Testing over Manual

Automation testing image 1

Process of Automation Testing   

At MetaSys we follow the following seven steps for automation testing.

Automation testing image 2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

  1. Select the automation testing tool and framework based on testing requirements. Some key points include the availability and cost of licenses, what type of testing is necessary (Load/API/Mobile/Functional testing) and whether it is a desktop or web app. Some of the tools that we use will be listed later in this article, but some automation frameworks are listed here:
  • Data-Driven Automation Framework
  • Keyword Driven Automation Framework
  • Hybrid Automation Framework
  • Behaviour Driven Development(BDD) Framework
  • Test-Driven Development(TDD) Framework

 

  1. Define the scope of the automation testing process and decide all the functionalities in the application which will be automated.
  • Identify test cases which cover most of the functionality.
  • Identify which test cases can be automated and which cannot.
  • Clearly define In-Scope and Out-Of-Scope items for a

 

  1. Plan and strategize the testing activity.
  • Identify all deliverables for automation testing.
  • Identify risks and measures to mitigate risks.
  • Plan and schedule timelines for scripting and execution.

 

  1. Design and Develop automation test scripts, focusing on the following points:
  • Test cases which need to run for every build. Eg. Login.
  • Test cases which need to be executed with different types of data.
  • Test cases which need to be executed on the different platforms.

 

  1. Execute all automated test scripts on the same or different browsers/OS/devices as per the testing You can schedule script runs for a predefined time interval too.

 

  1. Analyse results by checking the test results report and sending a report to the development team.

 

  1. Maintain all test scripts in accordance with the latest changes in the application.

 

Automation Testing Tools   

There are many automation testing tools available on the market. Some tools are open source, and some are paid so we choose the tools according to the requirement and available budget.

Here’s a list of some commonly used Automation Testing tools:

Automation testing 3

At MetaSys, we use different automation tools and frameworks as per the requirement of the project.  We have expertise in functional, regression, performance, API and mobile testing using a wide range of automation tools.

At MetaSys, we have a team of experienced testers who test solutions using appropriate tools. Feel free to reach out to us at https://www.metasyssoftware.com/contact for more details.