Selenium vs Selenide: Selenide has better assertions, reduced boilerplate, automatically takes screenshots, and simplifies file upload.
Playwright (JS) vs Selenium (Java): Playwright is generally faster, easier to set up, auto-waits for elements, and has built-in modern features like multi-tab, network mocking, and cross-browser support.
Page Object Model (POM): POM separates page structure from test logic, improving maintainability and readability.
Page Factory: Page Factory initializes web elements in POM with annotations, reducing boilerplate and improving readability.
Fluent Page Object Model: Fluent POM uses chainable methods for cleaner, readable, and more expressive test steps.

**Difference between Find Elements and find element**: FindElement() method: throws NoSuchElementException, FindElements() method: identify the list of web elements, returns empty list if can't find
- **Difference between implicity and explicity wait**
`implicit wait` waits for all of the elements
`explicit wait` waits for a specific condition for specific element - **syntax for explicit wait**
- `WebDriverWait wait = new WebDriverWait(driver, 5); wait.until(somethingThatShouldHappen);` - **How to invoke browser**
- Set a system property `webdriver.chrome.driver` to the path of your ChromeDriver.exe file and instantiate a ChromeDriver class: `System.setProperty(“webdriver.chrome.driver”,”chromedriver location”);` Maximize the window: `driver.manage().window().maximize();` To open the URL: `driver.get(“URL link”)` - **What is testNg Annotations**
TestNG is a Java-based framework, while JUnit is an open-source Unit Testing Framework for JAVA. Comparing TestNG Vs JUnit, TestNG annotations are easier to use and understand than JUnit. TestNG allows us to create parallel tests, whereas JUnit does not support running parallel tests (in 4, in 5 it supports). - **How to read excel file in selenium** Apache POI is an open-source Java library often utilized to create and handle Microsoft Office-based files - **How to do parallel Testing** - The parallel attribute can be extended for multiple values, as below:
Methods: Helps run methods in separate threads Tests: Help to run all methods belonging to the same tag in the same thread
Classes: Helps to run all methods belonging to a class in a single thread
Instances: Helps run all methods in the same instance in the same thread
Creating thread: a) create a subclass of Thread and override the run() method
- b) to pass an object that implements Runnable interface to the Thread constructor - **Exceptions in selenium**
- ElementNotSelectableException, ElementNotVisibleException, NoSuchFrameException, NoSuchWindowException - **What is stale exceptions**
when an element that was previously located on the page, is no longer available
BACKEND AUTOMATION:
JAVA
- Access modifiers in java
public: visible in class, subclass, package, global
protected: visible in class, subclass, package (protected from global)
default: visible in class, package
private: visible in class - checked and unchecked exception
A checked exception is caught at compile time whereas a runtime or unchecked exception is, as it states, at runtime.
Checked: IOException, SQLException, FileNotFoundException, ClassNotFoundException
Unchecked: NPE, ArrayIndexOutOfBonds, ArithmeticException - how to handle alerts in selenium
driver.switchTo().alert().accept(); - how to handle frames:
driver.switchTo().frame(“ID of the frame“); - difference between soft and hard assert
Soft assert allows the test to continue even if an assertion fails, while hard assert stops the test immediately
PYTHON:
GENERAL PROGRAMMING:
-
OOP concepts
-
inheritance, encapsulation, polymorphism, and abstraction
-
interface vs abstract class Abstract class is a class with partial implementation while interface is a contract with no implementation. Abstract class can have both abstract and non-abstract methods while interface can only have abstract methods. (java 9 - interfaces can have private methods, java 8 - static and default methods) A class can implement multiple interfaces but can only inherit from one abstract class. Abstract class can have constructors while interface cannot but Abstract class also cant be instantiated. Abstract class can have access modifiers while interface methods are public by default.
-
Facade Design Pattern
-
fluent wait
-
Fluent Page Object Model:
-
Singleton Design Pattern
- What is STLC (Software Testing Life Cycle)
Process that follows a series of steps or phases, and each phase has specific objectives and deliverables. Consists of:
- requirement analysis - analyze the requirements from testing perspective
- test planning - test manager/test lead determines the effort and cost estimates entire project, resourse planning, tool selection, training requirements
- test case development - preparing test cases, scripts, test data, requirements traceability matrix
- test environment setup - for example devops can prepare TEST/UAT environment
- test execution - executing the tests
- test closure - prepare test closure report/test metrics, evaluate cycle competion based on test coverage/quality/time
-
difference between Test plan, test case, test scenario
-
test plan is document describing the scope, approach, resources and schedule of intended test activities
-
test cases are specific instructions that can be used to test a particular function
-
test scenarios are high-level descriptions of how a specific feature of an application should work
-
7 rules of testing
- Testing shows presence of defects, not abscence of defects
(Testing can show that defects are present, but cannot prove that there are no defects) - Exhaustive testing is impossible
(Testing everything (all combinations) is not possible) - Early testing saves time and money
(Early testing is sometimes referred to as shift left. Testing early in the software development lifecycle helps reduce or eliminate costly changes) - Defects cluster together
(small number of modules usually contains most of the defects discovered) - Beware of the pesticide paradox
(If the same tests are repeated over and over again, eventually these tests no longer find any new defects) - Testing is context dependent
(Testing is done differently in different contexts) - Absence-of-errors is a fallacy
( it is a fallacy (i.e., a mistaken belief) to expect that just finding and fixing a large number of defects will ensure the success of a system. For example, thoroughly testing all specified requirements and fixing all defects found could still produce a system that is difficult to use, that does not fulfill the users’ needs and expectations, or that is inferior compared to other competing systems.)
-
Boundary value testing It checks for the input values near the boundary that have a higher chance of error.
Example: Consider a system that accepts ages from 18 to 56.Boundary Value Analysis(Age accepts 18 to 56)
Valid Test cases: Valid test cases for the above can be any value entered greater than 17 and less than 57.
Enter the value- 18.
Enter the value- 19.
Enter the value- 37.
Enter the value- 55.
Enter the value- 56.
Invalid Testcases: When any value less than 18 and greater than 56 is entered.
Enter the value- 17.
Enter the value- 57.
- what is defect bug cycle
like jira statuses - regression/smoke tests/sanity tests
- Smoke testing verifies the entire system e2e (acceptance testing)
- Sanity Testing verifies only a particular component (regression testing)
regression - test the software/ application when a defect is fixed to ensure that the original defect is completely removed - : Error vs. Fault vs. Bug vs. Defect vs. Failure
- error: The problem in code leads to errors
- fault: result of an error
- defect: fail to perform its required function
- failure: defect if encountered during execution = failure
- Pairwise testing
- Test techniques
- Equivalence testing - used to reduce the number of test cases by identifying different sets of data that are not the same and only executing one test from each set of data
- Boundary value analysis - behavior of the system at the boundaries of allowed data
- State transition testing - validate allowed and disallowed states and transitions from one state to another by various input data
- Pairwise (all-pairs) testing - used for lowering number of test cases without getting too much danger, algorithm can be used in order to select test cases
- What is Adhoc Testing?
- A testing phase where the tester tries to ‘break’ the system by randomly trying the system’s functionality.
Can include negative testing as well. See also Monkey Testing. - What is Bottom Up Testing?
- An approach to integration testing where the lowest level components are tested first then used to facilitate the testing of higher-level components. The process is repeated until the component at the top of the hierarchy is tested.
- Pyramid of testing (from bottom to up)
- Unit
- Component
- Integration
- E2E
- Static vs Dynamic testing
- Static Testing involves testing the software without running it
- Dynamic Testing involves executing the program
- **cd** : go to a different location - **ls** : list the contents of the current directory - **mkdir** : create new folder - **touch** : create file without any content - **rm** : Remove a file or directory
- **cp** : Copy a file or directory - **mv** : Move or rename a file or directory - **pwd : show current path**
- ps (“process status,” helps you see what's happening inside your Linux computer) - lista procesow, ilosc pamieci, otworzxyv jakis notatnikiem, jak sie polaczuc z linuxem - --------------------------------- GET - retrieves data
HEAD - response like get but without response body
POST - submits an entity to the specified resource
PUT - replaces all current representations
DELETE - deletes the specified resource
CONNECT - establishes a tunnel to the server identified by the target resource
OPTIONS - describes the communication options for the target resource
TRACE - performs a message loop-back test along the path to the target resource
PATCH - applies partial modifications to a resource
POST vs PUT vs PATCH - PUT is used for creating or replacing resources, POST is used for creating or appending data to resources, and PATCH is used for partially updating existing resources - --------------------------------- HTTP1 - web browser makes several parallel requests for page contents: HTML, images, style, JS
HTTP2 - web browser makes one TCP connection with requests for all page contents in streams (binary)
HTTP3 - web browser makes one QUIC connection with requests for all page contents in QUIC streams (binary)
- --------------------------------- HTTP/2 is binary instead of textual. HTTP/2 is fully multiplexed.
This means that HTTP/2 can send multiple requests for data in parallel over a single TCP connection. This is the most advanced feature of the HTTP/2 protocol because it allows you to download web files via ASync mode from one server. Most modern browsers limit TCP connections to one server. - --------------------------------- Unlike previous versions which relied on theTCP, HTTP/3 uses QUIC, a transport protocol built on UDP.
The same request methods, status codes, and message fields, but encodes them and maintains session state differently
due to the protocol's adoption of QUIC, HTTP/3 has lower latency and loads more quickly in real-world usage when compared with previous versions: in some cases over 3× faster than with HTTP/1.1
- --------------------------------- Informational responses (100 – 199)
Successful responses (200 – 299)
Redirection messages (300 – 399)
Client error responses (400 – 499)
Server error responses (500 – 599)
Informational responses
100 Continue (the client should continue the request)
Successful responses
200 OK
201 CREATED
202 Accepted
204 No content
Redirection messages
301 Moved permanently
Client error responses
400 Bad request (client error - malformed request syntax)
401 Unauthorized
403 Forbidden (client does not have access rights to the content)
404 Not Found (server cannot find the requested resource)
418 Im a teapot (server refuses the attempt to brew coffee with a teapot)
Server error responses
500 Internal server error (server has encountered a situation it does not know how to handle)
501 Not Implemented (The request method is not supported by the server and cannot be handled. The only methods that servers are required to support (and therefore that must not return this code) are GET and HEAD.)
502 Bad Gateway (the server, while working as a gateway to get a response needed to handle the request, got an invalid response)
503 Service Unavailable (the server is not ready to handle the request)
The ftp command opens the user interface to the Internet's File Transfer Protocol.
This user interface, called the command interpreter, enables you to log in to a remote system and perform a variety of operations with its file system.
- opens 2 connections, one is used to send commands, other is for sending data. commands are “send,” “get,” “change directory,” and “transfer.” - uses three different modes: block, stream, and compressed. can perform perform large file size transfers. - allows you to send multiple files at once. - --------------------------------- a network protocol that allows two devices to communicate and share data remotely over an unsecured network, like the Internet. The primary difference between Secure Shell Protocol and other login protocols is that SSH provides an encrypted connection. - --------------------------------- Extension of SSH.
FTP stands for File Transfer Protocol, while SFTP refers to Secure Shell (SSH) File Transfer Protocol. This gives you file transfers that are secured via SSH, which provides full access to shell accounts. A shell account is one that sits on a remote server.SFTP uses a tunneling method to transfer data. With the benefit of additional security, FTP, which is less secure, uses direct transfer.