GURUDAY | Aprende a crear una matriz de prueba de software
What is Software Testing?
Understanding Software Testing
- Software testing is a process to verify that a product or application performs as expected based on defined requirements.
- In agile methodologies, this involves creating a product backlog, which lists the requirements that must be met for the project.
Importance of Detailed Requirements
- If requirements are not well-defined, there is significant risk during development; clients may add features later that were not initially discussed.
- This can lead to misunderstandings and strained relationships between developers and clients if expectations are not clearly communicated.
Defining Requirements Clearly
- It’s crucial to break down requirements into specific items (e.g., login, product search), ensuring clarity before estimating time and costs.
- A detailed backlog helps avoid miscommunication and ensures all parties understand project scope.
Agile Methodologies in Development
Iterative Development Process
- Agile allows for working in iterations or sprints (typically 2-4 weeks), where tasks are defined and costs are fixed per sprint.
- This approach provides flexibility as it accommodates changes in client needs over time.
Minimum Viable Product (MVP)
- Developing an MVP allows teams to launch with essential features first, deferring additional ideas for future phases.
Benefits of Software Testing
Error Prevention and Cost Reduction
- Effective testing prevents errors before production, reducing overall development costs while improving system performance.
Types of Software Testing
Acceptance Testing
- Acceptance testing verifies that the system meets user expectations and functions correctly from their perspective.
Integration Testing
- Integration testing checks whether different components of the software work together seamlessly after being combined.
Unit Testing
- Unit tests focus on individual components to ensure they function correctly in isolation; typically performed by developers using specific programming tools like JUnit or PHPUnit.
Performance and Regression Testing
Performance Testing Types
- Performance tests evaluate how well a system handles load through stress tests, measuring limits such as user capacity and data handling capabilities.
Regression Testing
Understanding Usability and Testing Practices
Importance of Usability in Software
- Usability measures how easy and intuitive a system is to use, leading to the emergence of UX/UI as a specialized field focusing on user experience and interface design.
Best Practices for Software Testing
- Continuous testing is essential; one should not assume that testing once suffices. Regular re-testing ensures ongoing quality.
- Virtualization helps create environments quickly, especially when using container technologies like Docker, which saves time compared to traditional installations.
- Tracking defects is crucial; tools like Jira are widely used for managing defect tracking and requirements from creation to resolution.
- Metrics and reports generated by tools such as Jira or ServiceNow help in assessing the effectiveness of tests and overall project health.
Organizing Testing Efforts
- A structured test plan is necessary, similar to a work plan, detailing modules or functionalities to verify against requirements or product backlogs.
- Not all tests need execution every time; prioritize based on changes made. For instance, minor updates may only require specific usability tests rather than full regression testing.
Case Study: Black Bout Company
- The company focuses on technology-driven solutions for global donations, continuously monitoring vulnerabilities in their systems with automated processes.
- They utilize smoke testing—quick checks that ensure basic functionality without extensive manual intervention—especially after updates.
Resource Allocation in Testing
- Determine whether manual testers or developers are needed based on the complexity of tasks. Automation can be achieved using tools like Selenium with languages such as Java, Python, or C#.
Introduction to Testing and Training Resources
Overview of Available Workshops
- The speaker introduces a library of online workshops available upon course enrollment, emphasizing the accessibility of over 50 workshops covering various topics.
- Workshops are typically 2 hours long, teaching practical skills such as using Jira, Git, GitHub, and basic database design.
- These workshops serve as complementary resources to formal courses in testing or programming languages like Java or .NET.
Importance of Traceability in Testing
- The speaker highlights a common issue where only 60-70% of initial requirements are tested due to lost traceability between product backlog and test cases.
- Traceability is defined as the ability to track requirements through to testing; failures often lead to blame among team members rather than addressing systemic issues.
- A well-defined test matrix is crucial for mapping requirements against test cases, which will be provided later in the presentation.
Challenges in Establishing a Testing Culture
Cultural Shifts Required for Effective Testing
- The speaker discusses the challenges faced when establishing a new testing department without an existing culture of testing within an organization.
- Historically, manual testing was often rushed with testers receiving builds just before deadlines, leading to poor quality assurance practices.
Importance of Recognizing Testing's Value
- There is a need for organizations to recognize that the testing department holds equal importance as other departments like development and project management.
Practical Application: Creating Test Cases
Transition from Theory to Practice
- The session shifts focus towards practical exercises involving creating test cases and understanding software testing matrices.
Real-world Context: WhatsApp Integration
- The discussion includes how modern communication tools like WhatsApp have become integral in daily interactions compared to traditional email usage.
Understanding APIs in Testing
Introduction to API Testing
- An introduction is given about API (Application Programming Interface), explaining its significance and how it differs from graphical interfaces.
API Testing and Programming Languages Overview
Understanding API Formats
- APIs typically return data in JSON format, which is agile and easy to read. Other formats like XML are also possible but less common.
- It's crucial to test not only your API but also your website and mobile applications to ensure functionality across platforms.
Automation of Tests
- Automated testing for APIs and applications is feasible; however, it requires a well-defined test matrix outlining various scenarios.
- Tools like Appium can be used for mobile automation testing, similar to how Selenium is used for web applications.
Choosing the Right Programming Language
- Python is trending in data science roles due to its mathematical capabilities, making it ideal for aspiring data scientists or engineers.
- Java offers quicker entry into the job market with competitive salaries, while Python may lead to specialized roles that could offer higher pay over time.
Job Market Insights
- The demand for programming skills has globalized; companies are seeking talent from Mexico and other countries for remote projects.
- JavaScript stands out as a versatile language applicable in web development, backend services, and mobile apps through frameworks like React Native.
Framework Comparisons
- .NET has been slow to adapt due to its commercial history but is now open-source with .NET Core aiming to compete with Java.
- PHP remains relevant despite being viewed unfavorably by some; it's effective for small-to-medium business websites but may struggle with larger-scale applications.
PHP's Evolution
- PHP has matured significantly with frameworks like Laravel that adhere more closely to modern development standards such as MVC (Model View Controller).
Integrating WhatsApp via API
- WhatsApp integration can be achieved through platforms like WhatsApp Business API, allowing businesses to send messages efficiently at scale.
Understanding APIs and Their Applications
Introduction to APIs
- The concept of API (Application Programming Interface) is introduced as a means to automate operations, moving away from manual processes like copying and pasting.
- An example is provided using Walmart's online shopping experience, where customers receive automated updates via WhatsApp after making a purchase.
Official vs. Unofficial APIs
- Discussion on the differences between official and unofficial APIs, highlighting that official APIs have stricter requirements and policies set by platforms like Facebook.
- If Facebook detects misuse (e.g., sending the same image to multiple users), it may limit messaging capabilities for 24 hours.
Limitations of Official APIs
- Users must unlink their devices when using an official API, which can be a significant drawback compared to unofficial options that allow continued device use.
- The speaker mentions "What mei," which offers both official and unofficial API options for integration.
Tools for Working with APIs
- Postman is introduced as a valuable tool for making requests to services when working with APIs, emphasizing its importance in understanding API functionality.
- The speaker suggests there are numerous sports-related APIs available, such as those providing real-time football match scores.
Popular Examples of APIs
- Google Maps is highlighted as one of the most commonly used APIs in mobile applications, allowing developers access through tokens or keys.
- Google Maps provides a limited number of free requests daily; exceeding this limit incurs costs based on usage.
Practical Demonstration Using What Mei
- A demonstration using Postman shows various services available through the What mei API, including sending files and images.
- The speaker explains how to view linked WhatsApp screens through the non-official What mei API while discussing its automation capabilities.
Dashboard Management and WhatsApp API Usage
Managing Tokens and Services
- The dashboard allows users to manage their WhatsApp token, which is linked to their phone number. This token facilitates access to various services.
- Users can view technical details of the API calls made through the dashboard, including options for logging out or disconnecting numbers.
Sending Messages via API
- The ability to send messages to specific contacts is highlighted, emphasizing its utility in automated responses when purchases are made on a website.
- A practical example is provided where a message about an event postponement can be sent en masse using the API, showcasing its efficiency.
Risks of Using Non-official APIs
- There are risks associated with sending messages through unofficial APIs; if reported as spam by multiple users, there’s a chance of being blocked from using WhatsApp services.
- In contrast, using the official Meta API reduces the risk of being blocked but may impose limits on daily message sending.
Bulk Messaging Capabilities
- The discussion transitions into bulk messaging capabilities, specifically how to notify multiple contacts about changes (e.g., event cancellations).
- Users can upload CSV files containing contact information and personalized messages for mass communication.
Campaign Management and Status Tracking
- An example campaign setup is demonstrated where personalized greetings and payment deadlines are included in messages sent out.
- The system provides real-time updates on message delivery status, indicating successful sends versus failures.
Creating a Test Case Template
Structuring Test Cases
- A proposed base template for test cases is introduced, emphasizing customization to fit individual business needs.
- It is recommended to group test cases by functional modules (e.g., product catalog, promotions, shopping cart) to avoid overly large documents.
Essential Components of a Test Case
- Each test case should include an identifier (alphanumeric), a title, and a concise description of its purpose.
- Dependencies between test cases must be noted; for instance, one case may require the successful execution of another (e.g., login before accessing other functionalities).
Initialization and Execution Steps
- Initial conditions required for executing a test case should be specified (e.g., having WhatsApp installed for phone number linking).
- Detailed steps for each test case need to be outlined clearly, indicating who is responsible for the functionality being tested.
Practical Example and Tools
- A demonstration of sending files through an application highlights practical testing scenarios. The importance of using URLs for images in tests is discussed.
Using Postman for Testing
- Postman is introduced as a tool for testing APIs efficiently. The speaker prefers the desktop version due to speed advantages over web applications.
- Scenarios can be created in Postman to run multiple tests based on existing requests, enhancing testing efficiency.
Documenting Requirements and Dependencies
Matriz de Trazabilidad y Pruebas de Software
Importancia de la Matriz de Trazabilidad
- La matriz de trazabilidad permite identificar múltiples casos de prueba para un mismo requerimiento, facilitando el seguimiento en sistemas de control de versiones como Git.
- Al listar todos los requerimientos desde el inicio, se asegura que no se omita ninguna funcionalidad durante las pruebas, lo cual es crucial para la calidad del software.
Ejecución y Ambientes de Prueba
- Es esencial documentar en qué ambiente se realizaron las pruebas (desarrollo, staging, producción), ya que esto afecta la validez y aplicabilidad de los resultados.
- Aunque no todas las empresas pueden tener múltiples ambientes activos, contar con al menos uno para desarrollo y otro para preproducción es suficiente para garantizar una transición adecuada a producción.
Mejores Prácticas en Pruebas
- Se recomienda que los ambientes sean gemelos; es decir, que el entorno de desarrollo sea idéntico al ambiente donde se realizan las pruebas previas a producción.
- La matriz debe ser manejada como un archivo separado del documento principal de casos de prueba para evitar complicaciones en su mantenimiento y lectura.
Casos de Éxito y Errores
- Es importante probar tanto casos exitosos como errores. Por ejemplo, verificar cómo responde el sistema ante una URL inválida puede revelar áreas potenciales de mejora.
- Si un error ocurre debido a una URL incorrecta, este debe ser reportado al soporte correspondiente del API externo involucrado.
Conclusiones sobre Calidad del Software