The Journey of #100DaysOfCode (@Nisrine_bg)

Hello community!

I’ve been challenged to start the #100DayCodeChallenge, and guess what?! Challenge Accepted!! So for the next 100 days, I’ll be sharing my knowledge, learning, and experiences.

Below is my progress from previous days, and I’ll now be updating regularly from today. If you’re up for it, join me on this adventure!


Day 1: 𝗛𝗼𝘄 𝘁𝗼 𝗦𝘁𝗮𝗿𝘁 𝗬𝗼𝘂𝗿 𝗝𝗼𝘂𝗿𝗻𝗲𝘆 𝗮𝘀 𝗮 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗤𝘂𝗮𝗹𝗶𝘁𝘆 𝗔𝘀𝘀𝘂𝗿𝗮𝗻𝗰𝗲 𝗣𝗿𝗼𝗳𝗲𝘀𝘀𝗶𝗼𝗻𝗮𝗹

Starting a journey as a Software Quality Assurance (QA) professional involves acquiring the necessary skills, gaining practical experience, and understanding the methodologies used in the field.

This is the 𝗰𝗹𝗶𝗰𝗵é 𝗮𝗻𝘀𝘄𝗲𝗿 that we all get when searching the Internet. But let’s be real and discuss what we should know to start our QA journey.

𝟭. 𝗨𝗻𝗱𝗲𝗿𝘀𝘁𝗮𝗻𝗱 𝘁𝗵𝗲 𝗣𝗿𝗼𝗱𝘂𝗰𝘁
Understanding the product reveals its functionality, features, and gaps. To start your QA journey, you should have a comprehensive knowledge of everything related to the product you are testing. Isn’t this how we find bugs?

𝟮. 𝗣𝘂𝘁 𝗬𝗼𝘂𝗿𝘀𝗲𝗹𝗳 𝗶𝗻 𝘁𝗵𝗲 𝗦𝗵𝗼𝗲𝘀 𝗼𝗳 𝘁𝗵𝗲 𝗨𝘀𝗲𝗿𝘀
Ask yourself the following questions:

  • What is the typical journey (happy path) that a user can take?
  • What scenarios might the user encounter and try?
  • What features does the user use and trigger before checking out?
  • Did the user start a new cart or reorder a previous item?

𝟯. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗚𝗼𝗼𝗱 𝗠𝗶𝗻𝗱𝘀𝗲𝘁
Building a good mindset comes through learning, practicing, and exploring different products, finding gaps, and reporting bugs.

Notice that I didn’t even mention anything related to tech skills, tools, or scripts that one might consider a priority in learning QA. Believe me, your career journey starts when you master the above points.


Day 2 of 100daysofcode : Writing Effective Test Cases in Software Quality Assurance

When it comes to Quality Assurance, the 1st couple of things that you should know about is writing test cases.

What is a test case?

A test case is a set of actions that are executed to verify a certain feature or functionality of an application.

Writing a test case is super easy, yet you need to be precise and on point. Test cases can be written in different forms so here is an example of how you can write your test cases:

Example 1:

Specifying test Scenario:

  • A test scenario is a high-level description of a specific functionality or feature of the application to be tested.
    • Test Scenario: Verify successful user registration
    • Steps to Execute:
        1. Open registration form
        1. Fill in valid details
        1. Submit the form

Example 2:

After user fills out all required fields, and user clicks on Submit button then an account should be created and user should be redirected to the home page

Regardless of what style you follow, to write an effective test case you should keep in mind the following:

  • The test case must be clear and straight to the point
  • the test case should have an actor ( someone who’s doing the action), the action, and the expected result
  • An effective test case is the test case that helps you find a bug
  • Test cases must cover both positive and negative test cases
  • Test cases must cover all scenarios
  • Test cases must focus on the functionality of the product more than on the design



𝗗𝗮𝘆 𝟯 of 100daysofcode : 𝗙𝗶𝗻𝗱𝗶𝗻𝗴 𝘆𝗼𝘂𝗿 𝟭𝘀𝘁 𝗯𝘂𝗴 𝗮𝘀 𝗮 𝗤𝗔 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿

You might wonder how to find your 1st bug as a beginner in testing,

I agree, that finding bugs is not easy. It requires good product knowledge, prior experience in similar platforms, and a good mindset.

But here are tips on how to pull your QA skills and find bugs in the product you’re testing:

𝗚𝗼 𝗼𝘃𝗲𝗿 𝗮𝗻𝗱 𝗲𝘅𝗽𝗹𝗼𝗿𝗲 𝘁𝗵𝗲 𝗽𝗿𝗼𝗱𝘂𝗰𝘁:

Exploring the product provides you with knowledge of the platform type and scenarios to be executed, covering platform functionality, design, and process. 𝗧𝗵𝗶𝘀 𝗶𝘀 𝗰𝗮𝗹𝗹𝗲𝗱 𝗘𝘅𝗽𝗹𝗼𝗿𝗮𝘁𝗼𝗿𝘆 𝗧𝗲𝘀𝘁𝗶𝗻𝗴.

𝗧𝗲𝘀𝘁 𝗼𝗻 𝗠𝘂𝗹𝘁𝗶𝗽𝗹𝗲 𝗗𝗲𝘃𝗶𝗰𝗲𝘀 𝗮𝗻𝗱 𝗕𝗿𝗼𝘄𝘀𝗲𝗿𝘀:

Opening the platform on different devices and browsers is another way to find bugs. You might find responsive issues when testing on different devices, having different screen sizes and OS and browser functionality. 𝗧𝗵𝗶𝘀 𝗶𝘀 𝗰𝗮𝗹𝗹𝗲𝗱 𝗖𝗿𝗼𝘀𝘀 𝗕𝗿𝗼𝘄𝘀𝗲𝗿 𝗧𝗲𝘀𝘁𝗶𝗻𝗴.

𝗙𝗼𝗰𝘂𝘀 𝗼𝗻 𝗘𝗱𝗴𝗲 𝗖𝗮𝘀𝗲𝘀:

Try going over all routes that lead to the same ending. For example, if you are testing Place Order on an E-commerce website, you can follow multiple routes to place an order:
Go to home page > click on the item >go to item details > checkout > place order
Go to home page >search for the item > go to item details > checkout > place order
Reorder > checkout > place order

𝗖𝗵𝗲𝗰𝗸 𝗣𝗹𝗮𝘁𝗳𝗼𝗿𝗺 𝗣𝗲𝗿𝗳𝗼𝗿𝗺𝗮𝗻𝗰𝗲

Assess the product’s performance under different conditions, such as high load or limited resources.


𝗗𝗮𝘆 𝟰: 𝗹𝗶𝘀𝘁 𝗼𝗳 𝗿𝗲𝗰𝗼𝗺𝗺𝗲𝗻𝗱𝗲𝗱 𝗯𝗼𝗼𝗸𝘀 𝘁𝗼 𝗯𝗼𝗼𝘀𝘁 𝘆𝗼𝘂𝗿 𝘀𝗸𝗶𝗹𝗹𝘀 𝗶𝗻 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗤𝘂𝗮𝗹𝗶𝘁𝘆 𝗔𝘀𝘀𝘂𝗿𝗮𝗻𝗰𝗲 (𝗤𝗔) 𝘁𝗲𝘀𝘁𝗶𝗻𝗴

"𝗟𝗲𝘀𝘀𝗼𝗻𝘀 𝗟𝗲𝗮𝗿𝗻𝗲𝗱 𝗶𝗻 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗧𝗲𝘀𝘁𝗶𝗻𝗴" by Cem Kaner, James Bach, and Bret Pettichord

The book provides valuable insights from experienced testers and covers practical tips and lessons learned in the field.

“𝗔𝗴𝗶𝗹𝗲 𝗧𝗲𝘀𝘁𝗶𝗻𝗴: 𝗔 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗮𝗹 𝗚𝘂𝗶𝗱𝗲 𝗳𝗼𝗿 𝗧𝗲𝘀𝘁𝗲𝗿𝘀 𝗮𝗻𝗱 𝗔𝗴𝗶𝗹𝗲 𝗧𝗲𝗮𝗺𝘀” by Lisa Crispin and Janet Gregory

the book explores the role of testers in Agile environments and offers practical strategies for effective testing in Agile projects.

“𝗧𝗵𝗲 𝗔𝗿𝘁 𝗼𝗳 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗧𝗲𝘀𝘁𝗶𝗻𝗴” by Glenford J. Myers, Corey Sandler, and Tom Badgett

The book focuses on fundamental principles and techniques of software testing, suitable for both beginners and experienced testers.

“𝗛𝗼𝘄 𝗚𝗼𝗼𝗴𝗹𝗲 𝗧𝗲𝘀𝘁𝘀 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲” by James A. Whittaker, Jason Arbon, and Jeff Carollo

The book provides an inside look at Google’s testing processes and practices, offering valuable lessons for testers aiming to improve their skills.

“𝗘𝗳𝗳𝗲𝗰𝘁𝗶𝘃𝗲 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗧𝗲𝘀𝘁𝗶𝗻𝗴: 𝟱𝟬 𝗦𝗽𝗲𝗰𝗶𝗳𝗶𝗰 𝗪𝗮𝘆𝘀 𝘁𝗼 𝗜𝗺𝗽𝗿𝗼𝘃𝗲 𝗬𝗼𝘂𝗿 𝗧𝗲𝘀𝘁𝗶𝗻𝗴” by Elfriede Dustin

The book offers 50 practical tips and techniques to enhance the effectiveness of your software testing efforts.

When I first stepped into the QA world, “𝗧𝗵𝗲 𝗔𝗿𝘁 𝗼𝗳 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗧𝗲𝘀𝘁𝗶𝗻𝗴” served as a guide for me on my QA journey. I recommend reading this book as it teaches you the foundational steps for delving deeper into the QA field.


𝗗𝗮𝘆 𝟱 of #100DaysOfCode: 𝗧𝗿𝗶𝗴𝗴𝗲𝗿𝗶𝗻𝗴 𝘆𝗼𝘂𝗿 𝗳𝗶𝗿𝘀𝘁 𝗔𝗣𝗜

What is an API?

An API (Application Programming Interface) is a set of rules and protocols that allow different software applications to communicate and interact with each other.

In other words, An API is like the person in the middle that links the server side with the client side.

Take the famous restaurant example, where the waiter is the person in the middle between the customer and the chef.

As a customer, you cannot directly enter the restaurant’s kitchen and tell the chef what you want to order, but you have to mention your order to the waiter and the waiter goes and mentions to the chef what you want.

As a chef, you cannot go outside your kitchen and serve the food directly to the customer, but you can call the waiter to deliver the food instead.

So, the customer acts as the front-end or the client side, the chef acts as the server side and the waiter acts as the API that connects the client side with the server side.

𝗦𝗼, 𝗵𝗼𝘄 𝗰𝗮𝗻 𝘄𝗲 𝘁𝗲𝘀𝘁 𝗔𝗣𝗜𝘀?

We can test APIs through the website/ mobile application itself by checking the API response in the console or through a backend API testing and automation platform such as Postman or Swagger.

To test on Postman, you should do the following:

add the API you need to test

select HTTP Method

Add the needed authentication and attributes

A JSON Response and status =200 shows if the API is triggered successfully

Selecting HTTP method, depends on the action that the endpoint should do:

𝗚𝗘𝗧: Retrieve data from a server at the specified resource.

𝗣𝗢𝗦𝗧: Submit data to be processed to a specified resource.

𝗣𝗨𝗧: Update or create a resource at the specified resource.

𝗗𝗘𝗟𝗘𝗧𝗘: Delete the specified resource.

𝗣𝗔𝗧𝗖𝗛: Apply partial modifications to a resource.

𝗢𝗣𝗧𝗜𝗢𝗡𝗦: Describe the communication options for the target resource.


Day 6 of **#100DaysOfCode**: Generating mock data for QA Testing

You can automate your APIs through Postman by writing scripts and functions that can generate mock data such as creating mock emails and phone numbers, so this how it can be done:


Day 7: Writing AJV scripts to test API Response

AJV (Another JSON Schema Validator) is a popular JSON Schema validator for JavaScript. It validates data against a JSON Schema, ensuring that the data conforms to a specified structure and type requirements.

𝗣𝘂𝗿𝗽𝗼𝘀𝗲 𝗼𝗳 𝗨𝘀𝗶𝗻𝗴 𝗔𝗝𝗩 𝗦𝗰𝗿𝗶𝗽𝘁𝘀

𝗗𝗮𝘁𝗮 𝗩𝗮𝗹𝗶𝗱𝗮𝘁𝗶𝗼𝗻:

AJV ensures that the data you receive or send meets the required format and type. This is particularly useful in APIs to ensure the consistency and correctness of the data being processed.

𝗘𝗿𝗿𝗼𝗿 𝗛𝗮𝗻𝗱𝗹𝗶𝗻𝗴:

By validating data against a schema, AJV can identify and report errors, making it easier to debug issues and handle data validation errors gracefully.

𝗔𝘂𝘁𝗼𝗺𝗮𝘁𝗶𝗼𝗻 𝗧𝗲𝘀𝘁𝗶𝗻𝗴:

In automated testing environments, like Postman, AJV scripts can be used to validate API responses against predefined schemas. This ensures that your API responses are always in the expected format and helps catch issues early in the development process.

𝗗𝗼𝗰𝘂𝗺𝗲𝗻𝘁𝗮𝘁𝗶𝗼𝗻 𝗮𝗻𝗱 𝗖𝗼𝗻𝘁𝗿𝗮𝗰𝘁 𝗧𝗲𝘀𝘁𝗶𝗻𝗴:

JSON Schemas serve as a form of documentation for your API, specifying what kind of data is expected. Using AJV, you can enforce these contracts, ensuring that both clients and servers adhere to the agreed-upon data structures.

How AJV Scripts Work

AJV scripts work by:

Defining a JSON Schema:

The schema outlines the data’s expected structure, types, and constraints.

𝗖𝗼𝗺𝗽𝗶𝗹𝗶𝗻𝗴 𝘁𝗵𝗲 𝗦𝗰𝗵𝗲𝗺𝗮:

AJV compiles the schema into a validation function.

𝗩𝗮𝗹𝗶𝗱𝗮𝘁𝗶𝗻𝗴 𝗗𝗮𝘁𝗮:

The compiled validation function is used to check if the given data conforms to the schema. If the data is valid, the function returns true; otherwise, it returns false and provides details about the validation errors.


Consider an API that returns user information. You want to ensure the response follows a specific structure:

𝗝𝗦𝗢𝗡 𝗦𝗰𝗵𝗲𝗺𝗮

100daysofcode lebanon-mug

1 Like

That’s awesome. Must be exciting!

1 Like

𝗗𝗮𝘆 𝟴 𝗼𝗳 #𝟭𝟬𝟬𝗗𝗮𝘆𝘀𝗢𝗳𝗖𝗼𝗱𝗲: 𝗠𝗮𝗻𝗶𝗽𝘂𝗹𝗮𝘁𝗶𝗻𝗴 𝗝𝗦𝗢𝗡 𝗙𝗶𝗹𝗲𝘀 𝗳𝗿𝗼𝗺 𝗮 𝗙𝗼𝗿𝗺 𝗦𝘂𝗯𝗺𝗶𝘀𝘀𝗶𝗼𝗻

Today, I decided to share with you lovely #network my development technical knowledge and skills.


  • Fill out the form
  • Click to Submit the form
  • A JSON file is downloaded with all the added values is downloaded

𝗛𝗲𝗿𝗲 𝗶𝘀 𝗵𝗼𝘄 𝘁𝗵𝗶𝘀 𝘀𝗰𝗲𝗻𝗮𝗿𝗶𝗼 𝗶𝘀 𝗱𝗼𝗻𝗲:

  • Adding 𝚎𝚟𝚎𝚗𝚝.𝚙𝚛𝚎𝚟𝚎𝚗𝚝𝙳𝚎𝚏𝚊𝚞𝚕𝚝(); prevents the default behavior of a form from attaching the form data to the URL and instead following the logic written in the needed function.

  • Collect the form data using 𝚌𝚘𝚗𝚜𝚝 𝚏𝚘𝚛𝚖𝙳𝚊𝚝𝚊= 𝚗𝚎𝚠 𝙵𝚘𝚛𝚖𝙳𝚊𝚝𝚊(𝚎𝚟𝚎𝚗𝚝.𝚝𝚊𝚛𝚐𝚎𝚝)

  • After getting the form data we need to get the event entries:
    𝚌𝚘𝚗𝚜𝚝 𝚏𝚘𝚛𝚖𝙾𝚋𝚓𝚎𝚌𝚝=𝙾𝚋𝚓𝚎𝚌𝚝.𝚏𝚛𝚘𝚖𝙴𝚗𝚝𝚛𝚒𝚎𝚜(𝚏𝚘𝚛𝚖𝙳𝚊𝚝𝚊.𝚎𝚗𝚝𝚛𝚒𝚎𝚜());

  • Transform the object to a JSON string using 𝚌𝚘𝚗𝚜𝚝 𝚓𝚜𝚘𝚗𝚂𝚝𝚛𝚒𝚗𝚐= 𝙹𝚂𝙾𝙽.𝚜𝚝𝚛𝚒𝚗𝚐𝚒𝚏𝚢(𝚏𝚘𝚛𝚖𝙾𝚋𝚓𝚎𝚌𝚝,𝚗𝚞𝚕𝚕,𝟸);

  • Using blob handles and manipulates binary data, such as files or media converting and storing them in binary JSON

𝚌𝚘𝚗𝚜𝚝 𝚋𝚕𝚘𝚋= 𝚗𝚎𝚠 𝙱𝚕𝚘𝚋([𝚓𝚜𝚘𝚗𝚂𝚝𝚛𝚒𝚗𝚐],{𝚝𝚢𝚙𝚎:‘𝚊𝚙𝚙𝚕𝚒𝚌𝚊𝚝𝚒𝚘𝚗/𝚓𝚜𝚘𝚗’}) ;

  • The last thing we need to do is to create and save the blob in a URL to be downloaded
    𝚌𝚘𝚗𝚜𝚝 𝚞𝚛𝚕= 𝚄𝚁𝙻.𝚌𝚛𝚎𝚊𝚝𝚎𝙾𝚋𝚓𝚎𝚌𝚝𝚄𝚁𝙻(𝚋𝚕𝚘𝚋);

100daysofcode lebanon-mug

1 Like

𝗗𝗮𝘆 𝟵: 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 - 𝗧𝗵𝗲 𝗜𝗺𝗽𝗲𝗿𝗮𝘁𝗶𝘃𝗲 𝗟𝗮𝗻𝗴𝘂𝗮𝗴𝗲 𝗼𝗳 𝗦𝘁𝗲𝗽-𝗯𝘆-𝗦𝘁𝗲𝗽 𝗣𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗶𝗻𝗴

JavaScript is considered an imperative language because it focuses on how to perform tasks through explicit step-by-step instructions.

In imperative programming, We write sequences of commands that change the program’s state, typically using loops, conditionals, and variable assignments.

JavaScript exemplifies this paradigm with its syntax and constructs, such as for loops, if statements, and function definitions that directly manipulate data.

This approach enables us to have fine-grained control over the program’s flow and behavior, which is fundamental to imperative programming.

In this example, JavaScript explicitly defines the steps to calculate the sum of numbers from 1 to 5, showcasing its imperative nature.

100daysofcode lebanon-mug

1 Like

𝗗𝗮𝘆 𝟭𝟬: 𝗖𝗵𝗮𝗿𝗮𝗰𝘁𝗲𝗿𝗶𝘀𝘁𝗶𝗰𝘀 𝗼𝗳 𝗠𝗼𝗻𝗴𝗼𝗗𝗕

MongoDB, a popular NoSQL database, is known for several key characteristics that distinguish it from traditional relational databases.

Here are some of its main characteristics:

𝗗𝗼𝗰𝘂𝗺𝗲𝗻𝘁-𝗢𝗿𝗶𝗲𝗻𝘁𝗲𝗱 𝗦𝘁𝗼𝗿𝗮𝗴𝗲:

𝗗𝗮𝘁𝗮 𝗦𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲: Stores data in JSON-like documents (BSON format), which allows for a flexible and dynamic schema.

𝗦𝗰𝗵𝗲𝗺𝗮 𝗙𝗹𝗲𝘅𝗶𝗯𝗶𝗹𝗶𝘁𝘆: Each document can have a different structure, allowing for easy schema evolution and agility in application development.


𝗛𝗼𝗿𝗶𝘇𝗼𝗻𝘁𝗮𝗹 𝗦𝗰𝗮𝗹𝗶𝗻𝗴: Supports horizontal scaling through sharding, where data is distributed across multiple servers.

𝗛𝗶𝗴𝗵 𝗔𝘃𝗮𝗶𝗹𝗮𝗯𝗶𝗹𝗶𝘁𝘆: Provides high availability with replica sets, ensuring data redundancy and failover capabilities.


Rich Indexing Capabilities: Supports various types of indexes like single field, compound, geospatial, and full-text indexes to optimize query performance.


Replica Sets: Implements replication via replica sets, which consist of a primary node and multiple secondary nodes, enhancing data durability and read performance.


Partitioning: Supports sharding, enabling data distribution across several machines for horizontal scalability.
Automatic Balancing: Automatically balances data across shards to maintain even distribution.
lebanon-mug 100daysofcode #mongodb

1 Like

Day 11: MongoDB Atlas Charts

MongoDB Charts is a powerful tool for creating and sharing visual representations of your MongoDB data. It enables users to build, customize, and embed charts that provide insights into their datasets. MongoDB Charts natively integrates with MongoDB, making it easy to visualize data without the need for complex ETL processes.


  1. Real-time Data Visualization: The dashboard should display real-time sales data.
  2. Interactive Charts: The charts should be interactive, allowing users to drill down into specific data points.
  3. User-Friendly Interface: The interface should be easy to understand and navigate.
  4. Secure Access: Only authorized users should have access to the dashboard.

Solution: MongoDB Charts

MongoDB Charts is selected as the visualization tool due to its seamless integration with MongoDB, ease of use, and powerful visualization capabilities.


  • Real-Time Insights: Management can make data-driven decisions based on real-time sales data.
  • Enhanced Visualization: Interactive and visually appealing charts help in better understanding the data.
  • Easy Integration: Seamless integration with the existing MongoDB database reduces implementation time and complexity.
  • Security: Access control ensures that sensitive sales data is protected.


By using MongoDB Charts, the business can effectively visualize their sales data in real-time, providing valuable insights that drive business decisions. The interactive and user-friendly dashboard enhances the ability of management to monitor and respond to sales trends efficiently.

1 Like

Day 12: Importance of Data Modeling

Data modeling is crucial before coding because it defines the structure, relationships, and constraints of your data, ensuring that your system is efficient and scalable.

For example, designing a database schema for an e-commerce site helps clarify how products, customers, and orders interrelate, which prevents inconsistencies and reduces future refactoring.

Without a solid data model, you risk creating a disorganized or inefficient system, leading to costly changes and maintenance issues down the line.

Proper data modeling aligns your development with business requirements, optimizing performance and reliability.

1 Like