BlogBlogBlogIT Outsourcing

Software development models

Software development models

Software testing is an integral activity of software development activities. If the software development process is the backbone that creates the basic software programs, then the testing process will cover the muscles in accordance with customer requirements to help complete a qualified figure. Knowing the soft development model will help you have a view of orienting and building the right, more effective and appropriate testing activities.

In this article, we will share with you 3 popular software development models that’re widely used in the technology space with their pros and cons.

1. Waterfall – Software models

Waterfall software development methodology is the model when all stages are clearly defined at the beginning, and the development process will strictly follow a pre-defined plan without much flexibility to adjust things.

Stages of development in the Waterfall model:

・Requirements collecting: collect information about product details and features from customers as much as possible.

・Design: plan which programming language (Java or .NET, etc.) you will use, which database (Oracle or MySQL, etc.) as well as the general features and architecture of the product. Products.

・Construction: After design is the construction phase (writing code for the product).

・Test: check if the product is built according to the customer’s original requirements or not. 

・Deployment: Deploy products to customers.

・Maintenance: After deploying a product to a customer, you may receive a request from a customer to customize or modify the product.

Waterfall-software-models

Waterfall software development model

Advantages

Disadvantages

The stages are clearly defined inputs and outputs     

Requires all software requirements to be clearly defined at the outset of the project. But most practical projects that require software often contain uncertain issues.
Software products are formed through a sequence of clearly sequenced activities. The actual project is rarely done fully during the project cycle. Besides, the close date of sending a program to customers or being modified directly leads to the software specification not fully reflect what was modified in the source code.
There are hidden risks that can only be detected at the final stage and the cost to repair can be very high.

2. V-model

V-model is a successor to the waterfall software development model yet adding testing phase to each development phase. Corresponding to each stage of the development cycle is the corresponding test phase as the below image. The left side of the V-model is the software development cycle (life cycle). And the right of the V-model is the corresponding test operation.

Vmodel-software-models

V-model in software development

Advantages

Disadvantages

Simple, easy to use. Few flexibility and rigidity exist. It is also shown that every step must have one – test stage, if the project requirements are not too complicated and easy to implement, then performing many such tests is time consuming.
There are activities, specific plans for the testing process. Like the waterfall, the project’s product only appears when all the steps are completed, without the original prototype. 
Save time, and have a higher chance of success than the waterfall. If there is a technical change in the middle, it will have to go back to the first step, redo, update the document.
Testing activities are focused and carried out in parallel with activities related to the required specification and design. Be proactive in bug detection, find bugs right from the start.

3. Agile – Software models

Agile is the “iterative” development model. In this type of model, software development is carried out in stages and each stage only focuses on developing one or several product features. In addition, each project is divided into several small areas for ease of use and change when customers request changes. Every small part of the project will be tested right during the project. It is required to meet regularly because in Agile at each time the team must focus on developing an area of the project.

Agile-software-models

Agile software development model

Advantages

Disadvantages

Agile is a great choice for small projects because small projects often have unspecified requirements and can change often. Lack of emphasis on design and required documentation
With Agile, customers can preview each part of the project during the development process. Because Agile develops software in an incremental way, which can give customers a preview of each completed part. The size of human resources is usually limited to 7 to 10 people, and it will be a big problem if the required human resources exceed this figure, for example during the exchange meetings.

For more information about Testing services, please contact us

———————————————————–

Lotus Quality Assurance (LQA)

Tel: (+84) 24-6660-7474

Email: [email protected]

Website: https://www.lotus-qa.com/

Youtube: Lotus QA channel

Software TestingSoftware Testing

The psychology of testing

The psychology of testing

The following factors influence the success of testing. All of the testers should keep these in mind before they start to do testing.

 

Comparison of the mindset of the tester and developer

The testing and reviewing of the applications are different from the analyzing and developing of it. By this we mean to say that if we are building or developing applications we are working positively to solve the problems during the development process and to make the product according to the user specification. However while testing or reviewing a product we are looking for the defects or failures in the product. Thus building the software requires a different mindset from testing the software.

 

The balance between self-testing and independent testing

The comparison made on the mindset of the tester and the developer in the above article is just to compare the two different perspectives It does not mean that the tester cannot be the programmer, or that the programmer cannot be the tester, although they often are separate roles. In fact programmers are the testers, they always test their component which they built. While testing their own code they find many problems so the programmers, architect and the developers always test their own code before giving it to anyone. However we all know that it is difficult to find our own mistakes.

So, programmers, architects, business analysts depend on others to help test their work. This other person might be some other developer from the same team or the Testing specialists or professional testers. Giving applications to the testing specialists or professional testers allows an independent test of the system. This degree of independence avoids author bias and is often more effective at finding defects and failures.

There is several level of independence in software testing which is listed here from the lowest level of independence to the highest:

  1. Tests by the person who wrote the item.
  2. Tests by another person within the same team, like another programmer.
  3. Tests by the person from some different group such as an independent test team.
  4. Tests by a person from a different organization or company, such as outsourced testing or certification by an external body.

 

Clear and courteous communication and feedback on defects between tester and  developer

We all make mistakes and we sometimes get annoyed and upset or depressed when someone points them out. So, when as testers we run a test which is a good test from our viewpoint because we found the defects and failures in the software. At the same time we need to be very careful as to how we react or report the defects and failures to the programmers. We are pleased because we found a good bug but how will the requirement analyst, the designer, developer, project manager and customer react.

  1. The people who build the application may react defensively and take this reported defect as personal criticism.
  2. The project manager may be annoyed with everyone for holding up the project.
  3. The customer may lose confidence in the product because he can see defects.

 

Automated TestingBlogEmbedded TestingManual TestingSoftware Testing

Test design techniques

1. What are the Test design techniques?

  • Basically, Test design techniques help us choose a good test set from the total number of tests possible for a given system. There are different types of software testing techniques, each with its own strengths and weaknesses.
  • Exhaustive testing is not possible, so Manual Testing Techniques helps to reduce the number of test cases while ensuring the quality of the test, helping to identify test ranges and conditions that are difficult to identify.

2. Types of Test design techniques

There are many types of Test design techniques, but there are two main types:

2.1. Static testing technique

Static testing is a type of testing technique that does not execute source code or do not run software systems, such as checking, reviewing specification documents, design documents, source code to find errors.

It is done early in the software development life cycle and so it is done in the verification process.

Most static testing techniques can be used to test any form of documentation including source code, design and model documentation, functional specifications, and required specifications.

Static testing technique usually includes the following methods:

  • Informal review: an evaluation process that does not require an archive of the meeting, nor does it need to be recorded.
  • Walkthroughs: This is a type of instruction, explained by the person who is familiar with the software logic, in order to transfer knowledge to the participants in the test cycle.
  • Technical review: This method focuses on the technical evaluation of the software. Usually led by a moderator or someone with technical knowledge with technical experts involved. This is a discussion focused on reaching consensus on technical content to make a decision
  • Inspection: This method is also operated by moderators. Its purpose is to clearly define the role of each person in the process as well as the input and output criteria of the software. Thereby finding errors as well as aggregating and analyzing to optimize processes.

2.2. Dynamic testing technique

Dynamic testing technique is a type of testing to confirm the function of the application when the code is executed / by executing the code. In short, dynamic testing is performed by actually using the application and seeing if a function works the way it is expected.

Dynamic testing includes 2 types:

+ Whitebox testing: Consider how the code works inside. For this type of test, testers need an understanding of the code.

+ Blackbox testing: Check that the function of the software application is working as expected. Blackbox testing 2 types:

  • Functional testing
  • Non-Functional testing

Test design techniques

In the next articles, we will mention types of test design techniques in detail. 

Read  Black box test design technique and White box test design technique.

For more information about Testing services, please contact us

———————————————————–

Lotus Quality Assurance (LQA)

Tel: (+84) 24-6660-7474

Email: [email protected]

Website: https://www.lotus-qa.com/

Youtube: Lotus QA channel

Automated TestingAutomated TestingEmbedded TestingEmbedded TestingManual TestingManual Testing

White box testing

White box testing

Any one software product is definitely at fault because software products are built by humans. Therefore, an independent person, group, or organization will need to be tested to see if the product has any problems or errors. For software testing, we need to have effective testing strategies and techniques for each level of testing. Software testing consists of two parts that require different skills, white-box testing and black-box testing.

In this topic, I will delve into the white box testing. To better understand the technique of white box testing (White-box testing), we take a look at the following contents:

1.What is White box testing

White box testing is a software testing method in which the internal structure, design or implementation of the item being tested is known to the tester. The tester chooses inputs to exercise paths through the code and determines the appropriate outputs. So Programming know-how and the implementation knowledge is essential.

2. Subjects of application

The object to be tested is a software component. The software component can be a function, a function module,…

3. Levels Applicable To

White Box Testing method is applicable to the following levels of software testing:

  • Unit Testing: For testing paths within a unit.
  • Integration Testing: For testing paths between units.
  • System Testing: For testing paths between subsystems.

However, it is mainly applied to Unit Testing.

4. Pros and cons of White box testing

Pros

  • Testing can be commenced at an earlier stage. 
  • Testing is more thorough, with the possibility of covering most paths.

Cons

  • Since tests can be very complex, highly skilled resources are required, with a thorough knowledge of programming and implementation.
  • Test script maintenance can be a burden if the implementation changes too frequently.

5. Common white box testing techniques

5.1. Baseline test – Line graph

  • A technique used in white box testing was first introduced by Tom McCabe. The line graph is similar to the program control flow graph.
  • Baseline test – Line graph is one of many methods of algorithm description. Besides, this is a visual method that shows us easily the components of algorithms and relationships
  • Contacts in implementing these components.
  • Basic line techniques – flow graphs can help test case designers get a degree of procedural complexity.
  • Consists of 2 types of components: nodes and arcs connecting them.
  • Types of buttons in the control line graph:

White box testing-button-control line

  • Types of structure components of line graphs:

White box testing-structure-components

Example:

If the control flow graph contains only binary decision nodes, then we call it control flow graph of a binary. Also, we can always detail any control flow graph into a binary control flow graph.

White box testing

5.2 Testing based on control flow

  • Execution path is a script to execute the corresponding software unit. In addition, it is an ordered list of commands executed for a specific run of the software unit, starting from the entry point of the software unit to the ending point of the software unit.
  • Each software component has from 1 to n (possibly very large) different implementation paths.
  • The objective of the control flow test method is to ensure that all the execution paths of the software units under test are run properly. But in reality, the effort and time to achieve the above goal is very large, even on small software units.

For example: the following code

for (i=1; i<=1000; i++) for (j=1; j<=1000; j++) for (k=1; k<=1000; k++) doSomethingWith(i,j,k);

only one execution path, but very long

For more information about Testing services, please contact us

———————————————————–

Lotus Quality Assurance (LQA)

Tel: (+84) 24-6660-7474

Email: [email protected]

Website: https://www.lotus-qa.com/

Youtube: Lotus QA channel