How to Speed Up Software Development?

Why is Faster Software Development Important?

Faster software development is important because it saves time and money.

In a business world that is more competitive than ever before, it’s important to be able to develop software as quickly as possible. Today’s software developers need to be able to build out new features for the company’s product or service, and they need to do so quickly. The faster that this can happen, the less time is wasted, which means that companies will be more prepared and have a higher chance of success in this competitive market.

What Practices Will Help You Speed Up Your Software Development?

  1. Shift Left through Automation
  2. Implement CI/CD
  3. Automate as many tasks as possible – coding, data entry, testing, etc.
  4. Make defects visible so they can be fixed early and often – unit testing, nightly builds, etc.
  5. Know what you want before you build it – are requirements clear? does the design make sense? are there risks or side effects we should know about?
  6. Do things in parallel wherever possible – running multiple tests, running multiple code reviews at the same time, etc.
  7. Be responsive to changes in requirements and design from stakeholders and teammates
  8. Limit your work in progress

5 Common Mistakes to Avoid When Conducting Security Testing – Testing Bytes

Testing Byte Series:

5 Common Mistakes to Avoid When Conducting Security Testing

Security testing is one of the most important aspects of the software development life cycle. It ensures that your application has no security flaws or vulnerabilities. A common misconception is that a good tester will find any bugs and problems in an application. That is not always true.

There are many mistakes you can commit while conducting security testing which may lead to critical consequences such as breaking confidentiality, availability, or integrity. Here are 5 common security testing mistakes you should avoid:

1) Not Understanding Your Application’s Functionality

2) Testing for Security Flaws in Non-Security Features

3) Ignoring Security Requirements for External APIs

4) Using Insufficient Resources for Security Testing

5) Failure to Test After Development Changes

Top 15 REST API Interview Questions and Answers

  1. Client/server Error Codes
  2. Success codes
  3. Use of GET, PUT, POST, PATCH, DELETE
  4. Difference between Put and Patch
  5. Difference between Put and Post
  6. How to handle authentication?
  7. Difference between webserver and API
  8. Json/xml structure format
  9. How to validate json response?
  10. Use of JsonPath
  11. How to construct json body for Put, Post, Patch request?
  12. Use of JsonObject.
  13. What’s is URI?
  14. What’s a resource?
  15. What are the common headers used?

~via Shammi Jha (WhatsApp Group)

Determining What Test Cases to Automate

3 Steps for Determining What Test Cases to Automate

  1. Know your goal and scope of the test case
  2. Be objective about the test case’s complexity and risk-levels
  3. Make sure that your testing efforts are well-balanced in time, efforts, and budget

The value of automated testing is proportional to the number of times a test may be repeated. Manual testing is preferable for tests that are only performed a few times. Test cases that are run frequently and require a substantial quantity of data to execute the same action are good candidates for automation.

Automating the following tasks will help you get the most out of your automated testing efforts:

  • Tests that are repeated for numerous builds.
  • Tests that are prone to human error.
  • Tests that necessitate the use of numerous data sets.
  • This is a frequently used feature that introduces high-risk situations.
  • Tests that are impossible to complete by hand.
  • Tests that are performed on a variety of hardware and software platforms and combinations.
  • When manual testing, tests that involve a lot of time and effort.

Understanding the DevOps Lifecycle

DevOps is an iterative process that occurs throughout the product development process. In the usual DevOps process, there are various stages. The phases are listed below, along with descriptions of the intersection of development and operations and how they fit together in the DevOps model. Let’s have a look at each phase in detail. The “DevOps infinity loop” is a popular metaphor for this.

Plan: During this phase, the software will be planned. Data from software monitoring in operations can help impact planning, so there’s a connection between development and operations.

Code: The programme modules or functionalities are coded in this section. Different team members can work independently using version control systems such as Git, committing their modifications and submitting pull requests to the main branch.

Build: The software is turned into machine-readable instructions. Continuous integration servers make sure that the programme is always up to date with the latest commits.

Test: The testing phase is where the development and operations teams run manual and automated tests.

Release: The software is released into a pre-production environment during this phase.

Deploy: Deployment entails both the promotion of the software into the production environment and the setup of the software.

Operate: The operations team makes sure the programme is working properly in both functional and non-functional areas. Monitoring performance, adjusting for load, and making additional configuration adjustments are all part of this phase.

Monitor: Continuous monitoring aids the development team in anticipating future changes, such as bug repairs. It also serves as a starting point for the development team’s production configurations for future releases.

Common Interview Questions for Software Test Automation Engineers in Java

*******************
Java-Basic
*******************
1. Types of polymorphism
2. Difference between override and overload
3. Methods that cannot be overloaded
4. Static block and instance block
5. Difference in Static and non static
6. Encapsulation and common use cases
7. Abstract vs interfaces
8. Inheritance in java
9. Methods that cannot be overloaded
10. Type casting in java
11. String buffer and string builder
12. Why string is immutable in java
13. How to handle exceptions
14. Can I write try catch without the catch block
15. Difference between throws and throw
16. Use of iterator in java
17. Difference in Final, finally and finalize
18. Boxing and unboxing in java
19. Increment and decrement operation
20. Variable Args
21. This and super keyword in java
22. Issues during Swtich case without break
23. Upcasting and downcasting
24. Baseclass of all class in java
25. Baseclass of error and exceptions
26. Access specifiers
27. Continue and break statement
28. Can main method return any value
29. Can we overload main method. What happens when overloaded
30. how to execute and statement before main method
31. Difference between == and equals()
32. Can user declare constructor as final
33. Can we cast any other type to Boolean data with type casting.
34.does java compile if user use ‘static public void’ instead of ‘public static void’
35.can we use this() and super() in a constructor
36. Can we create object of abstract class
37. Can we create reference for an abstract class
38. Can we declare a class as static
39. What is instanceOf keyword
40. What’s the load factor of HashMap
41. How to prevent a class from being sub classes
42. Final variable, final method and final class
43. Ways to create a string variable.
44. What is gc() – garbage collector
45. Subclass and innerclass
46. Infinite loop in java
47. How to make copy of an element
48. Checked and unchecked exceptions

*******************
Java Collection
*******************

1. Classes inside List interface, Set interface, Map Interface
2. Arraylist vs Linkedlist
3. Arraylist vs array
4. Arraylist vs vector or stack
5. Which class of List Interface to be used if user have more insertions and deletions
6. Which class of List Interface to be used if user have more retrieval
7. Set Interface: HashSet, TreeSet, SortedSet
8. Map – HashMap, HashTable, TreeMap, LinkedHashMap.
9. Stack and Queue
10. How to maintain insertion order in Set, List and Map
11. How to sort elements in ascending order in Set and Map

*******************
Java Programs
*******************

1. String reverse
2. String Palindrome
3. String Anagram
4. Find occurrences of characters in a string
5. Find the count of Capital and Small letters in a string
6. Remove duplicate characters from string
7. Swap to numbers without temporary variable
8. Reverse number
9. factorial
10. Fibonacci
11. Count number, alphabet and special characters

~via Shammi Jha (WhatsApp Group)

Handy tools for Performance Testing

The top eleven tools for performance testing are as follows:

  1. Google Page Speed Insights – a site performance from Google, both for mobile and desktop devices.
  2. Webpagetest – it checks to detect the causes of the slow loading of the site.
  3. GTMetrix – it allows you to check the performance of the site.
  4. Pingdom – it’s a monitoring service and a free automated website testing tool.
  5. Gomez – viewing from multiple locations. Over 100 locations to choose from.
  6. Alertra – viewing from several locations.
  7. Load Impact – testing from several locations and performance reports.
  8. FeedTheBot – tests for website optimization and performance.
  9. Dotcom Monitor – site performance tests from 20 locations with just one click.
  10. RedBot is a small utility for checking HTTP headers.
  11. Neustar Ultratools – a set of utilities for checking the speed of hosting, DNS, and more.

Chrome Network Throttling – Testing any website with slow internet connection

Chrome can be used to simulate a slow connection.
Install Chrome if it is not already installed on your system. After that, open a new tab and press CTRL + SHIFT + I to bring up the developer tools window, or click on the hamburger icon, then More tools, then Developer tools.

Now click on Network section – a drop-down menu of pre-configured speeds appears, which you can use to simulate a slow connection.

Chrome Network throttling
To add your own custom values, click the Add button under Custom. To create a new profile, click the Add Custom Profile button.

This is an excellent tool that is integrated into Chrome that you can use to determine the load time of your website on slower connections. Please feel free to leave a comment if you have any questions. Enjoy!

Most Important Metrics for Performance Testing

Consider six of the most critical metrics to monitor and the value they provide.

Response Metrics

  • Average response time is the time between a client’s initial request and the final byte of a server’s response, which includes the delivery of HTML, images, CSS, JavaScript, and any other resources. It is the most precise standard method of determining the actual user experience. 
  • Peak response time is a roundtrip time measurement for a request/response cycle, but it focuses on the longest cycle rather than an average. Rapid response times assist in identifying potentially problematic anomalies. 
  • Error Rate quantifies the proportion of problematic requests to total requests. While it is not uncommon for some errors to occur during periods of high load, error rates should be kept to a minimum to optimize the user experience.

Volume Metrics

  • Concurrent users indicate the number of virtual users that are active at any given time. While requests per second are comparable (see below), the difference is that each concurrent user can generate a large number of requests. 
  • Requests per second indicate the total number of requests sent to the server each second, which may include requests for HTML pages, CSS stylesheets, XML documents, JavaScript files, and images, among other resources. 
  • Throughput indicates the amount of bandwidth consumed during the test in kilobytes per second. Low throughput may indicate the need for resource compression.

References: