Psychology of Testing

A few attributes of a good tester include curiosity, professional pessimism, a critical eye, attention to detail and good communication skills. You would need to try to think of all possibilities and question everything. Another thing to remember is that if you are in doubt of something being a bug, then log it as a bug. It is important to focus on quality!

 

Some important skills that a tester should have includes reading, writing, product knowledge and testing knowledge. Reading is important because as a tester, you spend a lot of time reading requirements, emails and reviewing test cases, while writing is important for creating test cases and other testing documentation.

It is important for the tester to understand the business area that they are in, projects that they are working on and to have an understanding of requirements and documentation so that they will know what and how to test.

Testing skills are important and should be seen professionally and as a specific set of skills which include scripting, test design, exploring and attacking the system, creation and use of testing tools, building performance models, writing good bug reports, and more.

Technological skills are also important, for example, having a basic understanding of programming, operating systems or HTML. I am new to testing and I am currently learning the basics of HTML and CSS. I am also very interested in learning Python or Javascript in the next six months.

It would also benefit you to learn a programming language if you are getting into Automation testing as you would be able to write more complex test scripts.

 

There are different levels of tester independence that range from the lowest level being: testing by the test item’s author to the highest level being: testing by a person or people from a different organisation or company.

Just like testing and developing are different activities, the mindsets that are required are different too. Developers can test their own code, but it is more effective for a tester to do it because they are more objective and do not have the authors bias. Developers tend to rather search for confirmation that what they built works which could lead to not finding as many defects, this is why it is important to have independent testers.

Testing can be seen as destructive or to be criticising when finding a failure, this is why it is very important for testers to communicate in a positive and neutral manner. It is important to work as a team and to remember that the testers are there to help achieve the best possible outcome. The key goal is quality and the entire team needs to work together to achieve that goal.

 

Agile Part 2

In my previous post, I wrote about Agile and shared notes that I made while reading a book called “Agile Testing Foundations, An ISTQB Foundation Level Agile Tester Guide”. I’ve decided to go more in depth and make a part 2 Agile post. There may even be a part 3 and 4 in the next few weeks!

Here is a bit of a recap from last weeks post: “Agile software development refers to a group of software development methodologies based on iterative development. It benefits from early and frequent feedback from customers which will avoid requirements misunderstandings, make features available earlier and will also resolve problems earlier. It improves quality and customer satisfaction. Teams do planning and releasing in small, frequent increments and can respond quickly to change.”

Today, i decided to write more about one of the 3 Agile methodologies: Scrum.

Scrum is a framework for managing projects. It is iterative and increment which means that a project is broken into a large number of iterations. An iteration is a complete development loop resulting in a release of an executable product, a subset of the final product under development, which grows from iteration to iteration to become the final product.

The Scrum Team consists of a Product Owner, the Development Team, and a Scrum Master. The Product Owner is responsible for defining the work that needs to be completed and the Scrum Master makes sure that the team keeps to the values and practices of scrum, sort of like a coach. 

Firstly, the product backlog is created, this includes a list of everything that could be done over the lifetime of the project.

During the planning phase, the team select a small piece of that backlog and create a sprint backlog. This is the list of everything that needs to be completed in the sprint. Sprints are usually about two to four weeks long.

The Development Team works on the tasks that have been chosen in the sprint backlog.

The team meets on a daily basis, this meeting is called a daily scrum. They are about 15 minutes long and are held at the same time every day. A common approach for conducting a daily scrum meeting is for development team members to share with each other what they did the previous day, what they are planning to do today, and any obstacles that they are facing. Daily scrum is also commonly known as a daily stand up meeting.

At the end of the sprint, the work should be ready to be handed over to the customer.

The sprint ends with a review and retrospective. A sprint review is when the team demonstrates the completed functionality at a sprint review meeting. This usually takes place in the form of a demonstration of the new features, but in an informal way. A sprint retrospective is a meeting where the team discusses the sprint that just happened and also determine what could be changed to make the next sprint better and more productive.

As the next sprint begins, the team chooses another chunk of the backlog.

The cycle repeats itself until the product backlog is complete, the budget is depleted or a deadline arrives.

Scrum makes sure that the most important features are included in the final product.

 

 

I read about why teams should choose to use scrum in software development and i found 4 different points:

  1. Helps save time and money
  2. Encourages teamwork
  3. It adapts to the company
  4. It is easy to use

 

A few additional benefits include:

  1. Fast response to changes
  2. Functional tests are frequent in the process
  3. Direct collaboration with the client
  4. Motivation and responsibility of teams

 

Agile

Last week I read a book called “Agile Testing Foundations, An ISTQB Foundation Level Agile Tester Guide” and i decided to take notes about some of the things that i learnt and found interesting while reading. Here is my mini summary:

 

Agile software development refers to a group of software development methodologies based on iterative development. It benefits from early and frequent feedback from customers which will avoid requirements misunderstandings, make features available earlier and will also resolve problems earlier. It improves quality and customer satisfaction. Teams do planning and releasing in small, frequent increments and can respond quickly to change.

 

The four values of the Agile Manifesto:

  1. Individuals and interactions over processes and tools – Agile encourages communication between team members, the development team and the customers.
  2. Working software over comprehensive documentation – The most important deliverable of any software project is the product itself.
  3. Customer collaboration over contract negotiation – If you work closely with the customer, you will have a much better understanding of what they require.
  4. Responding to change over following a plan – Change is inevitable in software. Embrace change!

 

The Agile philosophy is supported through 12 key principles:

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software frequently, at intervals of between a few weeks to a few months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development  team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should   be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10.   Simplicity—the art of maximising the amount of work not done—is essential.
  11.   The best architectures, requirements, and designs emerge from organising teams.
  12.   At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.

 

A whole-team approach is used which means that many roles and specialisations come together in a single team. Everyone on the team is held equally responsible for the quality and success of the project.

 

Agile methodologies: (scrum, kanban and extreme programming)

Scrum:                                                                                                                              

  • A prioritised list called a backlog is created
  • During the planning phase, the team select a small piece of that backlog and create a sprint backlog
  • The team is given a certain amount of time to complete this work, this is called a sprint
  • The team meet on a daily basis for a stand up meeting to assess the progress
  • At the end of a sprint, the work should be ready to hand over to the customer
  • The sprint ends with a review and retrospective
  • The next sprint begins

 

Kanban:

Principles:

  • Visualise the workflow – This can be done by using cards (to do, doing, done)
  • Limit the works in progress – Select the most important and valuable work items
  • Manage flow – The flow of work should be monitored, measured and reported. Create positive change!
  • Make process policies explicit
  • Improve collaboratively – the team can also meet for planning meetings, stand ups, retrospectives, etc. Aim for continuous improvement.

 

Extreme Programming:

  • As reviewing code is a good practice, two people will work together on the review
  • As testing eliminates defects, code will be tested intensively with unit tests before releasing a feature
  • As design is important to ensure that changes in code will not impact other parts, dependencies are minimised
  • Building and integrating will occur several times a day
  • There will be several short development cycles

 

I mainly only knew about Scrum so it was interesting to learn about Kanban and Extreme Programming too.

 

Here are a few more points that i took down:

Project estimating is also important in Agile, they happen at the beginning and end of each sprint. A product backlog is a prioritised list of work for the development team to do. The development team pulls information from the backlog for each sprint.

 

Agile Retrospectives are reviews that are at the end of each sprint to help teams learn how they are doing and find ways to become better.

 

Within Agile teams, user stories are used to define the business requirements. Collections of related user stories are called Epics. An epic is eventually a large user story that can be broken down into many small user stories.

 

Agile tester skills:

  • Being positive and solution-oriented with team members and stakeholders
  • Displaying critical, quality-oriented, sceptical thinking about the product
  • Actively acquiring information from stakeholders (rather than relying entirely on written specifications)
  • Accurately evaluating and reporting test results, test progress and product quality
  • Working effectively to define testable user stories, especially acceptance criteria, with customer representatives and stakeholders
  • Collaborating within the team, and working in pairs with programmers and other team members
  • Responding to change quickly, including changing, adding or improving test cases
  • Planning and organising their own work

 

The environment of an Agile team is technical as the team continually builds upon already developed software components. A tester needs to be more efficient in their testing efforts by implementing automated testing to cover regression testing risks.

“To be technical does not mean that the tester must be a developer, it means that the tester must understand what is going on in the team and also understand development concepts”

 

There are 3 main agile testing methods:

  1. Test Driven Development – the driving force is testing
  2. Acceptance Test Driven Development – it is the acceptance tests that will verify the implemented user story
  3. Behaviour Driven Development – it is the behaviour of the software that the user will experience

In all of these approaches, tests are written before the code is developed.

 

Agile has many advantages. Some of these are that it saves time and money, it reduces documentation, it is flexible and adaptable to changes and it increases quality.