Software Testing

Software testing is a main part of software quality assurance. In software testing we check and evaluate whether the software has obtained and fulfilled specified requirements. Because of human errors, compatibility errors and many other things, it’s usual that existing product is differs from the required one. So, it’s essential to conduct a software testing process in Software Development Life Cycle (SDLC).

In waterfall model, testing is comes after implementation phase. But in incremental models like agile, testing process is conducted after every iteration. And after finishing implementation the end product will be tested again.

Testing methods

White-Box testing

In here the tester or the QA engineer should have to study the source code and gain a thorough knowledge about the functions, logics and the structure of the code. While reading the source code he has to identify what are the units of the code that occur the misbehavior.


Black-Box testing

In here the tester does not have access to the source code and he tests every function by the point of view of the end user. The tester doesn’t need any knowledge about programming languages and implementation.


Grey-Box testing

Tester has a rough idea about the structure and the components of the system but hasn’t a detailed knowledge about the internal logics of the functions. Tester doesn’t have access to the source code but can see the database and other documents relates to designing. So, the Grey-Box testing can be considered as a combination of White-Box testing and Black-Box testing.


Types of testing

There are two main types of software testing.

          1) Manual testing

          2) Automation testing

Manual testing

This is the way how to test the software without any automated testing tool. Quality Assurance engineer or the tester act as the client and uses the software and check whether the functions behave according to the required condition or whether it has any bugs. In here the tester tries the software according to different scenarios or uses different test cases. He writes all the possibilities in test cases and tryout. If the delivery is urgent, he tries at least sufficient amount of test cases.

Here is the basic structure for test cases

Test No

Description Step Expected Response Actual Response Status


Test 1
Test 2
Test 3
Test 4

In Step field we write every possibility of actions/inputs for the function to be tested. In expected response field we write the actual output or the response we expected through that function according to the given inputs. In actual response field we write what we actually get. In status field we write whether that function works or not for the given inputs (by comparing expected and actual responses). If the status is “fail”, we write the error in coding a logic that causes the program to malfunction, in the defect field.

The basic manual testing process is as below.


Unit testing

Break the whole system into small units and each unit holds a separate function. Then test each and every function according to the unit basis providing inputs one at a time.

Integration testing

Then combine those units and check how it works when those units functions collaboratively.

System testing

After integration testing we check whether the system fulfill the requirements in the SRS document for data that similar to real life scenarios.

User acceptance testing

Give the system to sample set of users to experience and let them to check the system for different privileges according to real life scenarios.

Automation testing

This is the way how to test the software with a testing tool or writing scripts. It is a replacement for manual process and increases the efficiency and accuracy of testing process and reduces budget allocated for testing. Automation testing is suits for large scale projects, complex/ urgent projects, and projects with stable requirements. Automation testing process is as mentioned below.


For automation testing we can use testing tools like Selenium, Appium, SilkTest, Cucumber, Test Studio, RSpec, etc.



Cloud Computing

The simple meaning of cloud computing is the process of storing and accessing data and programs on remote servers accessed over a direct internet connection on a pay-per-usage basis, instead of storing them in our computer hard drive.

Cloud Computing

Three types of cloud computing

Private cloudService that is controlled and exclusive to the user. Infrastructure is use to operate a single organization

Public cloud Share resources among community of users. Service providers use the internet to make resources, such as applications and storage, available to the general public, or on a public cloud

Hybrid cloud- Is a combination of both private and public cloud. It enables to move workload between private and public platforms.

Three models of cloud computing

Software as a service (SaaS)- Is a software distribution model in which a third-party provider hosts applications and makes them available to customers over the Internet.

Platform as a service (PaaS)- Is a cloud computing model that delivers applications over the Internet. Users only need to log in and start using the platform given by the PaaS provider.

Infrastructure as a service (IaaS)- Is a cloud computing model which provides virtualized computing resources over the Internet. A third-party provider hosts hardware, software, storage, servers and other infrastructure components and make them available to its users.

Advantages of cloud computing

• Reduce cost by minimizing hardware requirements
• Increase collaboration through easy accessibility and visibility
• Automatic software updates and maintenance
• Flexible adoptability to the bandwidth demand
• In cloud computing, data is stored in the cloud. So we can access data without our machines and in if someone has stolen our laptop we can remotely wipe data from it and prevent unauthorized access to our data
• Cloud-based backup and recovery solutions

Disadvantages of cloud computing

• Service provider allows minimal control to the end users
• Switching from one vendor to other may arises compatibility issues
• Service provider may not be able to provide similar service throughout the whole period due to increasing customer amount and it may causes downtimes


Color Theory

In a simple form we can define color as a mixture of various frequencies of light. Number of colors is infinite and out of that human can only see which have 400nm-700nm wave length.

Shades, Tints, Tones

Shades: Colors which are derived by adding black to any hue (pure color)

Tints: Colors which are derived by adding white to any hue

Tones: Colors which are derived by adding gray to any hue

As a simple formula we can say;

Sade + Tint = Tone

Wheel of Color (Color wheel)

It is a tool which visually represents relationships between every hue in a circular manner.

Analog colors: Colors beside a certain color in the color wheel. eg: For Yellow green(light                green); it is green and yellow.

Complementary colors: In the color wheel, the color which is directly in the opposite side of a certain color is called as complementary color. As an example for Purple, it is Yellow and for Yellow, it is Purple.

        Purple <<<>>>>  Yellow


Split complementary colors: Colors besides a complementary color is called as split complementary colors.

For an example if we take Red-orange, split complementary colors are Green and Blue.


Warm colors: Colors which are located in the first half of the color wheel

Cool colors: Colors which are located in the second half of the color wheel

3 Dimensions of colors

  • Hue
  • Saturation (density)
  • Value (lightness and darkness)


This pictu8re shows how the color differs because of the light fell upon the flower in different angles. The side which is directly exposes to the light have the bright side and when the distance between the light and the flower increases, it will gradually get d

Color percentage

By mixing colors in different percentages, we can create new colors.

Color Bit Depth (Color Depth)

It is the number of bits used to indicate the color of a single pixel. Through this we can decide the number of colors a monitor can display.

Color Models

It is a kind of representation of how the colors will be appears on a paper, TV screen or on computer screen. There are number of color models and because of the characteristics of each models, their usage is differ from one to another. So, when we are choosing color model we should check whether it is the most appropriate one for our purpose. In here let’s talk about few models.

RGB [Red, Green, Blue]

This model is good for screen based designs like web applications. It is an Additive model.

CMYK [Cyan, Magenta, Yellow, Key (Black)]

This model is good for printing purposes. If we take a printout of a photograph then we should follow this model. When we use Photoshop and if are hoping to get a printout of our work, we should change the color model before we start our work. This model is a subtractive model.

YUV [Luminance, Chrominance-Red, Chrominance-Blue]

In this model we are not considering about green color because it is embedded within all the three colors. More in Luminance and less in Red and Blue. This model is widely use when creating videos.

HSV [Hue, Saturation, Value]

This model is also called as lab color model. And it is specially used in photography. And also it is use for paintings and high quality graphics. The main advantage of this model is that each of its components is directly related with basic color concepts and it is defined in a way that is similar to how humans recognize colors.