Software Testing

Software Testing is as a process in which testers try to find software bugs. In other words, it is a process that validates if the software is well-implemented or needs to be fixed. There are a lot of types of testing in the software world. The list is kind of huge, that’s why I’ll only describe some of them, if you want to see a more complete list, go to visit

  • Black box Testing: tests are based on the requirements and functionality of the project.
  • White box Testing: tests are based on the knowledge of the internal logic of the project.
  • Unit Testing: tests from individual code or individual sections of the code.
  • Functional Testing: tests are focused on the output, leaving aside the internal development of the project.
  • System Testing: tests the functionality of all the project, trying to find new glitches and bugs.
  • Acceptance Testing: tests are made to verify if the project reach the customer’s expectations.
  • Security Testing: tests regarding the security of the software, they try to close any unauthorized access.
  • Beta Testing: this test is tested by the final users. This test is the final test before it is released.

Tests are very important in the software environment, they help you to find out new problems and the idea is to find a solution to them. These processes might be slow or boring, but they are a fundamental part of the software development. Most of the time, users are the testers or the ones that find the bugs and glitches, so, it is important to have a good communication between them to solve the problems faster.

Retrieved from and

Software Testing

Pruebas de software: es el proceso de evaluar un sistema y sus componentes, con el propósito de encontrar otra manera de satisfacer las necesidades de los requerimientos especificados del software. Es ejecutar un sistema en orden para identificar errores o requerimientos faltantes. Son actividades dentro del desarrollo de software.

Los tipos de pruebas de software son:

Unitarias: Se centra en dividir el programa en módulos y mostrar que cada módulo funciona bien y cumple con los requerimientos.

Integración: Es la prueba que combina las partes de la aplicación y determina si estas funcionan correctamente. Este tipo de prueba se puede realizar de dos maneras “Bottom-up Integration Testing” y “Top-down integration testing”.

Sistema: Este tipo prueba al sistema como un conjunto. Una vez que se integra todo el sistema, se verifica que el sistema cumpla con las normas de calidad. Se llevan más pruebas especializadas.

Regresión: Cuando se hace un cambio en algún módulo del sistema, es probable que se hayan afectado los otros módulos del sistema. Este tipo de prueba se enfoca en verificar que un cambio no afecte al sistema por completo.

Aceptación: Se evalúa que el equipo cumpla con las especificaciones deseadas y satisface los requerimientos planteados por el cliente.  Con diferentes escenarios planteados se probará el programa.

Alpha: Es la primera etapa de la prueba, se combinan las pruebas unitarias, de integración y de sistema en este tipo. Durante la implementación de esta se revisan los siguientes aspectos:

  • Spelling Mistakes
  • Broken Links
  • Cloudy Directions
  • El sistema se probará en máquinas con la especificación más baja para probar los tiempos de ejecución

Betha: Esta prueba se pone en ejecución después de haber probado la Alpha, en esta una muestra de la audiencia pone a prueba la aplicación. También son conocidas como pruebas pre-lanzamiento. Es para que el sistema

Continue reading "Software Testing"

SW Verification and Validation



In one of our previous post we have talked about software testing. There are many options totest your software, but now we have another topic related to discuss. Is software validation the same as software verification?

In  words:

Validation can be described as verifying that you are building what the customer wants. Software validation is the process of ensuring that your application meets functional and non-functional requirements before coding and during development.

Verification if verifying that the product is being assembled correctly, after you have determined what you are supposed to build.

Keep in mind both concepts, the difference between validation and verification is functional. Validations is to cover all of the “requirements” of the user, and verification means “functionality” in all of thse parts.

For example, we have shown that software testing is performed in different layers, from Unit testing to Exploratory testing. In verification you guarantee that all of this parts really works appropiately before the project is “built”.

In you can find a really complete guide ofsoftware validation, actually the name of the document is:

General Principles of Software Validation; Final Guidance for Industry and FDA Staff

Some of the topics covered are:

I personally read the 4.7, which I saw asone of the most important ones. Let me give you a little explanation of my thouhgs:

Think on what an application tells you there is an update available (yes an update instead on an upgrade), there are a lot of steps before developers launch this

Continue reading "SW Verification and Validation"

SW Maintenance



Sinse we have discussed different topics about software we haven´t had the chance to discuss about Software Maintenance.

We mention this in SDLC, did you remember this?

Maintenance is an important part of the Software process. This refers to keep tracking all the upgrades, updates and changes a code or software experiments and keep developing on them. We have also mentioned how Open Source Software makes life of some developers easier. And maintenance is agood example of and advantage of Open Source as we comented before.

But, this maintenance has a cost, the most elevated of the SDLC process.

Original at:


The maintenance can be done due to the need of upgrade, the chance to make more reliable or efficient the product or for bugs appeared.

IEEE provides a framework for sequential maintenance process activities. It can be used in iterative manner and can be extended so that customized items and processes can be included.

Original at:
  • Identification  –  identification of requirement of modification or maintenance.
  • Analysis – The modification is analyzed for its impact on the system including safety and security implications.
  • Design – New modules, which need to be replaced or modified, are designed against requirement specifications set in the previous stage.
  • Implementation – The new modules are coded with the help of structured design created in the design step.Every programmer is expected to do unit testing in parallel.
  • System Testing – Integration testing is done among newly created modules. Integration testing is also carried out between new modules and the system. Finally the system is tested as a whole, following regressive testing procedures.
  • Acceptance Testing – After testing the system internally, it is tested for acceptance with the help of users.
  • Delivery – After acceptance test, the system is
    Continue reading "SW Maintenance"

Software Testing tools

This will be a very very short post about tools related with Software testing.

The various types of test tools according to the test process activities are:

  1. Tool support for management of testing and tests:
  • Test management tools
  • Requirements management tools
  • Incident management tools
  • Configuration management tools
  1. Tool support for static testing:
  • Review process support tools
  • Static analysis tools (D)
  • Modelling tools (D)
  1. Tool support for test specification:
  • Test design tools
  • Test data preparation tools
  1. Tool support for test execution and logging:
  • Test execution tools
  • Test harness/ Unit test framework tools (D)
  • Test comparators
  • Coverage measurement tools (D)
  • Security tools
  1. Tools support for performance and monitoring:
  • Dynamic analysis tools (D)
  • Performance testing, Load testing and stress-testing tools
  • Monitoring tools

As we saw on one of our previous post, software testing is fundamental to know our projects have achieved its goals, so lets keep our hands worknig with the following tools:

For Java:

We know Oriented Object programming is one of the principal paradigms today to program, but here we have a tool for make your code in Java fail: JUnit.

JUnit is a unit testing framework for Java programming language. JUnit has been important in the development of test-driven development, and is one of a family of unit testing frameworks collectively known as xUnit, that originated with JUnit.

Features of JUnit

  • JUnit is an open source framework, which is used for writing and running tests.
  • Provides annotations to identify test methods.
  • Provides assertions for testing expected results.
  • Provides test runners for running tests.
  • JUnit tests allow you to write codes faster, which increases quality.
  • JUnit is elegantly simple. It is less complex and takes less time.
  • JUnit tests can be run automatically and they check their own results and provide immediate feedback. There’s no need to manually comb through a
    Continue reading "Software Testing tools"

Software testing




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.



First let´s see the different test steps according

Retrived from:

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.

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.




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

Continue reading "Software testing"