2017-04-28

Release Note

Release note is a technical document written by technical writer which contains new functions of that build as well as know defects of the product.
It is used as a communication tool between development team and client.

Normally the content of release note includes following:

  • Header - Name of the document, which carries product name, release number, release date, release note date and version.
  • Overview - An overview of the product and changes to the recent software version.
  • Purpose - An overview of the purpose of the release notes which lists the new feature, enhancements and defects of the current build.
  • Issue Summary - Provides description about the defect.
  • End-User Impact - Provides information about the end-users impact due to the defect.
  • Contact - Support contact information.

2017-04-17

Defect Triaging

Triaging refers to deciding the order/sequence of treatment of patient

------Wikipedia



Bug/Defect triaging is the process where bug/defects are screened and prioritized. It usually happens at bug triaging meeting.

During meeting, all new defects are analyzed and divided into categories, assigned priority and priority. Existing defects are reassigned if necessary.


//http://www.testingdiaries.com/defect-triage-meeting/

Key Roles for Tester

Test Planning & Preparation 
review and contribute to test plans
analyzing, reviewing and assessing requirement and design specification
identify test condition
create test design, test case, test procedure specification and test data

Test Execution
set up test environment
execute and log tests
evaluate result
document problem found
monitor test and test environment

Throughout STLC,
review other's work (specification, defect report , test result)

Difference between functional and non-functional testing

Functional testing is the testing of the features of the software which are necessary for software to work. It is conducted against business requirement.

Non-functional testing is the testing related to the behavior of the system. It includes load test, performance test, security test, usability test,  reliability test and etc.

Functional testing content usually is pre-defined by user as the user knows what he/she wants the software to do. However, non-functional testing is difficult to summarized as user themselves are not aware of the non-functional requirements.

Non-functional test is normally conducted after functional test.

Difference between system testing and system integration testing

System integration testing:   individual modules are combined and tested together
System testing: testing the system as a whole.

System integration testing:   testing the interface between modules, it can be top-down, bottom up or big bang approach depending on development process.
System testing: it tests out end-to-end business scenario.

System integration testing:  it can be tested multiple times when one modules is complete.
System testing:  it is conducted in the final stage after integration has completed. 

System integration testing:   low level testing
System testing:  high level testing

Why Need Automation Test

Why:

1. Reduce cost & time
Execution of similar or same test case with different test data can be easily programmed into automation test which could be done in short period of time, rather than a tester manually execute these test cases for days.


2. Improve accuracy and reliability
Testers are human, the longer he/she works, the more possibility that he/she will make mistakes in test execution, such as missing out input or wrongful input.


When
Avoid duplicate test, when code repeated

Regression test

Pre-requisite action



How
Visual Studio + Selenium + Selenium Chrome + NUnit + ExcelDataReader

or

Java + JUnit






Functional Document and Business Document

Asking the question about difference of fictional document and business document is similar with difference with function requirement and business requirement.

1. Both documents come into play at different stage.
Business requirement is developed by business analysis at early stage of project initiation.
Functional document is developed when business document is approved by client/stakeholders before software design phase.

2. Both documents contain different information for different audiences.
Business document contains business requirement at the standpoint of end user, such as client and customers.
Functional document, on the other hand, contains technical requirement for architects and developers. These requirements are the baseline that developers design, implement software based on.

3. Both documents serves same purpose
Both business and functional documents are created to ensure the quality of delivery software/programme/products.
Business analyst create business document so that client's requirements are fully covered.
Business analyst create functional document so that team members such as development team and testing team understand the requirement in technical term, so that the final product will not be deviated from original design.

2017-04-12

Taking Screenshot & Handling Cookies

Screenshot Code

 public string timestamp()
        {
            return new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date());
        }



//Take screenshot and save to file
Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
string fileToSave = "screenshot_" + timestamp() + ".png";
ss.SaveAsFile(fileToSave, ScreenshotImageFormat.Png);


//Simplified As:
((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(fileToSave, ScreenshotImageFormat.Png);



Handling Cookies

driver.manage().getCookies();   // Return The List of all Cookies
driver.manage().getCookieNamed(arg0);  //Return specific cookie according to name
driver.manage().addCookie(arg0);   //Create and add the cookie
driver.manage().deleteCookie(arg0);  // Delete specific cookie
driver.manage().deleteCookieNamed(arg0); // Delete specific cookie according Name
driver.manage().deleteAllCookies();  // Delete all cookies

2017-04-10

Install Chromedriver on MacOS

1. Download chromedriver
https://sites.google.com/a/chromium.org/chromedriver/


2. Add following code to your Java class at the begining.

//Check your system info
String os = System.getProperty("os.name").toLowerCase();

//Load different driver for different OS
if (os.contains("mac")){
    System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"/chromedriver");
}else{
    System.setProperty("webdriver.chrome.driver",     System.getProperty("user.dir")+"\\chromedriver.exe");
}

Extension to IWebElement

The extension to IWebElement

 public static class Program
    {
        //Extention to IWebElement, Clear Textbox before Input
        public static void EnterValue(this IWebElement element, string input)
        {
            element.Clear();
            element.SendKeys(input);

        }


        //Extention to IWebElement, Wait for 0.5s After Every Click
        public static void ClickAndWait(this IWebElement element)
        {
            element.Click();
            Thread.Sleep(500);

        }

2017-04-09

Implicit & Explicit Wait

##IMPLICIT WAIT##
Implicit wait is to inform IWebDriver to wait for certain amount of time for certain action in general.

Example:
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);



 Note:
SetScriptTimeout(), as well as ImplicitlyWait() and SetPageLoadTimeout() will be removed in future Selenium versions. In the source code you can see it has Obsolete annotation

[Obsolete("This method will be removed in a future version. Please set the AsynchronousJavaScript property instead.")]

Therefore you can change SetScriptTimeOut and PageLoadTimeout into following:

driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromMilliseconds(10);


Sleep Command
Rarely used, not recommended.
Thread.Sleep(6000);



##EXPLICIT WAIT##

In explicit wait, system waits for certain amount of time when condition requirement is met.

Example:
var driver = new FirefoxDriver();
driver.Navigate().GoToUrl("www.google.com");
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
Assert.AreEqual(true, wait.Until(d => d.ElementIsPresent(By.ClassName("c2"))));
Assert.AreEqual(true, wait.Until(d => !d.ElementIsPresent(By.ClassName("c2"))));

2017-04-08

Example of Using Function in C#

class Program

{
    static void Main()

    {
        //define a new function
        Func<int, string> newFunction = definedFunction;
        Console.WriteLine(newFunction(1234));  //console will print string "1234"
    }
    //define functions with string return
    static String definedFunction (int index)
    {
        return index.ToString();
    }
}

2017-04-05

Sanity Testing && Smoke Test

Sanity check is usually done before testers carrying out actual testing cases, the purpose of sanity test is to verify the readiness of application.


Smoke test, however, on the other hand is to verify the readiness of test environment.



Key Benefits of Agile Methodology

 Agile Methodology refers to set of principles of software development under which requirements and solutions evolved through small iterations.

Key benefit of using Agile methodology is:

Ability to change
In agile model, list of requirements are created as to-do list for the project, and during each iteration/sprint, several requirement will be implemented. Normally one iteration would be 2-4 week time. Therefore if customer/client asks for requirement change, it could be quickly implemented or revised during next sprint/iteration.


Fast delivery
Each iteration/delivery will come up with a demo to demonstrate what has been implemented to customer/client instead of waiting for few month as in waterfall model.

Tight team collaboration
In agile model, there is only one scrum master in charge of requirement management and the team members work closely with each other. The role of each member is not fixed as in waterfall model. One can be a tester if the other tester is not available.


Low risk
Because of small iterations to implemented certain requirements. Feedback from customer/client is constant therefore the team is pretty sure that they were working at the right direction.


How and why do we tag the complexity and severity to a defect?


Prioritizing defects by assigning complexity and severity is good for defect management.

Not all defects need to be rectified immediately and not all defects affect the proper function of software, there might be walk around to avoid certain defect before it is rectified.

Prioritized defect will help developers to focus on the urgent defect which hinder the quality of software within schedule timeline, and also for proper planning.


2017-04-03

Definition of Alpha/Beta testing


1. Depends on whether developer involved:
Alpha testing, done by developer

Beta testing, done by tester or client, depends on if test team exists

2. Depends on environment testing carried out
Alpha testing done within development environment.
Beta testing done within customer environment.


In certain sense, above two definitions are bit similar.

SDLC vs STLC ??


SDLC stands for software development life cycle. It mainly refers to stages that software goes through during development:
Requirement Analysis
Design
Implementation
Testing
Evolution



STLC stands for software testing life cycle.
When a requirement is given to test team, testers study and analysis the requirement. A test plan will be drafted based on the estimation of resources, manpower, budget and sent to management level for approval.
Detail test cases will be developed once test plan receives approval. Test execution phase is the phase when defect will be logged and defect management take place.
Regression test is for verifying existing function/features not be affected by implementing new features or fixing up previous defect/bug. Project would be ready for delivery once it pass UAT test.



What is the connection between SDLC and STLC?
SDLC and STLC are actually go parallel.

Requirement Analysis
Business Analyst gather information and convert business requirement into technical functional requirement.
Test team review and analysis the requirement. They identify the testing requirement such as testing types, testing resources.

Design
Architect design the logic of software.
Test manager/lead develop the test plan for overall testing activities.

Coding
Development team does the coding
Testers develop detail test cases.

Testing
Test execution: manual testing, automation testing, unit testing integration testing and system testing and bug reporting.
 
Deployment
Final testing and deployment is done here.
Test report is finalized.

Maintenance
Maintenance test.


2017-04-02

Which phase of SDLC we write test case




In which phase of SDLC we can write test cases?
Actually in all phases we can write test cases.

The test activities happens at every phase of software development life cycle.
As we see in the V shape diagram above, system testing case can be prepared when business analyst carrying out requirement analysis, integration testing plan can be drafted when high level design is completed. Unit testing cases can be written when low level design approved.

What are the fields in a bug report

Bug report sample:



Key info of bug report shall contains the following:

Bug ID:  (unique id )
Project ID: (related project)
Date:  (reported date)
Environment: (under which environment, the bug occurred)
Status:  (indicate which status the bug)
Severity:  (how serious the bug is affecting system)
Priority:  (should we treat it first or could we defer )
Resolution: ( has it been treated yet)
Reported by: (bug finder)
Assigned to:( (who will be responsible for fixing it)
Target Milestone:  (do we have a timeline/schedule for fixing the bug?)
Component:

Summary: (one line summarized bug info)
Keywords: (used as tag)
Description: (in detail)

Defect Management


The life cycle of a defect can be summarized as follow: 




When a defect is reported during software development process, it is usually logged by tester into bug tracking system or defect management system. The earlier the defect is rectified, the less cost it could bring to project.




Defect management is the practice of managing defect throughout its life cycle with collaboration of multiple teams aiming at improving software quality by defect detection and defect prevention.

Setup VNC on Ubuntu 20.04

  sudo apt update sudo apt install xfce4 xfce4-goodies sudo apt install tigervnc-standalone-server sudo apt install tightvncserver vncserver...