Ans. Yes, software testing is one of the most sought-after careers. Software testing professionals are high in demand in software development companies. The scope of software testing is consistently increasing in the IT industry. Software testing is a promising career with good pay.
Q2. Can I learn software testing without IT experience?
Ans. If you have no IT experience, you can learn software testing through various online courses. Software testing tools are relatively easy to learn and once you get hands-on, you are ready to use them for any application
Q3. What are the skills required for a software testing job?
Ans. The software testing jobs require various skills like good testers are Knowledge and hands-on experience of Automation tools and a Test Management Tool; basic programming languages knowledge; basic knowledge of Database/SQL; and good logical thinking.
Q4. Which type of software testing is in demand?
Ans. The top software testing trends in 2021 are Agile and DevOps, Automation Testing, API and Services Test Automation, Cloud Migration Testing, Blockchain Testing, and Mobile Test Automation.
Q5. How long does it take to learn software testing?
Ans. If you are a beginner, it would take around 2 to 3 months to learn the basics of software testing. Mastering software testing may take even longer.
Q6. Can I learn software testing on my own?
Ans. Yes, you can learn software testing on your own. You can learn it if you are someone who wants to start a career in the IT industry or if you are someone who is curious to learn various testing tools.
Q7. Can I learn software testing online?
Ans. Yes, there are multiple online resources to learn software testing online like online courses, tutorials, and videos. Naukri Learning is a one-stop destination to explore the popular software testing online courses from top universities across the world. You can visit the Naukri Learning website, browse various software testing courses, and choose the course that suits your experience level.
Ans. Software testing professionals perform various tasks, such as designing test scenarios for software usability; conducting the testing, analyzing the results, and then submitting observations to the development team, interacting with clients to understand product requirements.
Q9. What educational background is required to become a software tester?
Ans. To become a software tester, you will need to have a Bachelor’s degree in Computer Science or a related field, knowledge of software test design and testing methodologies, knowledge of programming, excellent communication, and critical thinking skills.
Ans. The salary of a software tester varies from company to company. In India, the average starting salary of a software tester ranges from Rs. 3.5 Lakhs to Rs. 6 Lakhs.
Q11. What are the job roles available in the field of software testing?
Ans. Software testing job roles are QA Analyst/Trainee Tester, QA Analyst/Software Tester, QA Analyst, Software Test Engineer, Test Manager, and Senior Test Manager. From an entry-level role, one can move to senior test engineer, test lead to test manager roles, and even can become QA lead, QA Manager.
Software Testing FAQs
Once after coding is completed, Testers will start to test application by entering all possible inputs in order to find defects in software is called as, Software Testing.
Testing software or application repeatedly or again and again manually to find defects in software according to customer’s requirement is called as, Manual Testing.
Test Engineer will write code or program or script by using tools like UFT or Selenium and run the program against the application or software where program will automatically test application and gives result as Pass or Fail it is called as, Automation testing.
There are 2 main types of software testing such as,
To prepare for your next interview on Selenium, here are some of the frequently-asked
Selenium interview questions (with answers) to help you prepare well.
Selenium is a suite of tools to automate web browsers across many platforms. It is a free, open-sourced application which caters to different testing requirements. This application also supports authoring of tests without having to learn a scripting language and provides a domain-specific language to writes tests in a number of popular programming language. It also runs on most of the modern browsers.
Due to the many advantages Selenium has to offer, it is one of popular testing frameworks and Selenium professionals are in great demand across the IT industry.
How many languages does Selenium support?
Ans. All major languages, including C#, Java, PHP, Ruby, Python.
What is automation testing?
Ans. Automation testing or Test Automation is a process of automating the manual process to test the application/system under test.
What are the different ways to find an element?
Ans. ID, Name, Tag, Attribute, CSS, Linktext, PartialLink Text, X-path
What are the testing types supported by Selenium?
Ans. Functional testing and regression testing
What is the difference between implicit wait and explicit wait in selenium WebDriver?
Ans. When an implicit wait is implemented in tests, if WebDriver cannot find an element in the Document Object Model (DOM), it will wait for a defined amount of time for the element to appear in the DOM.
An explicit wait can be used where synchronization is needed, for example the page is loaded but we are still waiting for a call to complete and an element to appear.
Which is better –implicit wait or explicit wait?
Ans. Explicit waits are better than implicit wait. Unlike an implicit wait, you can write custom code or conditions for wait before proceeding further in the code.
When should I use Selenium IDE?
Ans. Selenium IDE is the simplest of all the tools in the package and should be a great tool for naïve users as it is easy to learn with minimal acquaintances in programming language.
Explain the difference between single (/) and double slash (//) in X-path?
Ans. Single slash (/) allows the creation of ‘absolute’ path expressions, while double slash (//) allows the creation of ‘relative’ path expressions.
What is the use of X-path?
Ans. X-Path is used to find the WebElement in web pages. It is also useful in identifying the dynamic elements.
What is the difference between type keys and type commands?
Ans. Type key populates the value attribute using JavaScript whereas type commands emulate like actual user typing
What is the difference between verify and assert commands?
Ans. Assert command allows to check whether an element is on the page or not. Verify command checks whether the element is on the page, otherwise the test will carry on executing.
What is heightened privileges browsers?
Ans. Heightened privileges browsers are similar to Proxy Injection, allows websites to do something that are not commonly permitted.
Explain what is Data-driven framework and Keyword driven?
Ans. In Data-driven framework, the test data is separated and kept outside the Test Scripts, while test case logic resides in Test Scripts.
Keyword driven frameworks requires the development of data tables and keywords, independent of the test automation.
What is Object Repository?
Ans. Object repository is an essential entity in any UI automations which allows a tester to store all object that will be used in the scripts in one or more centralized locations rather than scattered all over the test scripts.
Mention 5 different exceptions you had in Selenium WebDriver?
Ans. The 5 different exceptions in Selenium WebDriver are WebDriver Exception, NoAlertPresentException, NoSuchWindowException, NoSuchElementException, TimeoutException
Which web driver implementation is fastest?
Ans. HTMLUnit Driver implementation is fastest
Most Important 50 Selenium Interview Questions and Answers 1
How to find more than one web element in the list?
Ans. It can be done using WebElement List. E.g.
List <WebElement> elementList = driver.findElements(By.xpath(“//div[@id=’example’]//ul//li”));
int listSize = elementList.size();
for (int i=0; i<listSize; i++)
{
serviceProviderLinks.get(i).click();
driver.navigate().back();
}
What is the difference between driver.close() and driver.quit() command?
Ans. Close() method closes the web browser window that the user is currently working on or the browser that WebDriver is currently accessing.
Quit() method closes down all the windows that the program has opened.
In which format does source view shows your script in Selenium IDE?
Ans. XML
What is Object Repository? How can we create Object Repository in Selenium?
Ans. Object Repository is a term used to refer to the collection of web elements belonging to Application Under Test (AUT) along with their locator values.
In Selenium, objects can be stored in an excel sheet which can be populated inside the script whenever required.
What is Selenese and what are the types of Selenese ?
Ans. Selenese is a selenium set of command which are used for running the test.
There are three types of Selenese – Actions, Assertions and Accessors
How you can convert any Selenium IDE tests from Selenese to another language?
Ans. The format option of Selenium IDE to convert tests into another programming language
To generate pdf reports mention what Java API is required?
Ans. API IText
What are the ways you can customize TestNG report?’
Ans. You can customize TestNG report in two ways,
– Using ITestListener Interface
– Using IReporter Interface
In Selenium what are Breakpoints and Startpoints?
Ans. A breakpoint is implemented to stop an execution to check if the code is working as expected till now.
A startpoint indicates the point from where the execution should begin.
What is Selenium composed of?
Ans. Selenium is a suite of tools for automated web testing and it is composed of Selenium IDE (Integrated Development Environment), WebDriver and RC, and Grid.
Can you tell me from where the term Selenium derived?
Ans. Well, it came from a joke made by Jason Huggins (the developer of Selenium) in an email, where he mocked one of his competitors named Mercury, saying that you can cure mercury poisoning by taking selenium supplements. This is from where the other email recipients took the name and the rest is history.
Why should you use Selenium as a test tool?
Ans. Selenium is a free and open source tool, and has a large user base. It helps communities and is compatible with every browser (Chrome, Firefox, Internet Explorer, etc.). Besides, it also has a great platform compatibility (Windows, Mac OS, Linux etc.)
What is Selenese?
Ans. Selenese is the language used to write test scripts in Selenium IDE.
How many programming languages does Selenium support?
Ans. Selenium supports multiple programming languages like Java, C#, Ruby, Python, Pearl, etc.
What are the different Selenium components?
Ans. Different components of Selenium are sets of tools, which include:
– Selenium Integrated Development Environment (IDE)
– Selenium Remote Control (RC)
– Selenium WebDriver
– Selenium Grid
Elaborate the functioning of Selenium Grid?
Ans. Selenium Grid sends tests to the hub, which are then redirected to Selenium Webdriver. It then launches the browser and runs the test. The tests run in parallel with entire test suite.
Can we use Selenium grid for performance testing?
Ans. Yes, but it is not as effective as Loadrunner, which is a dedicated Performance Testing tool.
Ans. Every object or control in a web page is an element in Selenium, and some of the ways to find that element in a web page include using ID, Name, Tag, Attribute, CSS, Linktext, PartialLink Text and Xpath.
Ans. POM is a design pattern responsible for creating an Object Repository for web UI elements.
What is Page Factory?
Ans. Page Factory provides an optimized way to implement Page Object Model and it has a very good memory utilization and implementation is object-oriented.
What is an XPath?
Ans. XPath is a language which helps to locate and process items in Extensible Markup Language (XML) documents. It addresses syntax based on a path through the document’s logical structure or hierarchy. XPath is used to locate a web element based on its XML path. It also stores, organizes and transports arbitrary data.
What is the difference between “/” and “//” in Xpath?
Ans. “/” or Single Slash creates Xpath from the document node/start node.
“//” or Double Slash creates Xpath with relative path from anywhere within the document.
Which test types are supported by Selenium?
Ans. So, Selenium supports –
– Functional Testing
– Regression Testing
– Sanity Testing
– Smoke Testing
– Responsive Testing
– Cross Browser Testing
– UI testing (black box)
– Integration Testing
What is the difference between type keys and type commands?
Ans. Type Keys trigger JavaScript event but the Type Command don’t. Type key simulates each keystroke using JavaScript, while whereas Type Command emulates actual user typing.
What is the difference between verify and assert commands?
Ans. Assert command helps to check the availability of a certain element on the page. The test terminates at the point the check fails, i.e. if the element is unavailable.
Verify command also helps to check the availability of a certain element on the page, but here the test goes on as all the commands run is guaranteed even if the check fails.
Can Selenium handle windows based pop up?
Ans. Since it is an automation testing tool and supports only web application testing, it can’t handle windows pop up. However, third-party tools like AutoITm and Robot class are available to handle this.
How do we handle web-based pop up in Selenium?
Ans. We can use WebDriver, which provides an efficient way to handle these pop-ups using Alert interface. Besides, there are four methods too that we can use –
void dismiss() – The accept() method clicks on the “Cancel” button when the pop-up window appears.
void accept() – The accept() method clicks on the “Ok” button when the pop-up window appears.
String getText() – The getText() method returns the text displayed on the alert box.
void sendKeys(String stringToSend) – The sendKeys() method enters the specified string pattern into the alert box.
Syntax:
// accepting javascript alert
Alert alert = driver.switchTo().alert();
alert.accept();
Tell me how can I take a screenshot in Selenium WebDriver?
Ans. You can do that by using the TakeScreenshot function and by using getScreenshotAs() method, you can save the screenshot.
Is it possible to enter a text without using sendKeys()?
Ans. Yes, we can enter/ send text using JavaScriptExecutor, and we don’t need to use sendKeys() method.
What is Junit?
Ans. It is a Java-based unit testing framework introduced by Apache.
What is Object Repository?
Ans. Object Repository refers to a collection of web elements belonging to Application Under Test (AUT) along with their locator values. Object Repository is used to store locators in a centralized location.
How can we create Object Repository in Selenium?
Ans. We can create Object Repository in an excel sheet that can be populated inside the script whenever required.
Does Selenium have any limitations?
Ans. Yes, it has.
– It supports testing of only web-based applications
– Can not test mobile applications
– Selenium can’t test Captcha and Barcode readers
– It helps to generate reports using third-party tools like TestNG or JUnit
– No ready vendor support
– User must possess programming language knowledge
This document describes a collection of standards, conventions and guidelines for designing and developing framework/scripts for java code in selenium automation. This document will help to ensure consistency across the code, resulting in increased usability and maintainability of the developed code.
1. Why selenium coding standards are so important?
Coding standards for Java are important because they lead to greater consistency within the code of all developers. Consistency leads to the code that is easier to understand, which in turn results in a code, which is easier to develop and maintain. Code that is difficult to understand and maintain runs the risk of being scrapped and rewritten.
2. Overview – selenium coding standards document
This document provides guidelines for:
Naming standards
Comment standards
Functions/Methods standards
Indentations
Automation scripts
General guidelines
2. Standards for Variables
3. Naming Variables
Variable names should be defined with data type abbreviation followed by actual variable name (English descriptors that accurately describe the variable/field/class/interface)
Example:
int intCount
String strMethodName
float ftvariableName
decimal decVariableName
object objObjectName
Domain specific terminologies should be used.
If the users of the system refer to their clients as Customer, then the term Customer for the class should be used, not client.
Mixed case should be used to make names readable.
Abbreviations should be used sparingly, but if it is used then it should be used intelligently and should be documented
For example, to use a short form for the word “number”, choose one of nbr, no or num.
Long names (<15 characters is a good tradeoff) should be avoided.
Names that are similar or differ only in case should be avoided.
The letter ‘e’ should be used for a generic exception object name.
5. Declaring and Documenting Local variables
One local variable per line of code should be used.
Local variable should be declared with an end line comment.
Declare all local variables before the functional block or in the beginning of the script.
Whenever a local variable is used for more than one reason, it effectively decreases its cohesion, making it difficult to understand. It also increases the chances of introducing bugs into the code from unexpected side effects of previous values of a local variable from earlier in the code.
Note: Reusing local variables is more efficient because less memory needs to be allocated, but reusing local variables decreases the maintainability of code and makes it more fragile.
6. Standards for Parameters (Arguments) to Member Functions
Function parameters should be named following the exact same conventions as for local variable. Example:
If Account has an attribute called balance and you needed to pass a parameter representing a new value for it, the parameter would be called accountBalance.
7. Naming Classes
Class names should be nouns, in mixed case with the first letter of each internal word
capitalized. Try to keep your class names simple and descriptive. Use whole words -avoid acronyms and abbreviations.
Example: class ReadExcelFile { ..}
8. Naming Interfaces
Interface names should be capitalized like class names. Example: interface RegesterDelegate;
interface Storing;
9. Naming Methods
Methods should be verbs, in mixed case with the first letter lowercase, with the first letter of each internal word capitalized.
Example:
ResultSet getData(String query)
void initiateExcelConnection(String fileName)
10. Naming Constants
The names of the variables constants should be all uppercase with words separated by underscores (“_”).
Example:
int MIN_WIDTH = 4; int MAX_WIDTH = 5;
3.Comment Standards
Comments should be added to increase the clarity of code.
Document something why it is done not just what it is done.
Every change to the framework/scripts should be documented in modification history. A modification history should contain the following:
Name of the person who changed the code:
Date of change:
Version:
Changed function/event:
Change description:
Note: Successful build should be ensured after checking in the scripts/changes into repository.
Programs can have four styles of implementation of comments: block, single-line, trailing and end-of-line.
3.1. Block Comments
Block comments are used to provide descriptions of files, methods, data structures and algorithms.
Block comments should be used at the beginning of each file and before each method. They can also be used in other places, such as within methods.
Block comments inside a function or method should be indented to the same level as the code they describe.
A block comment should be preceded by a blank line to set it apart from the rest of the code.
Block comments have an asterisk “*” at the beginning of each line except the first. Example:
/*
* Here is the block comment.
*/
3.2. Single-Line Comments
Short comments can appear on a single line indented to the level of the code that follows. If a comment can’t be
written in a single line, it should follow the block comment format.
A single-line comment should be preceded by a blank line. Here’s an example
of a single-line comment in Java:
if (condition)
{
/* Handle the condition. */
…
}
3.3. Trailing Comments
Very short comments can appear on the same line as the code they describe, but should be shifted far enough to separate them from the statements. If more than one short comment appears in a chunk of code, they should all be indented to the same tab setting.
Avoid the assembly language style of commenting every line of executable code with a trailing comment.
Here’s an example of a trailing comment in Java code (also see “Documentation Comments”
if (a == 2)
{
return TRUE; /* special case */
}
else
{
return isprime(a); /* works only for odd a */
}
3.4. End-Of-Line Comments
The // comment delimiter begins a comment that continues to the newline. It can comment out a complete line or only a partial line.
Example:
// Page Factory Initialization
ProductsLib productsTestDataObject = new ProductsLib())
12. Framework Code Header Comments
The framework code header should contain the following:
Member functions should be named using a full English description, using mixed case with the first letter of any non- initial word capitalized. The first word of the member function should be a verb.
Examples:
openAccount() printMailingList() save()
delete()
14. Naming Accessor Member Functions
4.1. Getters:
Getters refer to member functions that return the value of a field/attribute/property of an object.
Use prefix “get” to the name of the field/attribute/property if the field in not Boolean.
Use prefix “is” to the name of the field / attribute / property if the field is Boolean.
A viable alternative is to use the prefix ‘has’ or ‘can’ instead of ‘is’ for boolean getters.
Examples:
getFirstName() isPersistent()
4.2. Setters:
Setters refer to member functions that modify the values of a field. Use prefix ‘set’ to the name of the field.
Examples:
setFirstName()
4.3. Constructors:
In Java, constructor is a member function that performs any necessary initialization when an object is created. Constructors are always given the same name as their class name.
Examples:
Customer() SavingsAccount()
15. Function Header
Function header should contain following detail as mentioned in the below example:
Note: It’s not necessary to document all the factors described above for each and every member function because not all factors are applicable to every member function.
16. Internal Documentation:
Comments within the member functions:
Use C style comments to document out lines of unneeded code.
Use single-line comments for business logic.
Following should be documented inside the definition:
Control Structures:
comparison statements and loops
Why, as well as what, the code does
Local variables
Difficult or complex code
The processing order If there are statements in the code that must be executed in a defined order.
Document the closing braces If there are many control structures one inside another.
17. Function Complexity
Framework code should be designed and developed with minimal possible loops and conditions for reduced complexity and enhanced maintainability.
Each function should contain max 30 lines of code. If it crosses more than 30 lines, function should be broken in sub modules.
18. Function Structure
The following tips provide guidance for creating easy-to-read and easy-to-maintain code:
Modularize the code for increased reusability and reduced redundancy.
Code should be well-indented with tabs. (Tab width should be 4).
Values passed and returned to the functions should use simple variables.
The use of global variables within the function should be reduced. The scope of the variable should be decided based on the standards.
5. Indentation
Four spaces should be used as the unit of indentation. The exact construction of the indentation (spaces vs. tabs) is unspecified. Tabs must be set exactly every 8 spaces (not 4).
Lines longer than 80 characters should be avoided, since they’re not handled well by many terminals and tools.
Note: Examples for use in documentation should have a shorter line length generally no more than 70 characters. When an expression will not fit on a single line, it should be broken according to the below general principles:
Break after a comma.
Break before an operator.
Prefer higher-level breaks to lower-level breaks.
Align the new line with the beginning of the expression at the same level on the previous line.
If the above rules lead to confusing code or to code that’s squished up against the right margin, just indent 8 spaces
var = function1(longExpression1, function2 (longExpression2, longExpression3));
Following are two examples of breaking an arithmetic expression. The first is preferred, since the break occurs outside the parenthesized expression, which is at a higher level.
Following is the example of indenting method declarations. The first is the conventional case. The second would shift the second and third lines to the far right if it used conventional indentation, so instead it indents only 8 spaces.
Line wrapping for if statements should generally use the 8-space rule, since conventional (4 space) indentation makes seeing the body difficult. For example:
if ((condition1 && condition2) || (condition3 && condition4)
Folder/package structure should be created based on the functionality/purpose of the scripts/files present in the respective folder.
Example:
Generic.fetchdata: This package should contain all the java files related to fetching test data from the excel sheet for data driven test automation framework.
Generic.global: This package should contain all java files related to global functionalities like Constants.java, DateTime.java, CreateLog.java, UtilFunctions (Re-usable functions), TestBaseClass.java, etc.
Example:
Constants.java->This java file is used to maintain constant value for the overall projects.
DateTime.java -> This java file should contain all the methods to get/create current time stamps.
CreateLog.java -> This java file should contain all methods to generate the log files and capture test results.
ReadExcelFile.java ->This java file should contain all methods to read and fetch test data from excel sheet.
UtilFunctions.java ->This java file should contain all methods which are common across the application.
ConnectDB.java -> This java file should contain functions definitions required to connect database.
· PageFactory : This package should consists of all java files specific to the web element’s Ids present in the web page and domain specific functions.
· Example:
LoginPage.java
AccountPage.java
TestData : This package should consists of all the excel sheet containing the test data and environment specific data. The test data for each module should be placed in separate excel document.
Example:
TestData.xls
Environmnet.xls
Header names in the excelsheet should start uppercase.
TestId, Description, Enabled, UserId, Password, etc.
TestResult: This folder should contain all the log files which is resultant of test case execution. The log files should be named as per the time of execution which makes the tracking of results easier. The Test results should be maintained in the form of log files which are generated runtime during every execution. These log files should be saved as text documents for easy understanding. The messages provided within the scripts should be saved in the log files.
The naming convention followed for the log folders is mm-dd-yyyy_hh_mm_ss. Each log folder should contain various log files based on the <testcasename>.log
Example: RC_T1_AdminTools_001_PASS.log.
· TestScripts: This package consists of the test scripts for all module and setup script for the test execution. Testscripts names should be decided based on the functionality and the testscript should contain group of test cases related to that functionality.
Example:
UsageTypes.java -> This java file should contain group of methods(testcases) as mentioned below:
public void RC_T1_UsageTypes_001_CreateUsageTypes() public void RC_T1_UsageTypes_004_EditUsageTypes() public void RC_T1_UsageTypes_006_SearchUsageTypeGrid()
7. General Guidelines
An ampersand (&) for concatenating strings should be used instead of ‘+’ symbol.
Objects should be set to nothing for cleaning the memory.
Only one variable should be declared in a line and all variable should be initialized as null/0/’ ’ while declaring them.
There should not be more than 80 characters per line.
The code should be properly indented.
Variables should be declared using appropriate data types.
Success/ failure can be logged inside sub-methods, instead of re-writing in all called places.
Finite number of loops should be defined when we use “While” loops.
If the first line of the method is failed, then control should move to catch block. It should not try executing second line of the method.
Try-Catch-Finally blocks should be used for all methods.
If similar kind of logic is used in more than one place, then reusable components should be used. Redundancy should be avoided.
Numerical constants (literals) should not be coded directly, except for -1, 0, and 1, which can appear in a for loop as counter values.
Selenium Automation Coding Standards document Download PDF Version Here
selenium ide, cross browser testing, operating systems, ci cd, test suite, browser driver, running tests
Frequently Asked Questions on Selenium Webdriver
Q. What is Latest version of Selenium Webdriver?
Ans: Selenium 4
Q. What is the difference between Selenium and Selenium WebDriver?
Ans: WebDriver is faster than Selenium RC because of its simpler architecture. WebDriver directly talks to the browser while Selenium RC needs the help of the RC Server in order to do so. WebDriver’s API is more concise than Selenium RC’s. WebDriver can support HtmlUnit while Selenium RC cannot
Q. Is Selenium WebDriver a framework?
Ans: Selenium is a framework used to test web applications. A framework defines rules that are followed to achieve particular results. In selenium, there are many types of frameworks including linear scripting, modular testing, and data-driven.
Q. What is WebDriver interface or class?
Ans: WebDriver is a public interface, we just define a reference variable(driver) whose type is interface. Now any object we assign to it must be a instance of a class (fireFoxDriver)that implement the interface.
Q. Is Selenium a tool or API?
Ans: Selenium is an open-source tool that automates web browsers. It provides a single interface that lets you write test scripts in programming languages like Ruby, Java, NodeJS, PHP, Perl, Python, and C#, among others.
Q. What is WebElement?
Ans: A WebElement, in this case, a Selenium WebElement is essentially an HTML element on a website. HTML documents consist of HTML elements. Each HTML element consists of a start tag and an end tag. The content lies between the tags.
What is the WebDriver?
WebDriver is a remote control interface that enables introspection and control of user agents. It provides a platform- and language-neutral wire protocol as a way for out-of-process programs to remotely instruct the behavior of web browsers.
Photo by olia danilevich on Pexels.comPhoto by olia danilevich on Pexels.comPhoto by cottonbro on Pexels.comPhoto by Mikhail Nilov on Pexels.comPhoto by cottonbro on Pexels.comPhoto by Jules Amé on Pexels.comPhoto by Antonio Batinić on Pexels.comPhoto by cottonbro on Pexels.comYoung businesswoman easing working long hours with coffee at her home office.Online meeting, Social distancing and new normal concept, Rear View of Asian Business woman say hello with teamwork colleague in video conference when Coronavirus outbreak