Software testing

 

2730453797_283e55c841_b.jpg

3

Up to this point we have talked a little about different ways to organize the way you program. Look one thing, we are posting different tools to help you and help us manage the way we program.

This doesn´t mean you need always to follow this specific rules to program step by step.

Program is like talking, everybody is different than the others.

Taking in mind that, we are going to talk about some of the testing tools that are availabe in the web to help you test your software.

436491997_3a32feae04_o.jpg

3

First let´s see the different test steps according Atlassian.com:

software-testing-hero
Retrived from: Atlassian.com

Exploratory Software Testing:

This is the test related with the workflow of your work. This is also related with how is looked your software as users, some users will be domain experts while others will be beginners. Exploratory software test covers all types of users and is fundamental for validating user experience,as opposed to focusing on a specific area of code.

Exploratory tests fit well with the Agile concept of user stories. A user story is a plain English description of how software should work. Engineers implement software based on user stories. Software test engineers and other users can easily turn a user story into a Test Session. Test Sessions are short, focused tests that can evaluate a user story for correctness.

Atlassian.com

Also, a Exploratory Test allows you to receive good feedback of your work. This means, updates, and all the upgrades of it are followed directly from the users, that are the final consumers of your software.

Remember, a happy customer is a happy developer.

12544827224_9428893f49_o.jpg

2

 

Integration Test

This means, testing all the parts of the project or the software by units of its. All of the units are the minimal

15406246801_a6bb661db4_b.jpg
3
Continue reading "Software testing"

Beautifully covering requirements

What am I talking about? Software design. Helping the programmer in software implementation, it is a process that transform user requirements into a suitable form.

What we know?

If you’ve been following my blog posts, we’ve already talked about SDLC, and SRS where we discussed that a document is created to specify user and software requirements. It is important to make it specific, and make use of software terms. The first step in SDLC is Software Design, which changes the view of problem into solution.

Levels

slide_7

  • The architectural design is the most superficial and abstract version of the system. It identifies software as a bunch of components that interact with one another. This is were developers take an idea of a proposed solution.
  • The high-level design breaks the “multiple components” concept of the architectural design, where a view of modules is portrayed and it shows where they interact with each other.
  • The detailed design deals with the implementation part, and its sub-systems, bringing together both previous designs. Defines the logical structure of each module.

Modules?

Modularization is used to divide a system into multiple and independent modules. These modules are expected to carrying out independent functions, and may work as the base for the entire system.

Want to know more?

Read this blog post, where there is a more thorough explanation on the topic.

Video:

Reference

https://www.tutorialspoint.com/software_engineering/software_design_basics.htm


Software Design Patterns

C by schemacoma

3

It´s time to talk about Software Design Patterns.

They are solutions to common problems that developers face. Many software design patterns address common situations that developers need to implement in every application they build (e.g. object initialization). Take just about any programming problem and there are only a few good implementation approaches, but many bad approaches. Software design patterns capture the experience of experts in a form that others can reuse.

First of all, I will take few info of what we comment on a previous post of our blog:

Design Pattern:

Design patterns provide a standard terminology and are specific to particular scenario.

As per the design pattern reference book Design Patterns – Elements of Reusable Object-Oriented Software , there are 23 design patterns. These patterns can be classified in three categories: Creational, Structural and behavioral patterns. We’ll also discuss another category of design patterns: J2EE design patterns.

S.N. Pattern & Description
1 Creational Patterns
These design patterns provides way to create objects while hiding the creation logic, rather than instantiating objects directly using new opreator. This gives program more flexibility in deciding which objects need to be created for a given use case.
2 Structural Patterns
These design patterns concern class and object composition. Concept of inheritance is used to compose interfaces and define ways to compose objects to obtain new functionalities.
3 Behavioral Patterns
These design patterns are specifically concerned with communication between objects.
4 J2EE Patterns
These design patterns are specifically concerned with the presentation tier. These patterns are identified by Sun Java Center.

Taking the info about Design patterns at Wikipedia we have the following table of Design patterns:

Creational patterns

Name Description
Abstract factory Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
Builder Separate the construction
Continue reading "Software Design Patterns"

UML stands for Unified Modelling Language

Born in 1994, UML is a technique for system specification in every phase. Created by Grady Booch, James Rumbaugh, and Ivar Jacobson, it covers all main aspects of previous designing methods. The first version of UML was released in 1997, and it has been successfully used in a number of different systems for different industries. (UNAM, n.d.)

Benefits of using UML:

  • Improves development time
  • Establishes concepts and executables
  • Creates a modelling language used by humans and machines
  • Improves support and control for project management
  • High reuse and reduced costs
  • Models systems using object oriented concepts

Types of UML diagrams

Types of UML diagrams with structure diagrams coming first and behavioral diagrams starting from position 8. Click on any diagram type to visit that specific diagram type’s description (Creately, 2012).

  1. Class Diagram
  2. Component Diagram
  3. Deployment Diagram
  4. Object Diagram
  5. Package Diagram
  6. Profile Diagram
  7. Composite Structure Diagram
  8. Use Case Diagram
  9. Activity Diagram
  10. State Machine Diagram
  11. Sequence Diagram
  12. Communication Diagram
  13. Interaction Overview Diagram
  14. Timing Diagram
uml-diagram-types1

UML diagram types (Creately, 2012)

References:

http://creately.com/blog/diagrams/uml-diagram-types-examples/

http://profesores.fi-b.unam.mx/carlos/aydoo/uml.html

 


About API´s

http://www.metatrader4.com/en/brokers/api
Original at: http://www.metatrader4.com/en/brokers/api

It´s time to talk about Application programming interfaces, that thing all of us young software developers has used at least one time and maybe without knowing what it is:

In Jeff Standen words:

You can consider an API as the alternative “user interface” that software uses to interact with other software.

We humans are familiar with user interfaces that have fancy layouts with buttons, fonts, colors, graphics, etc; and most of that is unnecessary to a machine.  Machines wouldn’t open up a program or website, take a screenshot of that section of the monitor, and then try to parse its meaning visually like a human would.

Machines just need a shorthand way to do things like checking the current weather or adding an event to your calendar.  That’s what an API provides.

APIs can be web-based, or specific to a platform.  Google has APIs for search, calendars, translations, etc.  Facebook and Twitter have APIs that allow software to automatically post status updates.  Apple provides many APIs for building iPhone apps.

https://www.quora.com/profile/Jeff-Standen

So, APIs gives us the option to make more “easy” the way we program and connect to other software. Let´s tink in an example:

Imagine a 70´s or earliest car, the one that needs to be “recharged” with a pulley to obtain enough power to be moved, you constantly needed to check for water, oil and conditions of the car and the only thing you were able to see were the velocity in a tiny indicator.

Let´s have a look at the other side of the coin. Nowadays, cars starts with a button, you don´t need other thing that see the screen in the car to know all the state of it (in modern ones), velocity, temperatures

https://sanjaysaha.wordpress.com/2012/08/10/api/
http://www.adweek.com/socialtimes/optimove-api-custom-audiences/433003
Continue reading "About API´s"

Software Development Life Cycle

In this world, things tend to behave as cycles. We have a new president every 6 years, which it seems, does no difference, but we go through the same process. Every year we start with great promises, and as soon as time goes, we forget them.

Software development is not an exception. Why? Because even the best developed program can fail, not because it’s bad, but because people’s needs change. This scheme tries to generalize development in general: not focusing on details such as roles, time lapses and more. Instead, it breaks software development into 5 simple steps (some sources believe 6 or even 7):

  • Planning: What do you need? How will you develop?
  • Design: Are we using NoSQL this time? Is RoR better than Django? Is a binary tree better than a hash table?
  • Implementation: Coding, coding, coding…
  • Testing: Not only PEBCAKs tend to happen. Let’s prevent the ones in our side.
  • Evolution: This might be the hardest step to explain. Basically, software prepares for the next cycle.

One can notice this pattern in the waterfall method such as in agile development.

flickr photo by Sam Howzit https://flickr.com/photos/aloha75/7778968110 shared under a Creative Commons (BY) license
flickr photo by Sam Howzit https://flickr.com/photos/aloha75/7778968110 shared under a Creative Commons (BY) license

Software Development Brief

Hi there! Let´s take a look about what steps needs to be covered to Develop software:

http://www.computerhope.com/jargon/s/softdeve.jpg

Prerequisites

First, you need to set up what needs to be done, how and maybe where.

This is commonly forgiven for the students to are starting in Software Development Process. Is always the “Let´s do it” and not the “How” what we think about.

So first, check what are going to be the main characteristics of your project, the main idea and stablish a work plan.

Design

Once you´ve set up a Prerequisites list/work plan, you need to start designing, it doesn´t mean having all the project in one area or all the idea stabliushed. Remember, Development is changing ideas and evolving this ideas thorough the process. Design means start with the idea, it can be pseudo-code or a draft code.

Implementation

Then, you need to clean your draft code, so the result can be implemented in the application phase. This is due to the excesive existence of bad code on the world and if you want to be a good SD´per you need to make the thing a good way.

Testing/Debugging

Here, maybe the hardest of the phases, at least for me, in this step you need to “patch” all the mistakes or fix all the bugs the code or the project has. This is harder because if you are keeping all the bugs to the final you are going to be losed in a bunch of bugs. Let´s have a time to debug in each step, and in this phase you can make your project be more efficient.

Documentation

This is one of my favorites, in this phase you need to explain what you made, Even if it is in the code (I prefer that) or in a special document. Please follow

Continue reading "Software Development Brief"

RAD model

http://www.chrysalis-solutions.com/images/rad.gif
From: http://www.chrysalis-solutions.com/images/rad.gif

RAD (Rapid Application Development) is based on prototyping and iterative development with no specific planning involved.

This uses the minimal planning processes to make more efficient the development process. In RAD model the functional modules are developed in parallel as prototypes and are integrated to make the complete product for faster product delivery.

RAD model distributes the analysis, design, build, and test phases into a series of short, iterative development cycles. Following are the phases of RAD Model:

  • Business Modeling: The business model for the product under development is designed in terms of flow of information and the distribution of information between various business channels. A complete business analysis is performed to find the vital information for business, how it can be obtained, how and when is the information processed and what are the factors driving successful flow of information.
  • Data Modeling: The information gathered in the Business Modeling phase is reviewed and analyzed to form sets of data objects vital for the business. The attributes of all data sets is identified and defined. The relation between these data objects are established and defined in detail in relevance to the business model.
  • Process Modeling: The data object sets defined in the Data Modeling phase are converted to establish the business information flow needed to achieve specific business objectives as per the business model. The process model for any changes or enhancements to the data object sets is defined in this phase. Process descriptions for adding , deleting, retrieving or modifying a data object are given.
  • Application Generation: The actual system is built and coding is done by using automation tools to convert process and data models into actual prototypes.
  • Testing and Turnover:The overall testing time is reduced in RAD model as the prototypes are independently
    http://www.onestoptesting.com/images/tradvsrad.jpg
    Continue reading "RAD model"

V – Shaped model

http://www.rootsitservices.com/pictures/v-shaped.jpg
Original at: http://www.rootsitservices.com/pictures/v-shaped.jpg

The V – Shaped model is a variant of Waterfall method more emphasized in the validation and verification phases of the software development proccess.

The different phases of this method are followed in parallel.

In V Model there are some steps or sequences specified which should be followed during performing test approach. Once one step completes we should move to the next step.

As V Model specifies that test plan should be started form the beginning when requirement phase starts. In above V Model you will see when requirement phase completed acceptance testing and system testing has been planned in parallel. Similarly once design phase completes, Integration testing should be planned and finally once coding phase completes, Unit testing should be planned.

 

Advantages of V Model

  • If project is small and easy to understand, V Model is the best approach as its easy and simple to use.
  • Many testing activities are performed in the beginning like planning and design which saves lots of testing time.
  • Most of the defects and bugs are found in the beginning of the project development. So less chances of defect or bug to be occurred at final testing phase.

Disadvantages of V Model

  • Guessing the error in the beginning of the project could take more time.
  • Less flexibility.
  • Any changes done in the middle of the development which is unplanned could make difficult to make the changes at all the places like test document and requirements.

When V Model should be followed.

  • V Model should be followed for small project where requirements are clear and easy to understand at the beginning of development.
  • V Model should be followed for the project where very less probability to make the changes in the middle of testing or development phase which
    Continue reading "V – Shaped model"

Waterfall model

http://www.rootsitservices.com/pictures/waterfall%20copy.jpg
Original at: http://www.rootsitservices.com/pictures/waterfall%20copy.jpg

This methodology of software development was one of the first to be implemented in order to have well made software.

In this model, all of the development of software is sliced in different steps, implemented one followed by another, always focused in different phases of the software development process. This phases are seperated to follow a sequential line. In other words, the process of Software development is sequantially.

Each of the phases means one different step:

  • Requirement and analysis: All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification doc.
  • Design: The requirement specifications from first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture.
  • Coding: With inputs from system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality which is referred to as Unit Testing.
  • Testing: All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures.
  • Maintenance: There are some issues which come up in the client environment. To fix those issues patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.

 

The following table lists out the pros and cons of Waterfall model:

Pros Cons
  • Simple and easy to understand and use
  • Easy to manage due to the rigidity of the model . each phase has specific deliverables and a review process.
  • Phases are processed and completed one at a time.
  • Continue reading "Waterfall model"