Innovation in Agile Testing
When global downturns hit, there is certain inevitability to their impact on information technology and Finance Sectors. Customers become more reluctant in giving software business. Some customers are withdrawing their long term projects and some customers use the opportunities in quoting low price. Many projects are dragged much longer than expected and cost more than planned.
So, companies start to explore how “Agile with different flavors” can help their Enterprises more reliably deliver software quickly and iteratively. The roles and responsibilities of Test Managers/Test Architects becomes more important in implementing Agile Projects. Innovations are increasingly being fueled by the needs of the testing society at large.
The Challenges in Agile Testing
Agile Testers face lot of challenges when they are working with Agile development team. A tester should be able to apply Root-Cause Analysis when finding severe bugs so that they are unlikely to reoccur. While Agile has different flavors, Scrum is one process for implementing Agile. Some of the challenging scrum rules to be followed by every individual are
- Obtain Number of Hours Commitment Up Front
- Gather Requirements / Estimates Up Front
- Entering the actual hours and estimated hours daily.
- Daily Builds
- Keep the Daily Scrum meetings short
- Code Inspections are Paramount
So, in order to meet the above challenges, an agile tester needs to be innovative with the tools that they have. A great idea happens when what you have (tangible and intangible) meets the world’s deepest hunger.
How Testers Can be More Innovative in the Age of Agile Testing?
Here are Important Keys to Innovation:
1. Creative
A good Agile Tester needs to be extremely creative when trying to cope up with speed of development/release. For a tester, being creative is more important than being critical.
2. Talented
He must be highly talented and strives for more learning and innovating new ideas. Talented Testers are never satisfied with what they have achieved and always strives to find unimaginable bugs of high value and priority.
3. Fearless
An Agile Tester should not be afraid to look at a developer’s code and if need be, hopefully in extreme cases, go in and correct it.
4. Visionary
He must have a comprehensive vision, which includes client’s expectations and delivery of the good product.
5. Empowered
He must be empowered to work in Pairs. He will be involved in Pair Programming to bring shorter scripts, better designs and finding more bugs.
6. Passionate
Passionate Testers always have something unique to contribute that may be in terms of their innovative ideas, the way they carry day-to-day work, their outputs and improve things around them tirelessly.
7. Multiple Disciplines
Agile Tester must have multiple skills like, Manual, Functional, Performance testing skills and soft skills like Leadership skills, Communication skills, EI, etc. so that agile testing will become a cake walk.
Source: http://www.softwaretestinghelp.com
Project Management - Using Agile Methodology
Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle. The Agile Manifesto introduced the term in 2001. Agile management methods can also be applied in development projects other than software development.
Source: PicNetTV
Security Test Case Study
The Client
Our Customer is a Online News Community http://www.newsfromfriends.com . User can get their personal newspaper and share thoughts and address them to special persons
The Requirements
Customer wanted to make sure their users privacy and content are secured enough, few of their security test requirements are below:
- SQL injection vulnerability
- Cross site scripting
- Business workflow securities
- Authentication security
- Brute force authentication breach testing
- Firewall security testing
- Web server files security
The Solution
- Identification of Application Input e.g. Files, environment variables, parameters in URL, through form submission etc., config files and registry
- Identification Application Output e.g. Files, Environmental Variables, Network Traffic, The Windows Registry, Console/Form, Database Source
- Logical tests Authentication, login, Email confirmation, business work flow securities, data encryption etc.
The Technology
- PHP
- Linux
- Apache
Contribution
- Breach finding using cross site scripting and SQL injection
- Breach finding using Brute force authentication
- Link injection, other user’s profile access breach and their content as well
- Hidden folders and direct files access from web server
- Email security and Data encryption security
Performance Test Case Study
The Client
Our Customer is a Internet marketing company exclusively for the travel industry providing online hospitality marketing and consulting service for worldwide hotels, resorts and travel clients.
The Requirements
- Scalability: Platform must be able to support a very high number of concurrent users.
- Efficiency: Customer expectation includes the highly efficient application with minimal page navigation response time.
- Reliability: Platform must scale rapidly to meet the business goals of attracting a larger user base and supporting multiple formats
- Fail Over: Application should be able to behave functionally correct under high load and should have the Fail Over control
The Solution
- Performance testing on HTTP, HTTPS protocols
- Performance Tests on UI, AJAX etc
- Identify Performance bottlenecks and suggest measures to overcomes them
- Performance tests based on number concurrent users
- Monitoring the server parameters like CPU usage, threads count, connections etc.
- Profiling the application through Dot Trace and SQL profiler
The Technology
- Microsoft .NET
- AJAX
- SQL Server
- IIS Server
- Kapow Data Mining
Contribution
- Response time for actions covered under test.
- Server stats analysis and suggesting bottlenecks:
- Bottleneck due to resource usage of Kapow which is running on the same web server.
- Suggestion for the optimum threads count.
- Capturing the time consuming Stored Procs.
Bug Life Cycle - Quality Testing
Bug life cycles are similar to software development life cycles. Bug life cycle begins when a programmer, software developer, or architect makes a mistake, creates an unintentional software defect, i.e. bug, and ends when the bug is fixed, and the bug is no longer in existence.
The bug life cycle can be summarized as follows:
- A Tester finds a bug. Status --> Open
- Test lead review the bug and authoriza the bug. Stats --> Open
- Development team lead review the defect. Stats --> Open
- The defect can be authorized or unauthorized by the development team. (Here the status of the defect / bug will be Open (For Authorized Defects) and Reject (For Unauthorized Defects).
- Now, the authorized bugs will get fixed or deferred by the development team. Status of the fixed bugs will be Fixed and Status will be Deferred for the bugs which got Deferred.
- The Fixed bugs will be again re-tested by the testing team. Here based on the Closure of the Bug, the status will be made as Closed or if the bug still remains, it will be re-raised and status will be Re-opened.
Source: http://www.softwaretestingvideos.com
Software Testing FAQ's
What is Software Testing? A basic to start with:
Software testing is the process used to help identify the correctness, completeness, security, and quality of developed computer software.
Testing is a process of technical investigation, performed on behalf of stakeholders, that is intended to reveal quality-related information about the product with respect to the context in which it is intended to operate.
This includes, but is not limited to, the process of executing a program or application with the intent of finding errors. Quality is not an absolute; it is value to some person. With that in mind, testing can never completely establish the correctness of arbitrary computer software; testing furnishes a criticism or comparison that compares the state and behaviour of the product against a specification.
An important point is that software testing should be distinguished from the separate discipline of software quality assurance, which encompasses all business process areas, not just testing.
There are many approaches to software testing, but effective testing of complex products is essentially a process of investigation, not merely a matter of creating and following routine procedure. One definition of testing is “the process of questioning a product in order to evaluate it”, where the “questions” are operations the tester attempts to execute with the product, and the product answers with its behavior in reaction to the probing of the tester.
Although most of the intellectual processes of testing are nearly identical to that of review or inspection, the word testing is connoted to mean the dynamic analysis of the product; putting the product through its paces. The quality of the application can, and normally does, vary widely from system to system but some of the common quality attributes include capability, reliability, efficiency, portability, maintainability, compatibility and usability.
A good test is sometimes described as one which reveals an error; however, more recent thinking suggests that a good test is one which reveals information of interest to someone who matters within the project community.
Test Driven Development
Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces code to pass that test and finally refactors the new code to acceptable standards.
Test-driven development requires developers to create automated unit tests that define code requirements (immediately) before writing the code itself. The tests contain assertions that are either true or false. Passing the tests confirms correct behavior as developers evolve and refactor the code. Developers often use testing frameworks, such as xUnit, to create and automatically run sets of test cases.
Test-driven development cycle
- Add a test
- Run all tests and see if the new one fails
- Write some code
- Run the automated tests and see them succeed
- Refactor code
- Repeat
Opensource Performance Testing Automation Frameworks
Development frameworks have been around for years, as a means for standardization and acceleration of the development process. The same reasoning applies to testing frameworks. Yet, in the past, many enterprises questioned its cost effectiveness as they questioned the need for test automation at all.
While test automation of functional testing can be substituted by manual testing but load testing is always done with automated tools or not done at all.
3PG have defined the load testing architecture and developed framework which can make the load testing much easier and cost effective.
Load testing architecture divides the system into three parts:
- Client GUI application, usually implemented as a browser application using static HTML or a rich internet application such as Ajax applications.
- Internet protocol available to access the system under test, usually HTTP/HTTPS but may also include multimedia protocols such as RTP/RTSP or “Web 2.0” protocols such as SOAP/XML or RSS over HTTP.
- System under test (SUT) which is the subject of our load testing effort.
Performance testing Framework enables repeatedly building new load test agendas without recording a new script, eliminating the additional work that may have been caused by changes to the UI. The Load Testing Framework avoids dependence on the UI by directly calling the pre-defined system APIs, like any other callable object within your JavaScript code. The agenda accesses an external resource to get the parameters for each of the calls.
3PG (360logica Performance Group) works dedicatedly on the Performance testing of versatile application on various industry standard tools.
Commercial tools: LoadRunner, WebLoad, Rational
Open Source tools: OpenSTA, JMeter, Grinder
OpenSTA: It has the capability of performing scripted HTTP and HTTPS heavy load tests with performance measurements from Win32 platforms and much more other features.
JMeter: This is used to test performance both on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Databases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, network or object to test its strength or to analyze overall performance under different load types.
Grinder: It is a JavaTM load testing framework that makes it easy to run a distributed test using many load injector machines.
3PG have successfully designed framework on the open source tools, are customized as per the client’s requirement and fast analysis is done.
These help to achieve the test execution in more reduced time and in very cost effective manner.
Performance Testing - 360logica.com
360logica follows robust Performance methodology to cater to client requirement and perform high quality test focusing on Performance Acceptance Criteria and figuring out the bottlenecks in the system.
Performance Methodology we follow:
- Identify the Test Environment
Identify the physical test environment and the production environment as well as the tools and resources available to the test team. The physical environment includes hardware, software, and network configurations. - Identify Performance Acceptance Criteria
Identify the response time, throughput, and resource utilization goals and constraints. In general, response time is a user concern, throughput is a business concern, and resource utilization is a system concern. - Plan and Design Tests
Identify key scenarios, determine variability among representative users and how to simulate that variability, define test data, and establish metrics to be collected. - Configure the Test Environment
Prepare the test environment, tools, and resources necessary to execute each strategy as features and components become available for test. - Implement the Test Design
Develop the performance tests in accordance with the test design. - Execute the Test
Run and monitor your tests. Validate the tests, test data, and results collection. Execute validated tests for analysis while monitoring the test and the test environment. - Analyze Results, Report, and Retest
Consolidate and share results data. Analyze the data both individually and as a cross-functional team. Reprioritize the remaining tests and re-execute them as needed.
Performance testing requires a different mind set and skill set to that of functional testing. Understanding customer requirements and expectations, as well as user activities and behaviors, is key to designing suitable tests.
Ensure tests represent realistic usage of the application. Test environments must be carefully controlled to prevent unauthorized modifications which might falsify test results.
Automated test tools coupled with fast backup and restore mechanisms are essential due to the need to repeat tests many times. System bottlenecks can rapidly become very technical in nature and consume considerable resource and effort to diagnose. Resolution may require considerable re-work and even re-design of your product.
Even after performing a significant number of tests and gathering a considerable amount of data and test results there is still a possibility that the wrong conclusions may be drawn by developers inexperienced in performance testing.
Games Testing Offerings - 360logica
Gaming industry is a vast industry producing million dollar games every year, and testing plays crucial role for success of any game. 360logica provides dedicated QA lab for games testing with required infrastructure.
Our testing is done in a controlled environment on a closed network that allows us to monitor packet exchanges between the host and remote players. This ensures complete security & flexibility to your testing needs besides delivering speed. Reasonable cost effective solution is our USP.
We have extensive testing experience with some of the top publishers and game developers and have an extensive experience in providing outsourcing games testing services for PC, XBOX 360, Nintendo Wii, Playstation (PS2 & PS3), Nintendo DSi, iPhone, Online games and casual games. Our experience at QA/testing high quality video game art content at reasonable testing costs combined with our tight security and privacy measures.
Excellent dedicated people who solve the puzzles and creating excellent end to end scenarios for games. And working in one secured LAN, no external drive, phone, camera, or anything allowed in lab.
Our games testing solution offerings:
- Games for PC
- X-Box 360
- Nintendo Wii
- Playstation (PS2 & PS3)
- Mobile games testing
- Flash based games testing
Value Propositions:
- Reduce your cost more than 70%
- No pressure on your employees
- Third eye look on your software



























































