Tag Archives: project

Three Software Testing Books I’d like to read Tweet12

have trimmed out a lot of my Software Testing books. And by trimmed, I mean, dumped or traded in on Amazon. I still have a few left, some because I see real value in them, and others because my hoarding instinct overrides my Zen de-cluttering zeal.

Here are 3 books I’d like to read. But they haven’t been written yet.

Apologies to the author’s and artists associated with the books I’ve based these new books on, but my desire for humorous pastiche overrode any concern that the original creative forces might feel insulted.  I picked on you because of your mythic stature in the Software Testing book world, because of the value that I took from you in my early years, and you met my needs.  

So my first 3 are:

  • The Art of Software Jesting by Ben Fold Wired
  • The Complete Guide to Software Besting by Phil Betzels
  • “I Object!”, Re-oriented Software Testing: A heretical Approach by Bell Diesel

 

The Art of Software Jesting

I think we take software testing too seriously. Or rather, we take ourselves too seriously. The danger being that Software Testing becomes a subject pumped up full of its own self importance, filled with pompous pontification.

e.g. "Exploratory testing must not be used as your main process. You must only use it after you have a stable system and have achieved coverage from your scripted tests."
blah de blah de blah, yeah yeah yeah

I don’t see enough evidence that we take ourselves seriously enough to mock ourselves.

Kings and Queens of olden days of yore took themselves pretty seriously, as did everyone else because their life depended on it. And yet they had a Court Jester to keep them balanced and reduce their hyper inflated sense of self importance.

Humour can help effect change, by laughing at yourself for beliefs with small amounts of evidence.

Lighten up.

Projects are a ridiculous place to shouting matches.

I appreciate many people on projects don’t appear to have a sense of humour, and don’t take it kindly when you try and inject one into the project. But as a weapon to disarm and defuse a situation, it helps.

It helps me not take my approach too seriously. It helps me work with people rather than roles.

Evil Tester was born from a requirement to have a sense of humour and expose the ridiculousness in many of the approaches and attitudes that I had adopted in the past, and other people on projects had adopted.

So if you are really serious about testing – take it seriously enough to laugh at it. And start with yourself, and your processes, don’t start with other peoples.

Have you mocked your testing today?

Complete Guide To Software Besting

I think we all know that “Testing is not Besting the Software produced” but if you want a persona to adopt as you test then periodically adopt the “Bester”.

This thinking hat will let you approach testing in a different way than the other hats you wear.

You have to decide your own limits in your software testing approach, so make sure your limits allow you to exceed the the requirements for ‘goodness’, you want to be better than that.

“I Object!”, Re-oriented Software Testing: A Heretical Approach

I think that we have to think heretically. We have to pursue the path that we consider true, treating all dogma as valid grounds for testing and evaluating alternatives.

Testers need to think and act differently, otherwise why would other Software Professionals want you on their project?

We need to make decisions contextually and based on knowledge, not from dogma.

You need to take responsibility for your test approach – and if that choice requires that you fly in the face of fashion and the masses, then I hope you do it.

The more heretics we have, the more we will advance in unexpected ways.

Other Reading Material?


This is based on the Test Bash talk I gave in March 2012. You can read Marcus Gartner’s summary of it here

Perhaps I’d like you to read “Selenium Simplified”, but maybe I’d rather you just bought it… and a few copies for your friends.

But what about you? What testing books would you like to read, that haven’t been written yet?

Share on facebookShare on twitterShare on emailShare on printMore Sharing Services

source: http://www.eviltester.com/

Did you like this? Share it:

11 Important Database designing rules

Introduction

Before you start reading this article let me confirm that I am not a guru in database designing. The below 11 points which are listed are points which I have learnt via projects, my own experiences and my own reading. I personally think it has helped me a lot when it comes to DB designing. Any criticism welcome.

The reason why I am writing a full blown article is, when developers sit for designing a database they tend to follow the three normal forms like a silver bullet. They tend to think normalization is the only way of designing. Due this mind set they sometimes hit road blocks as the project moves ahead.

In case you are new to normalization, then click and see 3 normal forms in action which explains all three normal forms step by step.

Said and done normalization rules are important guidelines but taking them as a mark on stone is calling for troubles. Below are my own 11 rules which I remember on the top head while doing DB design.

Rule 1:- What is the Nature of the application(OLTP or OLAP)?

When you start your database design the first thing to analyze is what is the natureof theapplication you are designing for, is it Transactional or Analytical. You will find many developers by default applying normalization rules without thinking about the nature of the application and then later getting in to performance and customization issues. As said there are 2 kinds of applications transaction based and analytical based,let’s understand what these types are.

Transactional: - In this kind of application your end user is more interested in CRUD i.e. Creating, reading, updating and deleting records. The official name for such kind of database is called as OLTP.

Analytical: -In these kinds of applications your end user is more interested in Analysis, reporting, forecasting etc. These kinds of databases have less number of inserts and updates. The main intention here is to fetch and analyze data as fast as possible. The official name for such kind of databases is OLAP.

a2.jpg

So in other words if you think insert, updates and deletes are more prominent then go for normalized table design or else create a flat denormalized database structure.

Below is a simple diagram which shows how the names and address in the left hand side is a simple normalized table and by applying denormalized structure how we have created a flat table structure.

a3.jpg

Rule 2:- Break your data in to logical pieces, make life simpler

This rule is actually the 1st rule from 1st normal formal. One of the signs of violation of this rule is if your queries are using too many string parsing functions like substring, charindexetc , probably this rule needs to be applied.

For instance you can see the below table which has student names , if you ever want to query student name who is having "Koirala" and not "Harisingh" , you can imagine what kind of query you can end up with.

So the better approach would be to break this field in to further logical pieces so that we can write clean and optimal queries.

a4.jpg

Rule 3:- Do not get overdosed with rule 2

Developers are cute creatures. If you tell them this is the way, they keep doing it; well they overdo it leading to unwanted consequences. This also applies to rule 2 which we just talked above. When you think about decomposing, give a pause and ask yourself is it needed. As said the decomposition should be logical.

For instance you can see the phone number field; it’s rare that you will operate on ISD codes of phone number separately(Until your application demands it). So it would be wise decision to just leave it as it can lead to more complications.

a5.jpg

Rule 4:- Treat duplicate non-uniform data as your biggest enemy

Focus and refactor duplicate data. My personal worry about duplicate data is not that it takes hard disk space, but the confusion it creates.

For instance in the below diagram you can see "5th Standard" and "Fifth standard" means the same. Now you can say due to bad data entry or poor validation the data has come in to your system. Now if you ever want toderive a report they would show them as different entities which is very confusing from end user point of view.

a6.jpg

One of the solutions would be to move the data in to a different master table altogether and refer then via foreign keys. You can see in the below figure how we have created a new master table called as "Standards" and linked the same using a simple foreign key.

a7.jpg

Rule 5:- Watch for data separated by separators.

The second rule of 1st normal form says avoid repeating groups. One of the examples of repeating groups is explained in the below diagram. If you see the syllabus field closely, in one field we have too much data stuffed.These kinds of fields are termed as "Repeating groups". If we have to manipulate this data, the query would be complex and also I doubt performance of the queries.

a8.jpg

These kinds of columns which have data stuffed with separator’s need special attention and a better approach would be to move that field to a different table and link the same with keys for better management.

aa9.jpg

So now let’s apply the second rule of 1st normal form "Avoid repeating groups". You can see in the above figure I have created a separate syllabus table and then made a many-to-many relationship with the subject table.

With this approach the syllabus field in the main table is no more repeating and having data separators.

Rule 6:- Watch for partial dependencies.

aa10.jpg

Watch for fields which are depending partially on primary keys. For instance in the above table we can see primary key is created on roll number and standard. Now watch the syllabus field closely. Syllabus field is associated with a standard and not with a student directly (roll number).

Syllabus is associated with the standard in which the student is studying and not directly with the student. So if tomorrow we want to update syllabus we have to update for each student which is pain staking and not logical. It makes more sense to move these fields out and associate them with the standard table.

You can see how we have move the syllabus field and attached the same to standards table.

This rule is nothing but second normal form "All keys should depend on the full primary key and not partially".

Rule 7:- Choose derived columns preciously

a11.jpg

If you are working on OLTP applications must be getting rid of derive columns would be good thought, until there is some pressing reason of performance. In case of OLAP where we do lot of summations, calculations these kinds of fields are necessary to gain performance.

In the above figure you can see how average field is dependent on marks and subject. This is also one of form of redundancy. So for such kind of fields which are derived from other fields give a thought are they really necessary.

This rule is also termed as 3rd normal form "No columns should depend on other non-primary key columns". My personal thought is do not apply this rule blindly see the situation; it’s not that redundant data is always bad. If the redundant data is calculative data , see the situation and then decide do you want to implement the third normal form.

Rule 8:- Do not be hard on avoidingredundancy, if performance is the key

a12.jpg

Do not make it a strict rule that you will always avoid redundancy. If there is a pressing need of performance think about de-normalization. In normalization you need to make joins with many table and in denormalization the joins reduces and thus increasing performance.

Rule 9:- Multidimensional data is a different beast altogether

OLAP projects mostly deal with multidimensional data. For instance you can see the below figure, you would like to get sales as per country, customer and date. In simple words you are looking at sales figure which have 3 intersections of dimension data.

a13.jpg

For such kind of situations a dimension and fact design is a better approach. In simple words you can create a simple central sales fact table which has the sales amount field and he makes a connection with all dimension tables using a foreign key relationship.

a14.jpg

a15.jpg

Rule 10:- Centralize name value table design

Many times I have come across name value tables. Name and value tables means it has key and some data associated with the key. For instance in the below figure you can see we have currency table and country table. If you watch the data closely they actually only have Key and value.

a16.jpg

For such kind of table creating one central table and differentiating the data by using a type field makes more sense.

Rule 11:- For unlimited hierarchical data self-reference PK and FK

Many times we come across data with unlimited parent child hierarchy. For instance consider a Multi-level marketing scenario where one sales person can have multiple sales people below them. For such kind of scenarios using a self-referencing primary key and foreign key will help to achieve the same.

a17.jpg

This article is not meant to say that do not follow normal forms , but do not follow them blindly , look at your project nature and type of data you are dealing with.

a18.jpg

source:

http://www.c-sharpcorner.com/UploadFile/shivprasadk/11-important-database-designing-rules/#Rule6:-Watchforpartialdependencies.

Did you like this? Share it:

The next generation software testing

In today’s IT World finding smarter ways to test is a continuous goal for many software testers, whether it is implementation of agile testing, improved test design techniques, exploratory testing. This event explores the most effective ways of scaling “smarter testing” to benefit the whole team and the organisation.

Benefits of Attending
- Hear best practices and case studies
- Learn from experts who are passionate about software testing
- Network with your peers
- Find out about new software testing tools and services
- Take part in interactive panels and get information fit for your purposes
- Leave with fresh ideas on how to approach your software testing challenges.

Who Should Attend

Business Managers
CEOs
CIOs
CTOs
Heads of Software Engineering
IT Directors
IT Managers
Programme Managers
Project Managers
Quality Directors and Managers
Software Customers and Users
Software Engineering Managers
Software Engineers and Developers
Software Managers
Software Process Improvement Managers
Software Test Managers
Software Testers

Agenda of the Seminar

Few of the themes that would be covered, includes:

- Agile Project Scaling
- Assuring quality in a virtualised operating environment
- Automating Requirements and Risk Based Testing
- Behaviour Driven Development (BDD)
- Building a QA Team for the Agile Age
- Cloud Testing
- Coping with complex systems
- Expressing Software Testing in terms of Business Outcomes
- Improved Software Test Design
- Moving to Agile from traditional projects
- New approaches and ideas for managing software testing both traditional and Agile projects
- Quality Management in an Agile Context
- Radically disruptive approaches to Software Testing
- Software Test Automation Strategies

Source: http://apnaindia.com/classified/the-next-generation-software-testing-50090.html

Did you like this? Share it:

How To Effectively Manage Software Testing

Testing is one of the most crucial parts of software development, but it’s often neglected because seeing if something works is less sexy than building it in the first place. Whether you’re an amateur developer working on a mobile app or a corporate manager with a large-scale project in mind, remember these guidelines to ensure your testing process goes smoothly.

1. Allocate time for testing

Testing isn’t something you should leave until the last minute; assign time to it when you first begin planning a project. Even if you’re building an open source project and expect contributions and improvements from others, you’ll need to allow time to debate and integrate those changes. For public-facing projects such as web sites or web applications, testing is likely to take at least as much time as the original development process.

2. Set a time for release and stick to it

On many projects, having a fixed time of day when you roll out new changes and begin testing makes sense. This is essential if you have separate test and development teams, but even when you’re the main developer, consciously dividing the process means you will focus on testing what you’ve done rather than arbitrarily switching back to “coding mode”. This again is especially important with web sites, which often have incremental improvements added over time. Even when you’re using a staged development server, locking down what can be changed and fixing a time when it happens will make planning easier than if you constantly make minor updates.

3. Test on as many devices as possible

Development for mobile devices is a rapidly growing market; a 2010 survey by IBM suggested that more than half of all developers expected to concentrate their efforts on developing for mobile platforms. When testing on mobile platforms, use actual devices whenever possible. Emulators are useful for prototyping and will give you access to models you might not see otherwise, but emulation is rarely perfect and the user experience will often be subtly different. That said, for many projects it makes more sense to develop a mobile-friendly web site or app rather than concentrating on specific devices, and such an approach makes the rapid emergence of new hardware less of an issue.

4. Make use of external resources

Cloud-based external testing services provide a useful way to see how your applications work, especially if you want to see how they perform at scale. IDC says that more than $10 billion a year is being spent on these services, and growth rates of 15.4% are expected through to 2015. Using external testing providers also highlights issues that may not be obvious in your own testing processes.

5. Document the testing process properly

Documentation is the bane of many a developer’s life, but failing to adequately document as you work invariably creates headaches in the future. Documentation is vital, and the same applies in a testing environment. When problems emerge, document them with as much detail as possible. If your company has a specific system, use it. Even on a one-person project, a formal bug tracking and testing system makes sense, and again emphasises the importance of considering testing as part of the development process, not an afterthought.

Source: http://www.lifehacker.com.au/2012/03/how-to-effectively-manage-software-testing/

Did you like this? Share it:

Regression testing redefined

This comes from Wikipedia:

Regression testing is to determine whether a change in one part of the software affects other parts of the software

This is not wrong, but it’s incomplete. Discovering that “a change in one part of the software affects other parts of the software” is only one part of regression testing, the second part is to determine if the change is a bug or it is not. A change may as well be either of:

  • Expected change , because the other part interacts (directly or indirectly)with the part that changed
  • Unexpected change, which does not bug anyone and is fine
  • Test data issue (i.e. unsupported backward-compatibility between minor builds)
  • Anything else

On iterative project, especially those claiming to be agile we quite often end up doing considerable test adjustments during so called regression tests. We still call them regression testing and we report our progress against old test cases, but we almost never run those tests the way we run them last time.

Just in case – I want to say that I distinguish process of bug retesting (we do it when developer claim to have fixed a bug) which not just consist of checking if the defect as reported do not appear any more – it include process of testing around the bug, but that’s a different topic. In this blog I want to discuss so called “old feature testing”. I’ve seen many projects doing it just before shipping the next iteration.

Source: http://www.softwaretestingclub.com/profiles/blogs/regression-testing-redefined?xg_source=activity

Did you like this? Share it:

BACK END TEST GUIDE for SQL

1. INTRODUCTION

This document is to discuss general test specification issues for SQL server back end testing and to provide testers a test design guide that includes test methodology. Most systems, i.e. Forecast LRS, Delta, KENAI, KBATS and so on, that are developed by ITG have client-server architectures. However, only a few projects have their back end completely tested.

1.1 Why back end testing is so important

A back end is the engine of any client/server system. If the back end malfunctions, it may cause system deadlock, data corruption, data loss and bad performance. Many front ends log on to a single SQL server. A bug in a back end may put serious impact on the whole system. Too many bugs in a back end will cost tremendous resources to find and fix bugs and delay the system developments. It is very likely that many tests in a front end only hit a small portion of a back end. Many bugs in a back end cannot be easily discovered without direct testing. Back end testing has several advantages: The back end is no longer a "black box" to testers. We have full control of test coverage and depth. Many bugs can be effectively found and fixed in the early development stage. Take Forecast LRS as an example; the number of bugs in a back end was more than 30% of total number of bugs in the project. When back end bugs are fixed, the system quality is dramatically increased.

1.2 Differences between back end testing and front end testing

It is not easier to understand and verify a back end than a front end because a front end usually has friendly and intuitive user interfaces. A back end has its own objects, such as, tables, stored procedures and triggers. Data integrity and protection is critical. Performance and multi-user support are big issues. Slowness in operation can be vital to the project’s future. There are no sufficient tools for back end testing. SQL language is mainly a testing tool. MS Access and MS Excel can be used to verify data but they are not perfect for testing. However, there are a large number of test tools available for front end testing. To be able to do back end testing, a tester must have strong background in SQL server and SQL language. It is relatively difficult to find testers who understand both SQL server and SQL testing. This causes a shortage of back end testers.

Source: http://www.vietnamesetestingboard.org/zbxe/?mid=download&category=17246&document_srl=590218&listStyle=&cpage=

Did you like this? Share it:

White Box and Black Box Test Cases

To write black box test cases software tester needs the requirement document and design plan. These documents are easily accessible at the very beginning of the project.

At the same time white box test cases cannot be written at the initial start of the project. It is so because white box test cases need more architecture clearness which is not accessible at the beginning of the project.

White Box and Black Box Test Cases

So it is a common situation when white box test cases are written after black box ones.

Black box test cases don’t need system comprehension but white box testing requires more structural comprehension.

Structural comprehension is more intelligible in the later stages of project.

For black box testing QA engineer needs to only analyze from the functional perspective which is easily accessible from a simple requirement document.

Source: http://www.vietnamesetestingboard.org/zbxe/?mid=download&category=12675&document_srl=588605&listStyle=&cpage=

Did you like this? Share it:

Time Estimation for Software Testing

In the process of creation of a successful software product, there is an inevitable problem of finding a balance between the quality and the release date of the software product. The testing allows of obtaining a product that satisfies all requirements. But the covering of each product risk with various test cases and compiling them take too long. The correctly prepared testing process should provide a required quality level without exceeding project time and budget . If the time for testing was estimated wrongly, it can lead you either to the late product delivery, or to the decrease of its quality and competitiveness . The estimation of time resources in software testing is a rather complicated and volumetric process but its significance for the creation of the successful project shouldn’t be underestimated.

This article contains recommendations that can help you to obtain more realistic and functional time estimates for the testing of a new project.

Written by:
Olga Volzhanina,
QA Specialist of Driver Testing Team

1. Decomposition of Testing Tasks
1.1. Testing Process Planning
1.2. Test Plan and Test Case Development
1.3. Test Environment Configuration
1.4. Execution of Test Cases
2. Debugging of Test Cases After the First Run or Product Change
2.1. Regression Testing
Conclusion

Source: http://www.vietnamesetestingboard.org/zbxe/?mid=download&category=469996&document_srl=526798&listStyle=&cpage=

Did you like this? Share it:

5 common solutions to software development problems

  1. solid requirements – clear, complete, detailed, cohesive, attainable, testable requirements that are agreed to by all players. Use prototypes to help nail down requirements.
  2. realistic schedules – allow adequate time for planning, design, testing, bug fixing, re-testing, changes, and documentation; personnel should be able to complete the project without burning out.
  3. adequate testing – start testing early on, re-test after fixes or changes, plan for adequate time for testing and bug-fixing.
  4. stick to initial requirements as much as possible – be prepared to defend against changes and additions once development has begun, and be prepared to explain consequences. If changes are necessary, they should be adequately reflected in related schedule changes.If possible, use rapid prototyping during the design phase so that customers can see what to expect.This will provide them a higher comfort level with their requirements decisions and minimize changes later on.
  5. communication – require walkthroughs and inspections when appropriate; make extensive use of group communication tools – e-mail, groupware, networked bug-tracking tools and change management tools,     intranet capabilities, etc.; insure that documentation is available and up-to-date – preferably electronic, not paper; promote teamwork and cooperation; use protoypes early on so that customers’expectations are clarified.

Source: http://www.vietnamesetestingboard.org/zbxe/?mid=download&category=12646&document_srl=432592&listStyle=&cpage=

Did you like this? Share it:

Performance Test Environment and Performance Test Scripts

Know the Test and Production environment
The actual target production environment of the System Under Test needs to be studied by the Performance Test Engineer. The performance test strategy should contain the details about the target system environment on production. The Performance Test Engineer should know the deployment architecture of the application in the target production environment and must educate the development team to setup a similar test environment to run the performance tests. There could be a huge difference in the system performance on test and production environment as both environment uses different hardware platform to deploy the application. The Performance Test Engineer always need to identify the system configuration details of the server machines in the target environment like the number of CPUs, CPU capacity (clock speed), RAM capacity, and disk capacity, free space available in the disk, NIC card capacity and network bandwidth. These details needs to be identified before scheduling the performance test and should be documented in the test plan document for future reference.

Load Generators
The load testing tools are normally used to create the required load on the server. This can be done using the Load Generators. For example, when the performance test tool is configured to simulate 10 Virtual users then the tool generates 10 threads or process (depending on the configuration setting of the tool) which sends the client requests to the server as per the recorded think time intervals available in the test script. The system should have enough hardware resources (CPU and Memory) to handle the running threads. The number of virtual users to be produced from a machine depends on the hardware capability of the machine. If a low configuration desktop is used for load generation, then not more than 15-20 virtual users should be produced. If a high end server is used for load generation, then about 1000 virtual users could also be produced as long as enough hardware resources are available in the system. For example, In case of testing of SAP applications, the virtual users that can be produced from an individual machine become very limited.

Test Data Generators
During the performance tests, most of the time the test environment might not have the required database records as in the target production database. The target production database volume or projected data volume needs to be studied and accordingly the test environment needs to be populated with the required number of records. Depending upon the complexity of the test data, it could be done either by the Performance Test Engineer or DBA.

Real time versus Virtual user Mapping
Though Performance testing is conducted for the target number of user load, it’s Performance Test Engineer’s responsibility to assure that each simulated virtual user is equivalent to the real time user, only then the load generated on the server could be realistic. For applications which have the real time usage history (moving to production environment for second time or later), the server load (requests handled per second) during the peak traffic hour needs to be compared with the server load created on the server during the performance test. This helps to confirm the load simulated during performance test is realistic.

Source: http://www.vietnamesetestingboard.org/zbxe/?mid=download&category=166350&document_srl=319211&listStyle=&cpage=

Did you like this? Share it: