anselmo

Author Archives: anselmo

Manual Testing Interview Questions and Answers

Manual testing is a stepping stone of a QA-Tester. Among the objectives of the software test are verifying that the functionalities of a product meet specifications and requirements, as well as preventing failures so that it reaches the level of Expected Quality and actually do what it proposes to do. It requires knowledge of testing terminology and industry practices. This article introduces you to manual testing interview questions.

Question: What is the difference between Software review and Formal Technical review

About the question: This question requires basic understanding of testing techniques

Answer: A software review is a broad definition of a process that aims to check a software product to give comments or approval.

A formal technical review is a software review in which a team does a technical analysis of the software, checking aspects like:

  • possible errors in logic, functionality or implementation (documentation and code)
  • If the software meets the requirements
  • If it follow the standards and guidelines

To have more information about formal technical review, check a presentation from how Kodak implemented it.

What is cyclomatic complexity? Explain.

About the question: This question requires knowledge of basic software terminology.

Answer: Cyclomatic complexity is a software metric used to measure the complexity of a given module (a class, a method, a function, etc.) from counting the number of Independent paths that it can be executed until its end. An independent path is one that presents at least one new condition (possibility of flow deviation) or a new set of commands to execute.

What is the connection with manual test? The result of cyclomatic complexity indicates how many (at least) tests needed to be performed to check for all possible flows that the code can take to ensure complete testing coverage.

It is obtained by the following formula

Cyclomatic complexity = E – N +2*P

Where:

  • E = number of edges in the flow graph
  • N = number of nodes in the flow graph
  • P = number of nodes in flow graph that have exit points.

For more information, check the white box test website.

What is the difference between build, release, and version in software versioning?

Answer:

  • A build is a version of a software or part of it, which contains a set of features that may integrate the final product. That’s when most part of the manual test starts.
  • A release is a build that is ready to be shipped to the client.
  • A version is the number or name given to a build of a software to identify it. Software in different stage receives different versioning. One famous example is the Linux versioning.

In a hypothetical banking application, the rate of loan interest is 12% when the principal is less than $2,000. If the amount is equal or more than $2,000 the interest rate is 10%. Which values would you use in your test cases and why?

Answer: To solve this question one recommended approach would be to use Boundary Value analysis and equivalence partitioning strategies.

It would be very desirable for the candidate to explain both:

Equivalence partitioning is about finding a finite, minimum, number of test cases that cover the requirements. This means dividing the cases into groups that should yield the same rule.
In the above question, we could say that:
– the rule of 12% is yield for the values between 1 to 1999 inclusive.
– the rule of 10% is yield for values from 2000 (inclusive) and above.

Then you have an invalid group of values: 0 (no one can get a loan of 0, right?) to infinite negative (In this case you would be lending money to the bank) which normally is not called a loan in the industry.

So you have valid groups:

[1-1999]

[2000- above]

Each of these sets is called an Equivalence Class.

Since problems tend to occur with values that are at the boundary of these classes, we use the next technique that is called Boundary value analysis.

It advocates for the tests to be done for cases just below the extreme edges and also just above them.

These would be recommended test cases if this strategy is followed:
0 – 1 – 2
1998 – 19992000 – 2001

To apply for a driver’s license the applicant should be between 18 years (inclusive) and 80 years (exclusive) of age. How would you design equivalence partition for such an input field?

Answer:
The valid input value for the given condition is:

(18-79)

Hence if the input value is below 18 years then it is an invalid input. Also if the input is 80 or more then it is invalid input. Therefore, three equivalence partition are:

[0…17|18…79|80…120], respectively invalid, valid, invalid.

What is the branch coverage in the following flow chart?

branch coverage example for manual testing interview

Answer: There are two decision nodes (in blue) and three possible outcomes (in green). To find out branch coverage we need the minimum number of paths that covers all paths. A minimum of 3 paths covers all edge (1 -> 2 -> 3 -> 4), (1 -> 2 -> 5 -> 6 -> 4), (1 -> 2 -> 5 -> 7 -> 4). Hence branch coverage is 3.

Check this quick video for more information:

What does baseline testing mean?

About this question: This question is aimed at checking the candidate’s understanding of types of testing.

Answer: Baseline is the formal document used as the baseline of a test plan. It is the document or set of documents from which test cases are designed. Such a testing is called baseline testing. It is used for non-functional testing.

Reference:

What are internationalization and localization testing?

Answer: The purpose of internationalization testing is to assert that the software presents the user with a visual and functional application, in the various languages for which it has been localized.

The localization testing is the process of testing the software using the local setting, i.e., taking into account the set of cultural conventions of a particular market, like date format and currency.

For more information:

Can you describe a common list of stages for a bug life cycle?

Answer: A bug/defect can have the following stages:

  • Open/New: When a new bug is reported it is assigned as an Open bug. It waits for verification by project manager/team lead/QA, etc.
  • The verifier evaluates the bug and assigns it as Active, Duplicate or rejected.
    • Active: If a new bug is valid and needs to be fixed then it is assigned as active. It is usually assigned to a developer or team to be fixed.
    • Duplicate: If the bug is already raised then it is assigned as duplicated.
    • Rejected:  If the bug is not valid or does not meet specifications it is assigned as rejected.
  • Fixed: Once the bug is fixed it is assigned as Fixed.
  • Once the bug is fixed it is retested by a tester.
    • Reopened: The tester can reopen it if it is not fixed or close it.
    • Close: If the bug is checked by the tester and no problem is found.

What is a decision table and why it is important? Give an Example.

Answer: A decision table testing is a black box testing technique to find test scenarios involving complex business logic. When different combinations of input result in different outputs, a decision table could be used. For each possible combination of inputs, the expected output is tabulated and then tested.

For example, consider a customer withdrawing cash from an ATM. Cash can be withdrawn if the customer gives correct pin and there is sufficient balance in customer’s account.

A decision tree is shown below:

Conditions
Is Pin correct? True True False False
Has sufficient cash balance? True False False False
Action (expected output) Yes No No No

What is Binary Portability Testing?

Answer: Binary portability testing aims to test an executable software across different platforms and environments like Windows, Linux, MacOS etc.

What is the difference between Quality Control and Quality Assurance?

Answer: Quality Control is the set of activities to ensure a required quality of the product is achieved. It is the process of finding bugs and rectifying it. The purpose of Quality Assurance is to implement processes to achieve better quality in the product.  Quality Assurance aims at improving the processes to meet the requirements.

Check this great page to learn more: Quality Assurance Is Not Quality Control.

What does Defect Density mean? How can it be measured?

Answer: Defect density is the number of confirmed bugs in an application divided by the size of the software:

Defect density = Number of defects / Size

Only confirmed defects are considered for this metric. The size of the software is usually measured by lines of code or functions points.

To complement this question, you can take a look at this great article about the defect of defect density.

How would you choose between manual testing and automated testing?

About the question: This question tests user’s knowledge of manual and automated testing and experience with them.

Answer: I would select manual test for:

  • Tests that involve more intellectual tasks and require analysis and logical thinking;
  • Usability tests;
  • Dynamic tasks;
  • In systems that have a short life cycle.

I would select automated tested for:

  • Tests involving repetitive tasks;
  • Applications with long life cycles, so the test will need to be repeated;
  • Tests that need to be done more often.
  • Accuracy is critical (humans fail more than machines 🙂 )

What is Impact analysis?

Answer: Impact analysis is the process to analyze the impact of changes introduced in the software, estimating potential consequences and risks that it could cause.

Reference:

What is Rapid Action Development Model?

Answer: It is an incremental software development model that aims at the development of the project in a very short time. In this model, the modules are developed in parallel as prototypes. They are integrated to make the complete product. There is usually some beforehand planning included in the process.

Reference:

What is the role of a recorder in a review process?

Answer: Software review is a static testing technique to improve software quality early in the development process. A review team conducts the review process and a specific task is given to each member.

The role of a recorder is to record each defect found and include recommendations given in the meeting.

What is the difference between test case, test scenario, and test plan?

Answer: A test case tests a single condition of the application. It has a predefined set of steps to execute, describing “how” to test. They serve as a basis for testers to run the tests manually, but they can also be automated, and should cover as many situations as possible.

The test scenario is a document which describes situations to help the tester at the time of executing the tests. The test scenario describes “what” should be tested.

A Test Plan is a document responsible for presenting the planning for the execution of the tests of the software being developed, including the approach, features, and schedule of testing activities.

What is a test script?

Answer: Test Scripts are computer readable statements that automate the execution of one or more (or parts of) Test Cases. Test Scripts can be created or generated automatically using test automation tools, programmed through a programming language or a combination of logging, generation, and programming.

What are the advantages of Independent testers?

Answer: Independent testers have a neutral approach and are more likely to be unbiased. They can observe things from a perspective that a developer, or a project lead or anyone else involved with coding or analysis part of the development process might miss.

What is a latent defect?

Answer: A Latent defect is an existing defect that does not cause any failure as the exact set of conditions has never been met.

 

MySQL interview questions and answers

MySQL is a widely used relational database. According to db-engines.com, it ranks as second in usage, only losing to Oracle Database, and not by far. That’s why we prepare the following list of MySQL interview questions for you to use in your next interview.

So, in this article, you will see from basic to more advanced questions related to MySQL.

Question: Suppose you have a table called “Person” in your database, like the one below. How would you replace all the null values in the “Firstname” collumn, during retrieval time, with the value “Anonymous”?

Firstname Lastname Dayofbirth ….
John Wayne 26/05/1907
Null Null 23/03/1980

Answer: The most basic way would be to use the function “ifnull” in your select statement, like the example below:

SELECT ifnull(firstname,’Anonymous’) AS ‘Name’ FROM Person

Another more flexible option is the use of the COALESCE function, which accepts two or more parameters and returns the first non-null value:

SELECT coalesce(firstname,’Anonymous’) AS ‘Name’ FROM Person

To have further information, check Control Flow Functions on dev.mysql.com and MySQL COALESCE() function on w3resource.

How would you restrict the number of rows returned in a resultset?

Answer: You would most likely use the LIMIT keyword in your SELECT statement, see the example:

SELECT firstName FROM person LIMIT 100 ;

To have further information, check Limit Optimization on dev.mysql.com.

What query would you use to get the current date?

Answer: You execute this query:

SELECT CURRENT_DATE();

The parenthesis is optional.

To have further information, check Date and Time Functions on dev.mysql.com.

How would you retrieve the total number of records returned by a particular SQL command?

Answer: There is a specific function for this purpose. It is the COUNT function, which you would use in your SQL statement like the example below:

SELECT COUNT(*) FROM TableName;

To have further information, check Counting rows on dev.mysql.com.

Explain the COUNT function?

Answer: This function returns the number of items found in a particular command.

It is important to note that if you choose a particular column as a parameter to your COUNT function, it does not count NULL values.If they are important to be counted, you should use the IFNULL function we have already covered.

To have further information, check Counting rows on dev.mysql.com.

What are JOIN statements? Please, name the different types of join expressions possible in MySQL and explain their purposes and differences?

Answer: JOINs are instructions to combine data from different sets of data. The following are the different types of join expressions available in MySQL:

  • INNER JOIN: this will generate a set of records with the tables involved only for the tuples that attend the “ON” statement equality. In the below example, it will only bring tuples/records where a person has an address.

SELECT * FROM person p INNER JOIN address a ON p.id = a.person_id

  • LEFT JOIN: Left join is similar to INNER JOIN but all the data in the left table will be selected, independent if they have any relation to the table on the right or not. So the result from the following query might bring records of persons with no address.

SELECT * FROM person p LEFT JOIN address a ON p.id = a.person_id

  • RIGHT JOIN: Right join is identical to LEFT JOIN, with the difference that all the data in the right column will be selected regardless of whether the data in the right column does or does not match the data in the left column.

SELECT * FROM person p RIGHT JOIN address a ON p.id = a.person_id

  • STRAIGHT JOIN: Straight join tells MySQL to always read the left table before the right table. There are few cases where the normal join can put the tables in the wrong order.
  • CROSS JOIN: Cross join is the type of join in which for each record of the first table, all records of the second table will be related, i.e. all records of the first tables are queried and is created a Cartesian product of the records from the first table with the records of the second table.

    Table A and B, showing a CROSS JOIN

    Imagine you want to implement a fast way to do a speed dating program. You could accomplish that using a CROSS JOIN between tables A and B.

  • NATURAL JOIN: Similar to INNER JOIN but it is not required to identify which columns will be compared, as it will make the comparison between fields with the same name.

To have further information, check JOIN on dev.mysql.com and http://www.sql-join.com/

Could you please explain what are primary and foreign keys used for?

Answer: A primary key is used to identify an entity. It allows the object to be uniquely identified. For this, when a field is marked as PK, the database will not allow duplicate values to be stored.

A foreign key, on the other hand, is used to identify an object that is being used or referenced in another table. This is the principle of a relational database. A foreign key can only be foreign if it is primary in another table. The database manages this relationship, including preventing a primary key from being changed or removed if it is being referenced by a foreign key.

References:

Could you please explain what are Stored Procedures?

Answer: Stored procedures are SQL statements that can be written to the database and called anytime.
They are useful when:

  • an SQL statement is used too often;
  • for standardizing access to the database;
  • the query needs to be accessed by an external application.

Check dev.mysql.com creating procedure page and tutorial about stored procedures.

Could you please explain what are views?

Answer: Views are virtual tables, or even better, stored queries in the database that will produce a result. In a view we can combine data from one or more tables, enter data or do other DML operations. A view does not store the data itself, it always depends on the query that is stored to generate its results.

Example:

CREATE VIEW example as
SELECT * FROM websites WHERE size=’big’

Check dev.mysql.com page about creating views to learn more.

Please explain happens when a column that is set to AUTO_INCREMENT reach its maximum value?

Answer: Basically no new record can be stored in this table. What happens is that the auto increment stops working, or incrementing, which means any further inserts will produce an error, since the key has been used already.

Check dev.mysql.com page about AUTO_INCREMENT.

How to get the MySQL version using a SQL command?

Answer: You can execute the command:

SELECT VERSION() ;

In this case, the parenthesis is required.

Learn more about select function and other information functions on dev.mysql.com.

Can you name some available types for storing text data?

Answer: There are eight data type for string formats:

  • CHAR, VARCHAR
    These two types are very similar: CHAR columns can set a maximum length limit from 0 up to 255 chars. VARCHAR, on the other hand, has a VARiable length. The maximum size can be set from 0 up to 65,535.
  • BINARY, VARBINARY
    Similar to CHAR and VARCHAR, with the main difference that they don’t store strings with a sequence of characters, but as a sequence of bytes.
  • BLOB, TEXT
    BLOB, or Big Large Object can hold a variable amount of data in binary format. TEXT is the blob equivalent for character strings.
  • ENUM
    Enum stores strings, but they limit the values to a fixed set of options. Example: taste ENUM(‘sweet’, ‘sour’, ‘salty’, ‘bitter’)
    The advantage is that MySQL can optimize the storage of the information.
  • SET.
    Similar to ENUM, but allows the storage of several values from a list of possible choices.

What is the difference between DATE, DATETIME, TIMESTAMP and TIME?

Answer:

  • DATE: It is used for values with a date part but no time part. MySQL retrieves and displays DATE values in ‘YYYY-MM-DD’ format. The supported range is ‘1000-01-01’ to ‘9999-12-31’.
  • DATETIME: It is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in ‘YYYY-MM-DD HH:MM:SS’ format. The supported range is ‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’.
  • TIMESTAMP: It is used for values that contain both date and time parts. TIMESTAMP has a range of ‘1970-01-01 00:00:01’ UTC to ‘2038-01-19 03:14:07’ UTC.
  • TIME: It saves values in ‘HH:MM:SS’ format (or ‘HHH:MM:SS’ format for large hours values). TIME values may range from ‘-838:59:59’ to ‘838:59:59’. The hours part may be so large because the TIME type can be used not only to represent a time of day (which must be less than 24 hours), but also elapsed time or a time interval between two events (which may be much greater than 24 hours, or even negative).

Reference:

What is the difference between CHAR data type and VARCHAR Data Type?

Answer:

  • CHAR type is used to define a fixed length of a column. The length value could be in the range of 0-255.
  • VARCHAR length is adjustable up to 65,535.
Value Char (4) Storage Required VarChar(4) Storage Required
‘           ‘ 4 bytes 1 bytes
‘ab’ ‘ab      ‘ 4 bytes ‘ab’ 3 bytes
‘abcd’ ‘abccd’ 4 bytes ‘abcd’ 5 bytes
‘abcdefg’ ‘abccd’ 4 bytes ‘abcd’ 5 bytes

Source: https://dev.mysql.com/doc/refman/5.7/en/char.html

What is an Index?

Answer: Index make it easier to find content, so MySQL can find content easier than searching it page by page. It always depends on whether the indexes are well defined.

Key benefits:

  • They are able to reduce the amount of data the server would have to examine.
  • They are able to help the server to sort (eg ORDER BY) and avoid creation of temporary tables.

When should you create a new index?

Answer: You should configure indexes for the fields that you use in WHERE. You should first find the fields that are taking time and resources from the server and then create the index.

References:

About the MySQL Query Cache, what are the rules for a query to be cached or not?

Answer: The quick answer is that the queries must be identical for the cache to store properly and then give a hit for already cached queries. Although this is a simple answer, it is unfortunately not completely true, because even in this case the cache might give a “miss”:

  • If the query contains specific functions;
  • If It contains user-defined functions (UDFs) or stored functions.
  • If It contains user variables or local stored program variables.
  • If It contains tables in the MySQL, INFORMATION_SCHEMA, or performance_schema database.
  • If It contains any partitioned tables.

To have a complete list of cases where the cache will not work, check the query cache operation, from dev.mysql.com.

What are triggers and what types of triggers are in Mysql?

Answer: Triggers are SQL commands that can be specified to be run automatically when some event is issued. There are 6 opportunities for you to trigger your code automatically:

  • BEFORE INSERT
  • AFTER INSERT
  • BEFORE UPDATE
  • AFTER UPDATE
  • BEFORE DELETE
  • AFTER DELETE

Learn more about the Trigger syntax on dev.mysql.com

How to create a new user with a SQL command:

Answer: CREATE USER ‘newuser’@’localhost’ IDENTIFIED BY ‘password’;

Describe the SQL command you would use to set permissions to specific existing user?

Answer: A GRANT statement would be the way to go.

GRANT ALL PRIVILEGES ON database.table TO ‘newuser’@’localhost’;

See more about the GRANT syntax on dev.mysql.com.

What is the default port for MySQL Server?

Answer: 3306.

What is MariaDB and how does it relate to MySQL?

About the question: I would ask this question to assess how much is the candidate aware of the developments related to MySQL.

Answer: MariaDB is a fork of the MySQL project made by the original developers once Oracle acquired MySQL. They are very much compatible with each other.

Check what is MariaDB to know more on mariadb.com.

What is the difference between InnoDB and MyISAM? When should you prefer one over the other?

Answer: Both InnoDB and MyISAM are storage engines for MySQL.

The main difference lies in the fact that MyISAM does not provide support for transactions nor foreign keys. The question is why would one choose to use MyISAM?

If your needs are much more about reading than write, that it is a good option because it has a better performance. Especially updates and deletes are problematic in terms of performance and fragmentation of the rows. Use OPTIMIZE TABLE command to defragment the rows.

Since version 5.5, the default engine in MySQL is InnoDB. In most normal use cases it has a better performance than MyISAM and provides the more important features, special support for ACID-compliant transactions and foreign keys.

That’s why, if you want to use MyISAM engine in any specific table, it is necessary to set the ENGINE, as shown in the below example:

CREATE TABLE mylog (i INT) ENGINE = MYISAM;

References: