<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Renee Betina Esperas-Imperial</title>
    <description>The latest articles on DEV Community by Renee Betina Esperas-Imperial (@reneebetina).</description>
    <link>https://dev.to/reneebetina</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F896522%2Fdf25cc81-8cfd-4d32-a1c2-a30075a52247.jpeg</url>
      <title>DEV Community: Renee Betina Esperas-Imperial</title>
      <link>https://dev.to/reneebetina</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/reneebetina"/>
    <language>en</language>
    <item>
      <title>Test Automation Tips and Recommendations</title>
      <dc:creator>Renee Betina Esperas-Imperial</dc:creator>
      <pubDate>Tue, 24 Oct 2023 08:17:04 +0000</pubDate>
      <link>https://dev.to/reneebetina/test-automation-tips-and-recommendations-2ogi</link>
      <guid>https://dev.to/reneebetina/test-automation-tips-and-recommendations-2ogi</guid>
      <description>&lt;p&gt;I have been doing test automation for quite some time now. From ground-up projects to established companies, regardless of the tools used, there seem to be common challenges in projects with test automation.&lt;/p&gt;

&lt;p&gt;Here are some recommended practices that I followed along the way:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Know the long-term goals of your test automation and let others know about them too.
&lt;/h4&gt;

&lt;p&gt;Test automation can either be underappreciated or have high expectations from project management. Set the expectation that not everything is automatable. Emphasize that test automation is not an all-in-one solution, but it will definitely help us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;reduce manual efforts&lt;/strong&gt; on testing in different levels (ST, SIT, end-to-end, regression, etc.)&lt;/li&gt;
&lt;li&gt;provide &lt;strong&gt;faster feedback&lt;/strong&gt; on developers' work&lt;/li&gt;
&lt;li&gt;do &lt;strong&gt;faster releases&lt;/strong&gt; without compromising the quality of the product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The earlier we report defects, the earlier they will be fixed, and we'll have a higher probability of meeting the deadline. With test automation, we can "test early, test often."&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Align the Project, the People and your Automation Tools
&lt;/h4&gt;

&lt;p&gt;If you are in a position to decide what tools to use and make your team use them, consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;project budget&lt;/li&gt;
&lt;li&gt;capacity of existing team&lt;/li&gt;
&lt;li&gt;skill set of the team&lt;/li&gt;
&lt;li&gt;willingness of people to automate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When choosing the tools, consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;if the company is willing to buy licenses or annual fees
availability of support (especially if you choose an open source tool. Hope that it won't get abandoned!)&lt;/li&gt;
&lt;li&gt;how fast people can adapt to it (some test automation tools don't need heavy knowledge on programming languages)&lt;/li&gt;
&lt;li&gt;should meet company standards (i.e. for banking projects, you can only use "approved" tools that meet the security standards).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thinking ahead will save you from big headaches on rework in the future.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Understand your company's business
&lt;/h4&gt;

&lt;p&gt;Know what product or value your company gives to its consumers and how they use your application. This helps you determine business-critical scenarios and highlights areas where you need to test heavily.&lt;/p&gt;

&lt;p&gt;One of the test principles is "exhaustive testing is impossible". Rather than attempting to test exhaustively, test case prioritization and risk-based testing should be used to focus test efforts. If you want to know about other test principles, visit the &lt;a href="https://istqb-main-web-prod.s3.amazonaws.com/media/documents/ISTQB_CTFL_Syllabus-v4.0.pdf" rel="noopener noreferrer"&gt;ISTQB Official Syllabus&lt;/a&gt;, Chapter 1.3&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Refine your Test Cases
&lt;/h4&gt;

&lt;p&gt;As your product grows, the test case count grows too.&lt;br&gt;
Set a time to revisit existing tests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get feedback from POs and developers to make sure you are covering enough.&lt;/li&gt;
&lt;li&gt;Prioritize ones that bring business value first.&lt;/li&gt;
&lt;li&gt;Remove outdated test cases.&lt;/li&gt;
&lt;li&gt;Avoid duplicates.&lt;/li&gt;
&lt;li&gt;Use the test techniques on &lt;a href="https://istqb-main-web-prod.s3.amazonaws.com/media/documents/ISTQB_CTFL_Syllabus-v4.0.pdf" rel="noopener noreferrer"&gt;ISTQB Official Syllabus&lt;/a&gt; Chapter 4&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5. Plan your time for test automation
&lt;/h4&gt;

&lt;p&gt;Often times, only development work is considered in sprint planning. Voice out that automation work also has to be considered in your sprint capacity. While development is in progress, you can automate in parallel. If details are not yet final, you can at least prepare the "backbone" of your automated tests.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. UI Locators:: It is best when you have proper identifiers
&lt;/h4&gt;

&lt;p&gt;Have an agreement with your dev team to always add an &lt;em&gt;id&lt;/em&gt;, &lt;em&gt;name&lt;/em&gt; or any custom unique identifier in the UI elements. Sometimes developers forget it, and if they don't put ids, it will eat up your time to automate as you need to create UI locators (with xpath/css locators, etc.). If your UI is frequently updated, you have to keep updating your locators too. Always save your time.&lt;/p&gt;

&lt;h4&gt;
  
  
  7. Practice coding standards
&lt;/h4&gt;

&lt;p&gt;Code review is not just for developers. Testers and automation engineers need it too. We review our code (test scripts) for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;accuracy&lt;br&gt;
Check the flow of the test (input-process-output) to see if you are expecting the correct values. Watch out for logical and typographical errors too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;maintainability&lt;br&gt;
As much as possible, avoid hard coding. Short-term, you can deliver fast. Long-term, it will take your time to maintain it. Imagine if you hardcoded for 100 test cases and suddenly a product update came and you had to visit those 100 test cases again. What more if you had to update so many files related to it?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;reusability&lt;br&gt;
A common challenge for new test automation projects is that they are often hard-coded and can only run in one environment. That's sad. &lt;br&gt;
It is easy to just hard code it, but if you think long-term, hard coding is not very productive. As you mature in test automation, you will appreciate "parameterized" projects.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you parameterize, you can easily switch your environments with minimal changes to your script.&lt;br&gt;
i.e. you have the ENV parameter. You can simply change ENV=dev to ENV=test to switch environments, fetch environment-specific data and execute your test without updating so many files. &lt;/p&gt;

&lt;p&gt;When you parameterize, you make it flexible for future updates.&lt;br&gt;
i.e. Your application has a search page. If your automation is hard coded to do "&lt;em&gt;SearchByFilterA&lt;/em&gt;" and a new filter is added, most juniors will just want to add "&lt;em&gt;SearchByFilterB&lt;/em&gt;", "&lt;em&gt;SearchByFilterC&lt;/em&gt;" etc.&lt;br&gt;
It is often recommended to just make one keyword "&lt;em&gt;Search (FilterValue)&lt;/em&gt;". One keyword to maintain, multiple scenarios supported.&lt;/p&gt;

&lt;p&gt;Adopt good coding habits; it will help you and your team in the long term.&lt;/p&gt;

&lt;h4&gt;
  
  
  8. Aim for daily runs or frequent runs
&lt;/h4&gt;

&lt;p&gt;If your scripts are done and merged, make the most of it. &lt;br&gt;
No need to run everything but at least test the business critical ones. Most common automation tools already have "tags" so you can select which specific ones you want to run.&lt;/p&gt;

&lt;p&gt;For Jenkins and Gitlab (and others), there is also an option where you can set your scheduled runs. Setting this up will be worth it.&lt;/p&gt;

&lt;h4&gt;
  
  
  9. Aim to Support Multiple environments or multi-tenancy (if applicable)
&lt;/h4&gt;

&lt;p&gt;For large and complex projects, this is essential. If your test automation project has a bad architecture from the beginning, then you might not be able to reach this point. I remember re-architecting a project from the ground again because they forgot to consider that their application would have to support multiple tenants. This is why I mentioned it on point 3: Understand your company's business. If you know your business well, you can future-proof your test automation for it.&lt;/p&gt;

&lt;p&gt;So what did I do in that project to support multiple environments or multi-tenancy? I had to break down the existing project into a more organized repository with more configurable pieces. Test data is sorted and made independent for each environment. Functions and keywords are parameterized. &lt;em&gt;I will share more about this in a different post and link it here once available.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  10. Aim for Automated test results
&lt;/h4&gt;

&lt;p&gt;Your automation is now working and running regularly. Let's make it more independent and reliable. &lt;/p&gt;

&lt;p&gt;Depending on your tool, you can automatically send test results to  TestRail, qTest or wherever you record test results. You can also publish your test results to a Slack channel. Setup for this is specific to the tools you use, here are some Google search terms that can point you to the right place: "Test Integration" "Slack plugin" "Webhook" &lt;/p&gt;

&lt;p&gt;Investing time to set this up is worth it. For me, if results are regularly published automatically, then it is one sign that a project has a 'matured' or 'established' test automation.&lt;/p&gt;

&lt;h4&gt;
  
  
  Good to have: Parallel Runs (for even faster results)
&lt;/h4&gt;

&lt;p&gt;Some tools support parallel runs. If you are after fast feedback, you can try to tailor your project to support this. I personally did it for a Java-based test automation project in the past. I haven't tried it for Python-based ones yet.&lt;/p&gt;




&lt;p&gt;Most people think that test automation is just about writing tests, but actually, there's a lot of work under the hood. I hope you find value in what I shared here, and I'm wishing you all the best in your test automation projects. If I missed anything, feel free to share your recommendations too.&lt;/p&gt;

&lt;p&gt;Happy testing!&lt;/p&gt;

</description>
      <category>testing</category>
      <category>automation</category>
      <category>testautomation</category>
    </item>
    <item>
      <title>Top Skills you need as an AUTOMATION ENGINEER</title>
      <dc:creator>Renee Betina Esperas-Imperial</dc:creator>
      <pubDate>Wed, 11 Jan 2023 02:51:09 +0000</pubDate>
      <link>https://dev.to/reneebetina/top-skills-you-need-as-an-automation-engineer-13mk</link>
      <guid>https://dev.to/reneebetina/top-skills-you-need-as-an-automation-engineer-13mk</guid>
      <description>&lt;h2&gt;
  
  
  &lt;em&gt;Developer + Tester = Automation Engineer&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;What is an Automation Engineer?&lt;br&gt;
Basically, we are the ones who code stuff outside the actual product being developed. We eliminate the repetitive work in the development cycle and a majority of this is on the testing a.k.a "regression". &lt;/p&gt;

&lt;p&gt;Our main goals are to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;save time and minimize manual effort spent on testing (or any repetitive task)&lt;/li&gt;
&lt;li&gt;we support the Dev Team by providing fast feedback on their builds (pass/fail reports, detect bugs)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aside from automated testing, there's a lot more out there that can be automated like sending daily reports, data testing, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Any repetitive task can be a candidate for automation. Do we automate everything?
&lt;/h3&gt;

&lt;p&gt;If we have the luxury of time, why not. But in reality, we only automate what will bring great value and we invest time on long term scripts. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdid39hdecgyuyftr99m5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdid39hdecgyuyftr99m5.png" alt="Should you automate?" width="571" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I personally use this formula I learned from one of the courses under &lt;a href="https://www.coursera.org/professional-certificates/google-it-automation" rel="noopener noreferrer"&gt;Google IT Automation with Python Professional Certificate&lt;/a&gt; :&lt;/p&gt;

&lt;h4&gt;
  
  
  Time to Automate &amp;lt; Time Spent on Manual execution x No. of times per month
&lt;/h4&gt;

&lt;p&gt;Given: &lt;br&gt;
Time to Automate  = 45 mins&lt;br&gt;
Time Spent on Manual = 20 mins &lt;br&gt;
No of time ran = 10 times per month&lt;/p&gt;

&lt;p&gt;So, 45 mins &amp;lt; 200 mins per month&lt;br&gt;
Then this is definitely worth automating. &lt;/p&gt;

&lt;h2&gt;
  
  
  Back to our definition: &lt;em&gt;Developer + Tester = Automation Engineer&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Here are some skills that Automation Engineers usually have: &lt;/p&gt;

&lt;h3&gt;
  
  
  1. Programming Skills
&lt;/h3&gt;

&lt;p&gt;i.e. Python, Java etc&lt;br&gt;
Knowing the basics is enough to get you started.&lt;br&gt;
&lt;em&gt;Bash Scripting - nice to have especially if you have tasks that need some interaction with OS like reading/writing files or monitoring your system health.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Knowledge on Testing Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Unit Testing: JUnit, PyTest (this is usually covered by Developers but it is good to know how to write unit tests)&lt;/li&gt;
&lt;li&gt;Database/Data Testing: SQL / NoSQL &lt;/li&gt;
&lt;li&gt;API Testing: Postman, Swagger, Mocha, Chai&lt;/li&gt;
&lt;li&gt;UI Testing: Selenium, Cypress &lt;/li&gt;
&lt;li&gt;Mobile Testing: Appium etc.&lt;/li&gt;
&lt;li&gt;Cross browser Testing: Browserstack etc. &lt;/li&gt;
&lt;li&gt;Testing Frameworks: Selenium, Robot Framework, etc. &lt;/li&gt;
&lt;li&gt;Codeless Testing Tools: Selenium IDE, Test&lt;/li&gt;
&lt;li&gt;CI/CD : Jenkins, Travis, Github, Gitlab etc&lt;/li&gt;
&lt;li&gt;Test Management Tools/Reporting: TestRail etc. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Locators
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;JsonPath - for APIs that return JSON responses&lt;/li&gt;
&lt;li&gt;CSS Locators - for UI elements &lt;/li&gt;
&lt;li&gt;XPath - can be used for both HTML/XML doc types&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Testing Fundamentals:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Test Plan Creation and Test Strategy (Manual and/or Automated)&lt;/li&gt;
&lt;li&gt;Test Execution&lt;/li&gt;
&lt;li&gt;Logging and Managing Bugs &lt;/li&gt;
&lt;li&gt;Regression Testing/Smoke Testing&lt;/li&gt;
&lt;li&gt;Testing in Production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;My Automation Journey&lt;/em&gt;&lt;br&gt;
Years ago, I worked for a well known global IT company and they were upgrading their projects by shifting from Manual to Automated testing. Back then, I was originally a Java developer. The manual QAs don't have knowledge on programming so I was assigned to explore the automation tools available. &lt;u&gt;We had to do a lot of research and trial phases&lt;/u&gt; on which automation stack will be easier to implement and which was most cost-effective for our clients. &lt;/p&gt;

&lt;p&gt;As years went by, I have seen many test frameworks evolve. We now have a lot of great tools out there and I found a place that got everything you need to help you get started with automation. &lt;/p&gt;

&lt;p&gt;Are you also shifting from Manual to Automated Testing? &lt;br&gt;
Are you building a team of skilled Automation Engineers? &lt;br&gt;
Are you an experience Automation Engineer and want some certifications? &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check Out -&amp;gt; &lt;a href="https://testautomationu.applitools.com/" rel="noopener noreferrer"&gt;Test Automation University&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Whether you are developing a desktop or mobile app, you can follow their learning paths and focus on what fits your project. &lt;/p&gt;

&lt;p&gt;FREE test automation courses with videos, transcripts, quizzes, credits, ranks badges, and certificates!&lt;/p&gt;

&lt;p&gt;Good luck and Happy Coding!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.S. This post is NOT sponsored. This is a personal recommendation for newbies in Automation. Even if I'm experienced in automation, I still enjoy collecting certifications and badges.&lt;/em&gt; #neverStopLearning &lt;/p&gt;

</description>
      <category>automation</category>
    </item>
    <item>
      <title>Top Skills You Need in Testing Big Data projects</title>
      <dc:creator>Renee Betina Esperas-Imperial</dc:creator>
      <pubDate>Wed, 31 Aug 2022 12:31:08 +0000</pubDate>
      <link>https://dev.to/reneebetina/top-skills-you-need-in-testing-big-data-projects-32fl</link>
      <guid>https://dev.to/reneebetina/top-skills-you-need-in-testing-big-data-projects-32fl</guid>
      <description>&lt;p&gt;🙋‍♀️ Hey! Are you also a QA/Tester/Automation Engineer wondering how to test Big Data/AI-related projects? If yes, this is for you.&lt;/p&gt;

&lt;p&gt;What is Big Data? What is AI? Most of us know these concepts but what is it like to actually work on it? Is it really testable? &lt;/p&gt;

&lt;p&gt;Aside from knowing the Testing Fundamentals, testing Big Data projects will push you to &lt;strong&gt;skill up&lt;/strong&gt;. I have listed here the combination of skills that helped me a lot in my previous big data project. &lt;/p&gt;

&lt;h2&gt;
  
  
  1. SQL/NoSQL
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SELECT * FROM ____ WHERE &amp;lt;column_name&amp;gt; = _____;&lt;/code&gt; &lt;br&gt;
This is basic. But you need to level up a bit. When working on a very large data set, the keyword &lt;strong&gt;LIMIT&lt;/strong&gt; will come in handy. Why LIMIT? Big data = lots of rows you can't even count. Limit is used to specify the number of rows returned. &lt;/p&gt;

&lt;p&gt;Another concept you might want to know about is &lt;strong&gt;partitioning&lt;/strong&gt;. &lt;br&gt;
What are partitions? These are smaller parts of a huge table. With partitions, queries will be faster. Partitions also help in 'organizing' your data. A common partition criteria is the 'date' (but it can be anything, depending on your DB or table structure and project implementation). So imagine a table with billions of records. Instead of traversing the entire table, it will only focus on a specific partition. &lt;br&gt;
&lt;code&gt;SELECT * FROM _____ &lt;br&gt;
WHERE &amp;lt;column_name&amp;gt; = _____ &lt;br&gt;
AND &amp;lt;partition_column_name&amp;gt; = ____ &lt;br&gt;
LIMIT ____ ;&lt;/code&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Bonus: SQL Cheatsheet
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1yu57zofr9vohj6f4ot7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1yu57zofr9vohj6f4ot7.png" alt="SQL Cheatsheet" width="800" height="1131"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Credits to the original owner (btw, I added the DISTINCT keyword here!)&lt;/em&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Bonus: Common Big Data Queries to check table definition and partitions
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DESCRIBE &amp;lt;table_name&amp;gt;;
SHOW CREATE TABLE &amp;lt;table_name&amp;gt;;
SHOW PARTITIONS &amp;lt;table name&amp;gt;;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Python / R
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Most common language for AI is Python and R. 
Check out &lt;a href="https://www.coursera.org/learn/python-crash-course" rel="noopener noreferrer"&gt;Google's Python Crash Course&lt;/a&gt;
This course is developed by Google employees and probably has the best content out there. &lt;/li&gt;
&lt;li&gt;R is usually for data analysis and visualization. 
Check out &lt;a href="https://www.coursera.org/learn/r-programming" rel="noopener noreferrer"&gt;R Programming Course from John Hopkin's University&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a QA, you don't need to master it but being knowledgeable on Python/R (or whatever programming language your company uses) will definitely help you understand the Developers especially when they say that a certain fix is "complex". &lt;/p&gt;

&lt;p&gt;Being confident in programming with Python is a real plus as you can also use this when automating your tests. There are lots of Python libraries that you can import for your UI/API/Data Testing.&lt;br&gt;
(I'll create separate articles for Test Automation soon! 🙂👍 )&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Background knowledge on Data Science / Statistics
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;What is clustering? What is k-means? What is Depth First Search (DFS) algorithm?&lt;/em&gt;&lt;br&gt;
If you are working on big data projects, there are lots of new terms from developers that you don't usually hear from usual projects.&lt;/p&gt;

&lt;p&gt;Check out &lt;a href="https://www.edx.org/xseries/mitx-computational-thinking-using-python" rel="noopener noreferrer"&gt;MITx's Computational Thinking using Python XSeries Program&lt;/a&gt; &lt;br&gt;
This online learning program comes with 2 courses: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.edx.org/course/introduction-to-computer-science-and-programming-7" rel="noopener noreferrer"&gt;Introduction to Computer Science and Programming Using Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.edx.org/course/introduction-to-computational-thinking-and-data-4" rel="noopener noreferrer"&gt;Introduction to Computational Thinking and Data Science&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I personally took this for about 3-4 months and it was worth it. Getting this course will help you understand data science/statistics terms that are usually used for Big Data/AI projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Background knowledge on Data Services
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;One good course I had in the past was &lt;a href="https://www.linkedin.com/learning/amazon-web-services-data-services-2" rel="noopener noreferrer"&gt;AWS Data Services&lt;/a&gt; on LinkedIn Learning. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Again, this depends on what your company will use. &lt;br&gt;
Getting to know your data services will definitely help you out in creating and expanding your test plan. &lt;br&gt;
i.e. What if the storage path is missing or not configured? What if there is no new file? What if the location exists but has no data at all? What if I upload a bad/corrupted data file?&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Big Data Warehouses and Other Tools
&lt;/h2&gt;

&lt;p&gt;Hadoop, Hive, Apache Spark, Apache Airflow and more. &lt;br&gt;
As a QA, you don't need to master them all. All you need to know is how you'll be able to navigate/monitor these tools for your testing. &lt;/p&gt;

&lt;h3&gt;
  
  
  In Summary ...
&lt;/h3&gt;

&lt;p&gt;There is a lot to learn. It will be overwhelming at first but eventually it will be your new normal. &lt;/p&gt;

&lt;p&gt;If there is one advice to (upcoming) Big Data QAs - &lt;strong&gt;"Never be afraid to ask your developers"&lt;/strong&gt;. Collaboration and communication is always the key. &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;Got QA or Automation questions? Feel free to reach out. I'm up for collaboration!&lt;/em&gt; 🙂&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>bigdata</category>
    </item>
    <item>
      <title>Sending Emails using Python with Gmail SMTP SSL Setup 2022</title>
      <dc:creator>Renee Betina Esperas-Imperial</dc:creator>
      <pubDate>Wed, 31 Aug 2022 10:09:28 +0000</pubDate>
      <link>https://dev.to/reneebetina/sending-emails-using-python-with-gmail-smtp-ssl-setup-2022-27bd</link>
      <guid>https://dev.to/reneebetina/sending-emails-using-python-with-gmail-smtp-ssl-setup-2022-27bd</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;(May 30, 2022) ​​Google no longer supports the use of third-party apps or devices which ask you to sign in to your Google Account using only your username and password.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, we have to use an &lt;strong&gt;App Password&lt;/strong&gt; - this password is specific to the device type (Windows, Mac, etc.) and specific to the Google application we will use (Mail, Calendar, YouTube, etc.)&lt;/p&gt;

&lt;p&gt;If you are building a new python app that sends an email using GMAIL, follow the steps below: &lt;/p&gt;

&lt;h2&gt;
  
  
  Part 1: Setup you Python Functions to generate and send an email
&lt;/h2&gt;

&lt;p&gt;In this example, we have the email module which contains the ff. functions: &lt;br&gt;
a) &lt;code&gt;generate_email&lt;/code&gt; - we set a sender, recipient, subject, body and attachment. &lt;br&gt;
b) &lt;code&gt;generate_error_report&lt;/code&gt; - custom email where attachment is not needed.&lt;br&gt;
c) &lt;code&gt;send_email&lt;/code&gt; - to send an actual email, configure a secure connection to Gmail SMTP_SSL server by declaring the right host and port.&lt;br&gt;
*host=&lt;code&gt;smtp.gmail.com&lt;/code&gt;&lt;br&gt;
*port=&lt;code&gt;465&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can check my full code: &lt;a href="https://github.com/reneebetina/python-demos/blob/main/challenge_send_email/emails.py" rel="noopener noreferrer"&gt; [Github] Python Functions to Generate and Send an Email&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 2: Gmail Setup
&lt;/h2&gt;

&lt;p&gt;Once your Python script is ready, you can now configure the Gmail account you will use for this automation. &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Enable IMAP
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;On your computer, open Gmail.&lt;/li&gt;
&lt;li&gt;In the top right, click Settings Settings and then See all  settings.&lt;/li&gt;
&lt;li&gt;Click the Forwarding and POP/IMAP tab.&lt;/li&gt;
&lt;li&gt;In the "IMAP access" section, select Enable IMAP.&lt;/li&gt;
&lt;li&gt;Click Save Changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frcxk76kfahdvwajhuoab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frcxk76kfahdvwajhuoab.png" alt="Enable IMAP" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Enable 2FA
&lt;/h3&gt;

&lt;p&gt;Go to your &lt;a href="https://myaccount.google.com/security" rel="noopener noreferrer"&gt;Google Account Settings &amp;gt; Security &lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6i9tzmk873jge5wg3kg7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6i9tzmk873jge5wg3kg7.png" alt="Enable 2FA" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*IMPORTANT: &lt;em&gt;&lt;u&gt;Make sure that this is ON for you to access the next step. &lt;/u&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Generate an App Password
&lt;/h3&gt;

&lt;p&gt;Go to &lt;a href="https://myaccount.google.com/apppasswords" rel="noopener noreferrer"&gt;Google Account &amp;gt; App Passwords&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk7dxs603go066fyjjom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk7dxs603go066fyjjom.png" alt="App Passwords Page" width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select App: &lt;strong&gt;Mail&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft77fzmwcqigpa9rs0tem.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft77fzmwcqigpa9rs0tem.png" alt="Select App" width="255" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the specific device you are using&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmpsso1vn4y9of0em7jgm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmpsso1vn4y9of0em7jgm.png" alt="Select Device" width="292" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;GENERATE&lt;/strong&gt; and you will see a prompt like this:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdqck6o0egctn4olztnpp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdqck6o0egctn4olztnpp.png" alt="Generated App Password" width="795" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you are connecting to the Gmail SMTP server, you will use this App Password instead of your personal Gmail password. &lt;/p&gt;

&lt;h2&gt;
  
  
  Running your Python Script to send your emails
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xmyp7sfekhof733ia3k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xmyp7sfekhof733ia3k.png" alt="Sample Run" width="674" height="237"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;You can do this approach or directly declare the sender (your gmail) and your app password in your Python script.&lt;/em&gt; &lt;/p&gt;




&lt;p&gt;&lt;em&gt;If your still encounter errors on your setup, you can also read this thread: &lt;a href="https://support.google.com/mail/?p=BadCredentials" rel="noopener noreferrer"&gt;https://support.google.com/mail/?p=BadCredentials&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>smtp</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
