Improve Your Writing Skills as a Software Tester

Week 8 Blog Post

This week i decided to read 9 Ways to Quickly Improve Your Writing Skills as a Software Tester by Renuka K.

As a newcomer to the world of software testing this article seemed extremely interesting to me. The article begins by talking about business communication.

Here are a few definitions from the article that are relevant to the overall message of the article.

Communication: “Communication is a two-way mutual process where one person conveys his or her ideas or messages to the other person. The other person then provides feedback.”

Written Communication: “A way to convey your thoughts or messages using written words or symbols. In case of written communication, the medium is anything that supports writing, like Blogs / Reports / Memos or mail.”

Business Communication: “One of the types of written communication happening in organizations. Written or Business communication can be further divided into Formal and Informal Communication.”

Business Communication can be further divided into informal and formal. Informal is communication that is professional in nature but does not need to be formal. An example would be an email to another person in your department.

Formal business communication: “A way of communicating with the help of written records which are official and professional.”

An example of formal communication is Test Documents or an email to a client regarding the Testing or another process. Formal Business communication can be further divided into internal and external. Internal would of course be within the organization while external would be between the testing team and the client. Communication in all of it’s forms is extremely important. An example of why written communication is important for QA engineers begins with writing a resume and ends with all kinds of testing documentation.

Communication skills can have a profound effect on your career in a number of ways. It helps you get a job or promotion, increases trustworthiness, builds confidence, and enhances relationships.

Now that the article has outlined communication and why it is important to a QA engineer, they go through some ways that one can improve your writing skills.

  1. “Always keep in mind the purpose of writing: “

This discusses thinking about what you want your writing to accomplish before you begin writing. Then making sure by the end you achieve these goals through your writing, as well as using diagrams and examples.

2. “Know your Audience”

By knowing your audience you can specifically tailor your writing so that is suits your audience perfectly.

3. “Read Read Read”

Reading is a good way to increase your vocabulary. Reading the types of documents that you will be writing can help you to gather ideas regarding the topic and ways to organize your information.

4. “Formatting your work”

A good format invites readers and gets them interested in what you have written. It organizes information in a way that is easy to read and understand. They suggest the use of graphs and say that you should limit the use of Bold or colored letters.

5. “Keep it simple and easy to understand”

They discuss things such as a logical flow, keeping writing focused, keeping sentences and paragraphs short and clear and using simple words.

6. “Active vs Passive Style”

They suggest using an active voice instead of a passive one. A passive voice can lead to longer sentences and error in the structure of the writing.

7. “Make it grammatically correct”

This seems easy enough however making errors in grammar is very common and can cause a lot of confusion for the reader.

8. “Review and Edit”

This is the most stressed part of any type of writing. Always review and edit your work no matter how small or trivial it may be.

9. “Practice it every day”

With any type of skill practice is the most important thing. In order to get better you need to make it a daily ritual and improve improve daily. Even if you only write a few sentences every day.

Here are a few other articles that i found interesting:

http://curioustester.blogspot.com/2016/10/microinteractions-designing-little_28.html

Attack of the Internet of Things

Mutation Testing in Python

What Scares Testers Most? – The Tester’s Horror Stories (Halloween Special)


From the blog CS@Worcester – Computer Science Journal by jtassone93 and used with permission of the author. All other rights reserved by the author.

Testing in Production

Week 7 Blog

This week i decided to readΒ Testing in Production: A Double-Edged Sword by Rajini Padmanaban.

This article covers what testing in production is, how it is implemented and the benefits of testing in production.

Testing in production involves making sure the functionality and quality of an application holds up in a live environment. This allows aΒ  large number of people to get involved in the testing process besides the testers themselves. It also supports the idea of “Continuous Testing” which is a good thing to have in your process. Of course with a title such as a “double-edged sword” there are some pitfalls associated with this. One of these being that it can be viewed negatively to have bugs reported after release, even though these issues are usually resolved relatively quickly and may not have been caught in a normal testing environment.

There are three large parts to Testing in Production.

“Active and passive monitoring”

“Experimentation with real users”

“Stress tests to monitor system response”

Of course these seem simple however that is not the case at all. Each part is highly complicated and involves more than meets the eye. An example of this is the monitoring of user data. With the data becomes a large security concern that needs to be dealt with. Stress Tests need to be taken seriously as well, if the system were to fail there needs to be a team ready to quickly solve the issue. Social media is a useful source for testing in production as well. The testing team can monitor these forums and be provided with a large amount of useful information to be used in the testing process.

Testing in Production is an important part of any testing process. However it is not an excuse to get lazy and not take the rest of the testing process seriously thinking that Testing in production will catch anything that the tester has missed. It should also not be used as an excuse to speed up the development process, this can cause a variety of issues from user loyalty to test team positioning to suffer in the long run.

Here are some other articles that i found interesting:

Is Your Website Ready for Election Day Traffic?

Come Meet and Learn with SmartBear at APIStrat 2016

http://www.continuousimprover.com/2016/10/principles-for-successful-package.html

https://www.stickyminds.com/better-software-magazine-article/what-cucumber-and-why-should-i-care


From the blog CS@Worcester – Computer Science Journal by jtassone93 and used with permission of the author. All other rights reserved by the author.

Testing IoT Devices

Week 6 Blog Post

This week i decided to read Testing IoT Devices: Key Areas by Pavel Novik.

This article seemed particularly interesting because it discusses an area of software testing that is often overlooked. It talks about devices that are part of the IoT or the internet of things. These include things like your refrigerator, your phone or even your car. Although your phone may be well tested, the software involved with your refrigerator or car may not be and most likely isn’t well tested.

According to the article 68 percent of organizations that have embedded software solutions do not have a software testing strategy. This is a huge deal seeing as we are currently moving towards devices such as self-driving cars, or a stove that can turn on with your cell phone.

There are a few issues regarding the testing of these devices. One such issue is that the company writing the software may not have access to the device or devices on which it will be available, making the testing slightly harder. In this case it is best to find the closest thing that would provide the best testing environment or even provide a list of supported devices.

A large issue with not testing these devices is security. If a device is on your network and not well secured a hacker could use that device to gain access to the rest of the network. Another important thing is to make sure the failure of one network device does not affect the other devices on the network or the network itself. This among Functionality and Compatibility are the three main areas of focus for IoT devices.

Without proper testing of those areas there could be a large number of issues regarding the IoT.

From the blog CS@Worcester – Computer Science Journal by jtassone93 and used with permission of the author. All other rights reserved by the author.

Hack More!

I read an article this week about which programming language hackers use (http://www.softwaretestingclub.com/profiles/blogs/which-programming-language-do-hackers-use) and while at first, I didn’t see the relationship between hacking and software testing, I came to realize that they have a good amount of similarities. Thinking more in depth about it, the act of hacking is just finding vulnerabilities in a software or program which is the same objective as QA testers (although the intents may be different).

Something interesting about the article was that when asked, “what programming language do hackers use”, the answer given by an expert hacker Adrian Lamo was totally not what I was expecting. He responded that he does not use a programming language which caught me off-guard because I didn’t think it was even possible to hack / test without the use of a programming language. The most memorable and significant piece of information I got out of this article was when Adrian Lamo further explains his answer by saying that its more important to learn how to read code rather than learning how to code. By learning how to efficiently read code, you can dissect how programmers think, what their tendencies are, and what common mistakes they make which can give you a better idea of what to test.

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

Mocking

The purpose of a unit test is to verify an assumption about the behavior of a software system. And unit tests must be automated so that any assumptions can be verified quickly.

A unit test should also exhibit the following characteristics:

  1. It should have fast test execution.
  2. A test should not depend on database access or any long running tasks. A test should isolate external dependencies.

 

A Mock Object is an object that substitutes for a real object. Mock objects are simulated objects that mimic the behavior of real objects.Β Mock objects allow you to set up test scenarios without usingΒ large resources likeΒ databases. Instead of calling a database for testing, you can simulate your database using a mock object in your unit tests. This makes tests run faster.

 

 

 

From the blog Software Testing – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

Automated Android UI Testing

UI tests are tests that make sure the app returns the correct output based on user input in the UI. Tools are needed to automate these tests, such as Espresso. I will be going over four different techniques for doing these automated tests.

End-to-End: this way of testing makes sure the whole system is functioning correctly. But using this method can be very large and slow but it covers the whole system.

Hermetic UI Testing Using Fake Servers: this method you can avoid using external dependencies. You chose what the server is sending to your app, so you have more control. This way reduces test sizes and improves accuracy, but you’ll have to maintain a separate server.

Dependency Injection Design: this will eliminate the need for a fake server. This makes it possible to mock dependencies, improving the accuracy of your tests.

Building Apps into Smaller Libraries: if you plan on adding more feature you should consider building your app into small libraries. This lets you mock dependencies for each library. This means smaller tests and increased accuracy.

https://testing.googleblog.com/2015/03/android-ui-automated-testing.html

From the blog CS@Worcester – Software Testing by kyleottblog and used with permission of the author. All other rights reserved by the author.

End-to-End Testing

End-to-End testing tests your entire system from one end to the other. Doing it this way makes everything from one end to the other black box. Using this way of testing, it will catch bugs across you entire system. The downside to End-to-End testing is it can be slower, less reliable and harder to maintain. Using this kind of testing you’ll want to focus more on the overall system health rather than focusing on small details.

Doing testing this way is not right for every situation. It is expensive to maintain and can be slow. The advantages may out weight the disadvantages in certain situations.

https://testing.googleblog.com/2016/09/testing-on-toilet-what-makes-good-end.html

From the blog CS@Worcester – Software Testing by kyleottblog and used with permission of the author. All other rights reserved by the author.

Can test automation replace human testers (Week 7)

This article lists the pros and cons for test automation  and human testers.  This days the IT managers and directors are in dilemma because they have to decide what is better for their department to use for software testing the automated testing or the manual testing. Do they have to hire a team of software testers or would they be better using automated testing? These strategies have big difference. Both these strategies have pros and cons here are some:

Automated Testing

Pros: The main advantage of using automated testing is the speed, IT managers can use this strategy to test the code faster then manual testing and also they can re-use the automated testing tool many times that they need. Automated testing can be used ion different operating systems. It is very effective for build verification and testing.

Cons: A down side of automation testing is not helpful with UI testing, it can not be trusted all the time also it has high initial cost of tools.

Manual Testing

Pros: Manual Testing is the testing of software for bugs in the software system. Testers execute test cases without using any automation tools. Lets talk about some of the pros, companies that can’t afford automated test tools can use testers to write and execute test cases, this strategy is flexible compared to automation testing.

Cons: Manual testing can be very slow compared to automation testing. The tester have to be engaged 100% with the software and has to know the structure of it. If the tester don’t know the structure of the software can be a high chance of missing out on some bugs.

Citation
http://www.thinksys.com/can-test-automation-replace-human-testers.shtml

From the blog Table of Code by Andon S and used with permission of the author. All other rights reserved by the author.

Can test automation replace human testers (Week 7)

This article lists the pros and cons for test automation  and human testers.  This days the IT managers and directors are in dilemma because they have to decide what is better for their department to use for software testing the automated testing or the manual testing. Do they have to hire a team of software testers or would they be better using automated testing? These strategies have big difference. Both these strategies have pros and cons here are some:

Automated Testing

Pros: The main advantage of using automated testing is the speed, IT managers can use this strategy to test the code faster then manual testing and also they can re-use the automated testing tool many times that they need. Automated testing can be used ion different operating systems. It is very effective for build verification and testing.

Cons: A down side of automation testing is not helpful with UI testing, it can not be trusted all the time also it has high initial cost of tools.

Manual Testing

Pros: Manual Testing is the testing of software for bugs in the software system. Testers execute test cases without using any automation tools. Lets talk about some of the pros, companies that can’t afford automated test tools can use testers to write and execute test cases, this strategy is flexible compared to automation testing.

Cons: Manual testing can be very slow compared to automation testing. The tester have to be engaged 100% with the software and has to know the structure of it. If the tester don’t know the structure of the software can be a high chance of missing out on some bugs.

Citation
http://www.thinksys.com/can-test-automation-replace-human-testers.shtml

From the blog Table of Code by Andon S and used with permission of the author. All other rights reserved by the author.

Can test automation replace human testers (Week 7)

This article lists the pros and cons for test automation  and human testers.  This days the IT managers and directors are in dilemma because they have to decide what is better for their department to use for software testing the automated testing or the manual testing. Do they have to hire a team of software testers or would they be better using automated testing? These strategies have big difference. Both these strategies have pros and cons here are some:

Automated Testing

Pros: The main advantage of using automated testing is the speed, IT managers can use this strategy to test the code faster then manual testing and also they can re-use the automated testing tool many times that they need. Automated testing can be used ion different operating systems. It is very effective for build verification and testing.

Cons: A down side of automation testing is not helpful with UI testing, it can not be trusted all the time also it has high initial cost of tools.

Manual Testing

Pros: Manual Testing is the testing of software for bugs in the software system. Testers execute test cases without using any automation tools. Lets talk about some of the pros, companies that can’t afford automated test tools can use testers to write and execute test cases, this strategy is flexible compared to automation testing.

Cons: Manual testing can be very slow compared to automation testing. The tester have to be engaged 100% with the software and has to know the structure of it. If the tester don’t know the structure of the software can be a high chance of missing out on some bugs.

Citation
http://www.thinksys.com/can-test-automation-replace-human-testers.shtml

From the blog Table of Code by Andon S and used with permission of the author. All other rights reserved by the author.