A
well-defined metrics is first characterized by the presence of all three of
entity, attribute, and metric. If any of these is missing, there is no much
point for measuring. Metrics must also be valid, which means that the
representation condition is satisfied, i.e. the empirical relations preserve and
are preserved by the numerical relations. That is, however, difficult to
determine from the final reports, and therefore omitted from the study. We only
consider if all of entity, attribute, and metric have been clearly stated or
implicit in the context.
Start point and assumptions “Principia”
- We
have a modular MVC vision for
development as the main architecture of our application
-We
have a short development time usually, this means analysis, testing and qualiy
cannot be long in time
-How
usually is developed? Usually we use the paradigm Bottom-up or top-down
-How
many people is required? If is possible to have 2 developers for platform is
better, a design and manager or analyst.
-What
are the flanks? ANDROID, IOS WindowsPhone
How to make Quality?
1) By
modules?
2) By
requirements measure?
3) By user
Experience?
As what you
can expect, is necessary in all there.
By modules
Having in
count the mobile stack of development and the MVC paradigm, we have the next
modules:
- USER
INTERFACE /View
- APPLICATION
LAYER /View
- CORE
LAYER (Helpers, managers, flux guiders) /Controller
- DATA
LAYER /Model
- HW LAYER
/Model
So now, we
have the stack grouped in the three MVC blocks, let’s going to try to
understand now how to measure them.
View: Measured by User Experience and
UI-TESTING (for example espresso for android)
Controller: Requirements Measurement based,
answer this questions: Is doing what is expected? What is the behavior of
something unexpected? Input and outputs by modules are right?
How to make
it good for controllers?
1) Take the ideal flux, optimal inputs
have to get optimal outputs for example our module have 2 inputs Int one= 1,
Int two=2 the output we know have to be the Int result= 3 then and develop it.
2) Then we have now an ideal flux, now
we have to search or try to find the worst situation and set the conditions for
let it work, in some cases this means set the try-catch-finally block, now then
we have the best and worst situation working on our modules.
3) Then we have to test the interaction
between the modules that usually work together and try to test them switching
between the best and worst conditions and analyze the behavior to solve
possible problems and engage best as possible.
For make this Junit test are standard and could be useful but the
problems is the time required for create our mock objects may use so much time,
so we have to create the Junit test for essential blocks of our controllers.
If we are going to have a previously known multi-version application, we
test the main fluxes and the essential modules, and for each new version add
some testing for the secondary modules.
Model: The model on MVC it can refer the data connection
layers on previously post I defined in mobile also like: definition of what,
when, where is going to do the application, usually is represented as a lifecycle
of each requirement.
If we take it,
only as a Data connection the quality can be improve with:
From
application perspective, you need to look at below states for DB to be valid
with basic cases
Clean up
Scripts (Clearing Previous Run Data)
Initial
Data population (From a fresh install whatever initial configuration you need
to do)
Prerequisites
Validations Tests (Checklist to validate before you start run - Services up /
DB's accessible, able to connect to DB's with supplied credentials)
Run Tests
(These are actual test you can run to validate, ex- calling with test data,
updating few job tables in DB to process populated data)
This provides
a logical flow as well help you re-run every time.
However, if
we analyze the model as how data have to flux into the application the
improvement of data is a little bit complex to do it good.
For example,
we have some data acquired from external web service stored in ram, if the
quantity of data or the data object is complex, then is better to split them in
more simple data and if is not necessary show all the data at same time store
the big data and complex on local SQLite DB, then get the data when is
necessary. If we are working with real-time data then the area to improve is
the web service calls and try to manage the behavior of UI when internet is
failing.
This is a
short and resumed idea of how to adapt the software quality improvement for
mobile projects and developments having in count my experience working for different
mobile enterprises.