Testing strategy for our application

In this article it’s time to talk about the way how we are testing our application and the strategy for testing we laid down in the application design phase. The experience in the past showed us that one of the good design outcomes is easy testable application. Therefore from the very beginning along with the application architecture we were designing our testing strategy.

The goal of the testing application is to achieve a flawless work of it. The simplest way how to test an application is to do a manual tests, but these tests definitely are not the most effective. Along with the software development evolution test approaches evolved as well. We already new and applied in our other projects such tests as unit tests, integration tests, functional tests and regression tests. But since in our team we don’t have a person who knows about testing techniques, can develop and design an application, we developers decided to explore different testing strategies together with QA who mostly does the tests manually. So we started to investigate other teams experience, information in books and on the web, and started to lay down foundation for our own test strategy that would fit our needs.

The thing we decided to start with was “Test pyramid” the term Mike Cohn came up with in his book Succeeding with Agile. The pyramid gave us some understanding how to start to organize the tests.

Unit Tests. Taking in to account our own experience, and the information we obtained it was clear that unit tests will be foundation for our test suite. To be able to easy and what is most important quickly write unit tests one should be able to isolate different peaces of software. In case of OOP the paradigm we are following we should be able easy isolate classes. In my opinion this is one of the core principles to successful unit tests. But in order to do that we must have a design that would allow us to isolate the classes. And that is why the dependency injection became very important technique in our software and I even dedicated the whole blog article to it. And to make it easier to implement this principle in our Android application we chose to use Dagger 2 framework. Once we wrote a use case implementation and accompanied unit tests we ask are our QA to test it. Very soon we discovered that despite the fact that we had a quite good coverage of code by unit tests QA still was finding bugs. And as you can guess the errors occurred in the code that interacted with framework, in our case Android framework. So now it became obvious we needed integration tests to make sure that our code callings to third party libraries or framework work flawless.

Integration Tests. According to Test pyramid these tests should be less than unit tests and indeed we already had tests that cover our own code logic, and so in these tests we decided to test only the connection points between our code and the third party libraries. For example in our application we are fetching data from the server and caching the data in database. In our Android application we are using Room persistence library. There is no really way how to test DAO interfaces, without performing the operations on database. And so we had to write tests that involve Room library. Another example is our code that interacts with our back end server via Retrofit library. And again we had to write tests that involve Retrofit library. Although these tests were written in the same manner as unit tests using Junit test framework they covered more than our class or method and were considered as a separate type of tests.

UI tests. The main reason why we decided to write UI tests is because we wanted to fully automate the test process and make it a part of Continues Integration (CI) process. So for Android we chose Espresso framework and as a firsts test we wrote navigation tests, that made sure that we can navigate to every page we have in our application. Then we wrote the tests only for the errors that QA reported and so comparing with the rest of the tests these are making only small portion of all tests.

http://fitradar.me/

Top Ten Reasons To Hire a Personal Trainer

Working with a personal trainer is one of the most successful ways to improve your health and fitness. Personal trainers are used by people of all fitness, age and economic levels to help make lifestyle changes not easily achieved by themselves. A 2014 study in the Journal of Strength and Conditioning Research found those who used a trainer had greater improvements in their lean body mass, and other measures of health-related fitness, than those who completed self-directed training.

Consider the following benefits of hiring a personal trainer:

1. Build Confidence– Feel uncomfortable in the gym? Don’t know how to use all the machines? A trainer will show you the correct way to use equipment in the gym and give you a plan.

2. Accountability– Do you find it difficult to keep working out consistently? Having an appointment with a trainer might be what you need to get you to the gym when you may otherwise find a reason not to go.

3. Clarity– Fitness, and nutrition can be very confusing. Every day seems to bring a new diet or workout trend. A trainer can help you sift through all of the information out there and provide direction to help you find the right path for your fitness journey.

4. Expert Workout Advice– A personal trainer will help you define achievable goals and plan how to meet them. They will create a workout routine specific to your goals and needs while also making allowances for your current physical condition and medical background.

5. Improve Overall Fitness– A personal trainer will create an individualized program that improves your overall conditioning and develop the specific skills you need. They will monitor your progress and fine-tune your program as you go, ensuring your progress and helping you work your way off plateaus.

6. Avoid Injury– Having a trainer demonstrate the correct form, and watch you complete each exercise to ensure you are completing the move in a safe way, will help to avoid any potential injury. Also, your trainer will plan your workouts to maximize the benefits and reduce the possibility of injury or overtraining.

7. Focus On You– If you have a unique medical concern, a trainer can work with your physician, physical therapist or other health care provider to plan a safe and efficient program that will speed your recovery or enable you to reach your health goals.

8. Motivation– Ever feel like you can’t do one more rep or keep going for one more minute? A trainer will push you (safely) to do just one (or two!) more.

9. Fun – Doing the same old thing at the gym might get boring (and may prevent you from reaching your goals). A trainer can change up your workout and show you new exercises to keep things interesting, maybe even fun!

10. Support– Your trainer will be your biggest cheerleader and source of encouragement. I know most trainers became certified for the same reason I did because we want you to succeed in meeting your goals and live a happy and healthy life. A trainer will work with you to overcome any resistance or barriers to creating a healthier life and meeting your health goals.

Visit our website: http://fitradar.me/ and join the waiting list. Our app is coming soon!

P.S. Source: https://www.livritefitness.com/blog/top-ten-reasons-to-hire-a-personal-trainer

15 benefits only a personal trainer can provide

There are so many reasons why a Personal Trainer is essential to achieving your fitness goals, whether they be weight loss-based, sports-driven or for athletic purposes. Here, we’ve put together the most critical reasons why you should have a Personal Trainer, as well as the benefits that you are likely to achieve.

1. It’s Educational

One of the primary reasons that someone should have a Personal Trainer is that they are trained in teaching others how to exercise. And while exercise in itself is only a part of fitness, with nutrition and lifestyle playing an essential role in the overall picture if you don’t get exercise right then you will never achieve your goals.

The importance of education when exercising is important for two primary reasons:

1) If you don’t know which exercises are most effective for the goals you have, you are unlikely to achieve those goals. For example, if your goal is to build core strength but you spend all your time on cardio exercises, then you are unlikely to hit your goal.

2) Education when performing exercises is essential in reducing the risk of injury. Many people every year are seriously injured by performing exercises they have not received training for, and this can impact their health and fitness for a long time. Having someone trained in how to execute certain tasks will greatly reduce the level of risk and increase the effectiveness of your fitness routine.

2. They Help Perfect Form

Having a Personal Trainer beside you to demonstrate the correct posture and technique is invaluable. A Personal Trainer will ensure clients are performing exercises correctly and efficiently, in order to maximise results. If your form when exercising is not correct, then you are at increased risk of injury as well as not achieving your goals (because nothing kills a dream like 10 weeks of prescribed bed rest!).

3. They Can Help With Your Unique Requirements

Everybody is different, and that means everyone’s abilities and requirements are different when it comes to exercise. This could be anything from having an old injury that requires special exercises to having a phobia that may impact on where or how you workout.

For example, if you have an old knee injury that required surgery, but since then you haven’t done anything to rebuild the muscles or improve mobility, then you are going to need different exercises and goals than an athlete who is training to run a marathon. This is where a Personal Trainers experience can make a huge difference to your training program.

4. They Help You Set Realistic Goals

Everyone wants to achieve their goals straight away, whether they be weight loss, cheese grater abs or Hulk-like strength. But these are not always achievable, and if you don’t hit them then you may be discouraged and backslide.

A Personal Trainer will not only help you set realistic goals that you will be able to achieve – if you put in the effort, of course – but they will also be able to keep you on track to hit those goals. For example, if your goal is to achieve a ‘bikini body’ for summer, it’s not just about doing 100 crunches a day for a month to work your abs. It’s about altering your diet to eat the correct foods, mixing cardio and weights to work the right muscles, and setting a timeframe in which this can be achieved.

5. They Can Help With Specific Goals, Such As Training For An Event

As well as helping their clients set realistic goals, Personal Trainers are the perfect tool to help you achieve a specific goal. This is ideal for those who are training for a specific event, or need to achieve a certain level of fitness before they are able to do something they really want.

For example, if you have a bucket list with ‘Skydiving’ on it but are over the maximum weight, then hiring a Personal Trainer to assist with helping you lose weight is a great start to achieving this goal. Or if your goal is to be able to run a marathon in six months, then hiring a Personal Trainer to put you on the right track could be all you need to complete a marathon.

6. They Hold You Accountable

How many times have you gone to bed and said to yourself, ‘Tomorrow I’m going to wake up, go to the gym, and do an hour workout before I get ready for work’, and then woken up and decided to sleep for another hour instead of exercising?

This is where a Personal Trainer is critical to ensuring that you commit and stick to your fitness goals. If you’ve made an appointment to meet you trainer for a session, then you are far more likely to still go than if you are just telling yourself you should go to the gym.

7. No Wasted Time = Maximum Results

There are two types of people who go to the gym:

1) Those who wander in, spend 10 minutes on one machine and then drift slowly over to another, before half-heartedly trying bicep curls for five reps and then walking out.

2) Those who have a plan in mind, and hit the machines with a purpose. They generally have a set amount of reps they do in sets of two or three, and they’ll know exactly what they’re doing on each machine.

It’s fairly obvious that the first group will not be achieving their fitness goals unless they get some help and have someone to direct them, so if you know that you’re one of those people then you should be enlisting the help of a Personal Trainer ASAP.

8. It’s Not Just Fitness They Can Help With

When completing their Certificate III in Fitness, every student is required to complete a module on nutrition and how it can affect fitness. Personal Trainers who complete their Certificate IV in Fitness have to then complete additional work on nutrition, and a number of Personal Trainers also add on additional education to their program by completing a Nutrition course such as those offered by the Australian Institute of Fitness.

By choosing a Personal Trainer who has undergone specific nutrition education, you know that they will be providing the right nutritional advice to achieve your goals.

9. They Improve Your Mental Health

It has long been known that physical exercise can help with mental health issues such as depression, and that it is a recommended part of treatment by many medical health professionals. Having a Personal Trainer to help with your exercise plan when you suffer from mental health problems can help with motivation, with choosing the right exercises to release the most endorphins, and also just to have another shoulder to lean on.

Which leads us to our next point…

10. They’re An Unofficial Therapist

Let’s be honest, most of the time when exercising with your Personal Trainer you will be telling them about your week, how work is going, and what’s wrong with your life at the time. This is normal!

A Personal Trainer is there to help with your fitness goals, yes, but they’re also there to help improve your overall wellbeing. They care about how stressed you are, because that will impact how motivated you are in your sessions. They care if you’re unhappy in a relationship, as this could result in eating unhealthily.

There are myriad ways in which having a Personal Trainer can be like having an unofficial therapist.

11. They Help You Form Good Habits

It can take weeks to form good habits, and even longer to break bad ones – and trying to do it on your own is hard work. Having a Personal Trainer is like having a good angel on your shoulder encouraging you in the right direction. They can help to argue with the bad angel in your head, and keep you on track to achieve your fitness goals.

12. Personalised Training Plan

There are always going to be some exercises that you enjoy more than others, beyond simple capability. For example, just because you can physically do burpees doesn’t mean that you always want to, but you might really like doing squat jumps and sit ups instead.

A Personal Trainer will be able to tailor your training plan to suit you and what you enjoy, as well as encourage you to do the exercises that are best to achieve your goals.

As well as this, there are always going to be some days when the last thing you feel like doing is a hard workout, and so having a Personal Trainer means that they can tailor your exercise for that day to both accommodate your mood while still making the session helpful.

13. They Fit Into Your Schedule

Regardless of whether the only time you have available to train is at a ridiculously early hour before work, or on your lunch break, or mid-afternoon before the kids come home from school – a Personal Trainer is one of the most versatile professions in terms of hours. They understand that different people have different availabilities, and so they will tailor appointment times to suit you.

14. Increased Flexibility For Location

Not everyone enjoys the atmosphere of a crowded gym, or having to wait for the machine you want to use to become available. The benefit of having a Personal Trainer is that you aren’t limited to working out where equipment is available – not only will your PT have some equipment that they can bring with them, but you can also choose the location in which you exercise.

Whether it’s in the comfort of your own home or in your neighbourhood park, with a Personal Trainer you have the flexibility to workout wherever suits you best.

15. They Challenge You

Are you getting bored with your fitness routine? Have you progressed beyond the exercises you know and have plateaued in your fitness? A Personal Trainer is what you need to take you to the next level, and continuously challenge your abilities.

Don’t think you can lift that medicine ball?

Positive you won’t fit back into your favourite dress?

Doubt you’ll be able to compete in a charity run next year?

A Personal Trainer is your life coach, nutrition guide and encourager all in one, and without them your fitness goals are that much harder to achieve. So what are you waiting for? Find a professional Personal Trainer today to help achieve your fitness goals.

Credit: https://fitness.edu.au/15-benefits-personal-trainer/

Visit our website and join the mailing list:

http://fitradar.me/

Joining client with the back end service

Bridge

Sooner or later any Android, iOS or Windows application wants to get outside of the local hardware box and start to communicate with the outside world. In case of our application we new that already from the very beginning that we are going to have a back-end web services in one or another way. At the beginning of the project, after the user requirements were set, and the architecture of the solution designed, it seamed quite straight forward to implement our back-end services. Bellow is the architecture we decided to use for our Fitradar system.

But in the process of the implementation we realized that quite often we have to adjust our back-end web services API. So in this article I want to share some experience we had while joining our client applications with back-end web services.

Initial approach

First we divided the whole system in 4 sub-projects:

  • Android application
  • iOS application
  • back-end web services application
  • the project website application

and created 3 teams. We thought the client application teams and web services team will be able to work independently after the APIs and data contracts on the web services were defined. Once we received the UI designs we started to model web services API and data contract between the applications. And when the data contract between the applications was defined the back-end team started to work on the web service implementation, meanwhile application teams started to work on the UI (User Interface) part.

We estimated that by the time application teams will complete one use case UI, back-end team will implement the web services for that use case to the degree that they can start to receive and send data.  The first use case we picked up was user profile creation. The interaction between the client application and back end services went smoothly. Web service received the user profile data and stored that in the database. So we took the next use case – displaying full user profile information to the profile owner and limited information to other application users.

The problem

As we started we thought it will go fast and smooth since all we needed was to fetch already stored data from our web service. But soon we discovered that the data coming from the web service is not complete. We needed to display some statistics about the user activity. Since on early stage of development and user requirement gathering we new very little how the statistics will be calculated, we assumed that some of them we will be able to calculate in the clients application and some we will be calculated on the back-end server. It turned out that some statistics we were not be able to calculate in the client’s application and we needed to fetch more data from the server but on the other hand to calculate statistics on the back-end server we needed more input data from the user during the profile creation. So we had to change the data contract for the user profile creation and for user profile fetching web service end points. And when was the time to move to the next use case – sport event creation, we decided to call for a meeting to find a better approach.

Different approach

After some brainstorming we decided that both teams should work simultaneously on one or two use cases. When we had to work on use case that shows some data we kept an eye on the use case that sends this data to the back-end web service.  It means that we always started with the use case that fetches data from the web service and displays data to user. Application team started with UI that was unambiguous, since we had UI designs and we new quite well what we want to see in the UI. In the development process along with UI layout View Model was created. This View Model clearly defined what data we need in order to meet the design and functional requirements. Now we could see what business layer entities can provide the required data. And once the entities were defined for the use case we could tell what endpoint we need and more important what data these endpoints should provide. So at this point the data contract for fetching data was quite stable (it had some minor changes later nevertheless, but mostly because we decided to introduce change in UI design).  And the back-end team now could see if they can provide the required data form the data they will gather. If something was missing on the server the back-end team adjusted the data contract for incoming data accordingly.

To make this process more smoothly and allow the teams to work independently as much as possible application team instead of real network calls used mock objects that returned the required data. And the same did the back-end team for incoming data.

Another thing that back-end team had to keep in mind was, if we really should be the ones that provide the requested data. For example, after user profile use case analysis it quickly became clear that we should delegate the user’s profile picture storage to third party services like Cloude Storage

Conclusion

The one thing we learned is that the more complex project is the more difficult is to come up with precise requirements. We were familiar with the agile development model and applied it extensively on the project bases, but we thought that the interface between the client and the back-end is clear from the initial requirements. We were wrong, the web service interface was changed in several iterations because the discovered more requirements for the client application. So the conclusion we made is that for bigger projects we have to apply iterative development approach for the whole system, we can’t really make the projects independent from each other. We had to check the initial web service interface after each implemented use case and see if we need to make changes there. So are final web service API and data contracts after several use cases looked quite different than that we designed in the beginning.

http://fitradar.me/

The benefits of being a personal trainer

Are you interested in a career in personal training? Here are some of the amazing benefits that come with this career!

Stay healthy

Whether you work in a gym or at home, you will be able to stay healthy and keep in shape whenever you have some free time. This could be at the start of your day or when you are waiting for your next client. You will have all the proper equipment you need and keeping in shape will attract more clients!

Help other people

One of the main benefits of being a personal trainer is that every day you help your clients achieve their goals and become fitter, healthier and more confident. You have the ability to help your clients change their lives for the better and that is very fulfilling.

Turn your passion into a career

If you decide to become a personal trainer because you are passionate about health and fitness then this is the perfect career as you will be able to do something you love every day. You will have the knowledge and skills to teach other people and help them improve their lives whilst fitting in some time to workout yourself.

Career Opportunities

You can work in a gym, health club, sports club, hotel, on a cruise ship or you could even set up your own business and work in your own gym. The opportunities are endless and personal trainers can work almost anywhere in the world!

Meeting new people

You will meet and work with all sorts of people being a personal trainer. The social side makes the job very interesting and you will also have to help clients with different needs and goals so each day will be different.

Choose your own hours

If you work for yourself, you can set your own hours and enjoy a flexible schedule. However, you should consider clients who may only be able to train early in the morning or late at night due to being at work during the day. However, you can still choose which hours suit you best and you wont have the same work hours every single day.

P.S. Visit our website and join the mailing list! Our app is coming soon:

http://fitradar.me/

Source: https://www.velocity-pt.co.uk/blog/benefits-personal-trainer/