Alright, testers, are you ready for some Agile fun? Whether you live for that “Aha!” moment of a bug discovery or automating test cases is your jam, this blog is for you. We’re hitting the gas on an exploration of Agile Testing.
Agile methodologies swell the testing world as dev teams speed up development like Indy 500 drivers. Did you know over three-quarters of companies are swerving towards iterative Agile these days? Wild stuff!
In this blog, we’ll dive deep into what exactly makes Agile Testing tick and why it’s clutch for today’s need-it-now release schedules. We’ll also cover the core Agile Testing principles that steer the ship. And you’ll get the lowdown on all the essential pieces that lock into the Agile planning and testing cycles.
We’ll compare Agile Testing to the traditional Waterfall method’s slow lane. You’ll be a certified Agile Testing ace by the time you finish reading. Buckle up – it will be one fun ride as we go Agile-style bug surfing! Whether fresh to Agile or a seasoned tester, I hope you find this explainer rad. Now, hit the gas; it’s testing time!
What is Agile Testing? (Definition)
Agile Testing refers to software testing methodologies compatible with modern Agile development practices like Scrum and Kanban. In traditional “Waterfall” development, testing occurs as a separate phase at the end of the process.
With Agile, testing is integrated throughout the development lifecycle in short iterative cycles called sprints. Testers work collaboratively with developers from the very beginning. This allows tests to be automated early and continually executed as features are developed.
Agile Testing aims to provide rapid feedback to help the team continually improve their product. Testers explore test plans and cases during sprint planning. They then confirm that user stories meet the definition of done criteria by testing working software incrementally.
Issues are documented in a backlog to guide further development. Regular stand-ups foster communication, so testing supports rapid problem-solving. This iterative feedback loop builds quality into the product from the start rather than discovered later.
Overall, Agile Testing is a flexible, collaborative approach where testing activities adapt to changing priorities, enabling fast yet high-quality delivery of working software. It’s an essential part of modern Agile best practices.
Now that we know what agile testing is let’s head to our next section, where we will learn why it is essential!
Why is Agile Testing Important?
Agile Testing rocks because it means bugs are found super early when they’re a breeze to fix. Here are a few big reasons why testing throughout development is so clutch:
- Early feedback is king. With tests running continuously during each sprint, issues immediately pop up before they cause major headaches.
- Quality is a top priority from the get-go rather than an afterthought. No more nasty surprises lurking around the corners late in the release cycle.
- Each sprint makes the product incrementally sweeter as requirements are tweaked based on real user input. Iterative improvements for the win.
- With testers tight with devs and product owners, everyone’s on the same page about goals and roadblocks. Better collaboration is huge.
- Automated checks mean changes can be validated ASAP without dragging teams down. Faster releases ftw!
- Testing flexes to focus just on requested features each sprint. No time wasted on unused specs.
- Risks are caught early, so decision-making is informed. Bugs aren’t found super late when they’re too expensive to vanquish.
Testing throughout sprints is vastly better than leaving it until the bitter end. Agile Testing makes quality a lean, mean, iterative machine.
With an understanding of why Agile Testing is so valuable, the next section dives into The Principles of Agile Testing that guide the approach.
The Principles of Agile Testing
Picture Agile Testing as a compass guiding teams through the vast terrain of software creation. It’s not just about testing; it’s a set of ideas that improve the whole process. These ideas change how teams talk, work together, and build software. In this section, we’ll explore the important Principles of Agile Testing – simple but powerful rules that ensure software is good and made in the smartest way possible.
1. Working Software as the Primary Measure of Progress
When the curtain falls, the audience’s applause shows true success on stage – not just elegant costumes and clever scripts. Agile Testing knows working software in front of real users deserves the loudest cheers. Progress isn’t measured by paperwork but by the power of a flawless performance.
Documentation matters less than hitting each choreographed mark and landing every line on cue. It’s not enough to look the part either; what audiences pay for is a spectacular show where every piece clicks.
Agile keeps teams focused under the hot lights, rehearsing until the final product wows. Just like any great production, quality, and enjoyment are what encore another round of praise. Incremental builds keep that validation flowing until standing ovations fill the theater at the product launch.
2. Self-Organizing Teams for Optimal Results
In any high-performing team, adapting to changes is key to winning. Like how a soccer squad works best without a hovering coach, Agile knows self-organizing squads score big results.
When you give a unit autonomy over substitutions, playcalling, and chemistry-building, they level up their coordination to beat any challenge ahead. They can see obstacles coming and audible their plays in real-time, NOT waiting on a third party.
This freedom sparks full commitment and allows natural talents to shine through. Rather than top-down rigidity, this fluid approach lets squads problem-solve like true teammates – passing solutions, defending each other, and firing on all cylinders as a well-oiled machine. Come crunch time, their molded bond and snap decisions consistently deliver the game-winning performance.
3. Early and Continuous Delivery of Valuable Software
Just like athletes focus on continuous improvement, Agile understands the value of frequent delivery. Rather than intense blocking for months and then an exam, it’s about steady sprints that deliver working results each time.
Trainers know true progress happens gradually – a little further each session. They don’t wait until the big game to showcase new skills. Early and often exposure gets real feedback to strengthen weaknesses. Users appreciate valuable additions along the journey, too.
No one benefits from late dumps of untested features. Incremental merges get early debugging, so issues don’t pile up at the last minute. Steady merging builds confidence for the big debut while giving users perks now. It’s a team effort to get in top form, so everyone celebrates hitting performance benchmarks together through early and continuous delivery.
4. Daily Collaboration is Key
Just like the daily pre-game huddles that energize any championship squad, frequent collaboration is key to high teamwork in Agile. Morning meetings are locker room pep talks where everyone locks in on the same game plan before taking the field. They promote unity over lone wolf strategies that fall short in the end zone.
Quick check-ins maintain alignment on dynamic challenges, subs for injury, shifting weather conditions – anything that impacts plays. Miscommunication breeds mistakes, so teamwork thrives on talking it all together daily. Pulse-checking morale keeps the energy fueled, too.
Most of all, it’s that instant problem-solving where teammates help each other grind out the W. When communication flows free and easy like this daily, playing like perfectly synchronized champions come game day becomes second nature.
5. Continuous Technical Improvement and Good Design
Just like elite athletes constantly hone their skills, Agile fosters technical mastery through continuous honing. No rest stops after qualifying – champions commit to daily drills, refining footwork and form. Trainers know techniques aren’t finalized with basic proficiency; the best get feedback and enthusiastically adapt.
Small tweaks compound over weeks, sculpting bodies like sculptors. Rather than ignoring limitations, this mindset drives daily problem-solving until bodies achieve perfect synchronization. Technical debt gets paid in full before hogging trophies. Excellence, not excuses, drives these competitors.
6. Continuous Feedback Ensures Business Alignment
In any strong partnership, constant communication fosters understanding. Just as entrepreneurs pivot lively ideas with client needs in mind, Agile thrives on continual feedback. Daily check-ins prevent drift from desired outcomes like navigational corrections refine the voyage.
Early exposure to concepts nips misalignment before time/money invested doubling back. With open ears, objections transform solutions, and shared problems cement trust. Valued guidance steers shared success more than mandated directions. This aligned approach is the rudder steering customer satisfaction into port, delivering exactly to the desired specifications.
7. Testing Parallel to Implementation Reduces Time
Imagine completely gutting your home and working room by room – you’d live in chaos for months! Agile works like a smart reno team, with multiple crews testing walls as others frame. Issues found early require tweaks, not full demolitions.
Our tester catches flickering lights while electricians are right there to fix the wiring. No one wants foundation cracks discovered after everything’s painted! Parallel progress is relaxed, preventing panicked scrambles down the line.
You enjoy the new cookout area this weekend while landscaping continues. Agile speed results so everyone can break in the upgrades sooner.
8. Consistent Development Pace for Testing
In any marathon, maintaining an even pace is key to staying strong to the finish. Testing with Agile is like dedicated training – steadily chipping away at mileage each week. Going out too fast means hitting the wall early and quality suffering later.
But taking it slow and steady builds endurance so the full course can be crushed at top performance without fail. Sprinters may surpass initially but burn out before victory. Steady testers avoid crunch cycles, too, keeping stress low and catch rates high.
It’s not about who’s fastest, but faithful training bringing out their absolute best when it counts. By race day, methodical effort means testing is primed to go the distance without compromising quality or missing a single defect.
9. Regular Reflection for Continuous Improvement
Life’s like one big (yet fun) learning journey. Along the way, the most successful travelers regularly look back to see how far they’ve come – and ponder how to get even farther faster! Agile teams do the same. After sprints, they gather insights from their expedition, like climbers reviewing their route up the peak.
What challenges did they face?
What proved most efficient?
Which tools or tactics helped you navigate smoothly?
Sharing stories sparks new ideas to level up their camp skills, navigation, gear – anything enabling swifter, stronger climbs. It’s not about patting oneself on the back but thoughtfully plotting the next chapter to reach higher summits. Constant reflection fuels perpetual growth on their lifelong adventure.
10. Emergent Architecture and Designs
Nature proves the strongest designs emerge from dynamic collaboration, not top-down mandates. Just as forest ecosystems self-organize interdependence, Agile trust teams’ synergy sparks innovative solutions.
Rather than decisive plans, problems and their fixes evolve commune-style. When deer browse among trees, adapting together over seasons, their partnership thrives resilient to environmental shakes.
So, architecture surfaces from the ground up, cooperation, shared challenges, and incubating design solutions beyond any blueprint’s visions. This organic blossoming ensures teams stay nimble enough to change like the flexible redwoods lining the coast.
11. Adjusting Behavior for Effectiveness
Much like how we review our habits to improve ourselves, Agile teams regularly check how their methods work. Just like we’ll flip through our fitness journal to see where we can level up, they think about workflows to ditch slow parts.
What drained their energy during the last sprint?
Which rituals feel like a grind versus a groove?
Over candid coffees, ideas simmer about tweaks to make each task breezier towards their goal. This reflective spirit fosters constant calibration – not resting on wins, but eager to optimize their team’s happiness and results. Adaptation is how they continuously reach their highest potential.
12. Face-to-Face Communication for Efficiency
Have you ever noticed how grabbing a friend for coffee does more than endless text threads? Teams learn this, too, with Agile. Nothing thickens relationships like ditching devices and leaning in – like how bumping into your neighbor by the mailbox will lead to a much longer chat than waving from your front door.
Seeing each other’s expressions in person is worth its weight when you need fast help or want full understanding. Video calls may cover topics, but real sparks fly from spontaneous ideas by the water cooler. For smoother collaboration, nothing tops unfiltered human bonding.
Agile Testing isn’t just about checking code – it’s about working together smartly in the software world. These principles remind us to focus on making things that work, improving every day, and talking to each other like friends. By following these simple but powerful rules, teams can build great software in the best way possible, making everyone happy.
Now that we’ve uncovered the essential principles of Agile Testing, it’s time to delve into the next phase: “What Does Agile Plan Include?” In this section, we’ll explore the key components of an Agile plan, unveiling the roadmap that keeps Agile teams on the right track. So, let’s continue our journey to discover how Agile planning helps transform these principles into action.
What Does Agile Plan Include?
An Agile project plan is way less rigid than those old-school Waterfall plans. Instead of doing some massive upfront design, it uses an iterative process to guide testing and development in bite-sized chunks.
The basic plan will give a high-level overview of the release schedule. So maybe you block out quarters or months to aim for updates. It breaks the work into user stories – short descriptions of features from the user’s POV. These get estimated, prioritized, and slotted into sprints. Story points indicate complexity rather than dates.
The plan also maps out the sprint lifecycle. This includes daily standups to check progress, sprint reviews to show off work, and retrospectives to improve. It outlines what “done” means for user stories. Finally, the plan decides how to visualize workflow using a Kanban or Scrum board. This helps track backlogs and see where you’re at at a glance.
Keeping it lightweight is key so you can adapt easier to changes instead of rigidly sticking to some mega-detailed upfront blueprint.
This covers the essential elements typically included in an Agile plan. The next section dives into the Agile Testing Life Cycle – the iterative process those plans aim to facilitate.
Agile Testing Life Cycle
Like building a car and ensuring it runs smoothly, software development goes through a series of steps to ensure it works as expected. This journey is known as the Agile Testing Life Cycle. Picture it as getting a new car ready for a long road trip. We’ll guide you through each phase of this journey in simple terms, just like planning a road trip, so you can understand how Agile Testing ensures software works without surprises.
Phase 1: Requirement Analysis
The first phase of the Agile Testing life cycle is Requirement Analysis. This is a critical step where testers work closely with stakeholders to understand what problems must be solved. We hold discussions to determine the necessary functionality from the user’s perspective.
Testers actively seek input from future software users through surveys, interviews, and focus groups. This helps uncover hidden requirements and edge cases that may not be obvious. User stories are drafted to capture needs in a simple, clear format.
Details like workflows, data requirements, interfaces, configurations, and more are explored. Edge scenarios involving various user types are also evaluated. Requirements about usability, accessibility, security, and performance are considered.
Once understood, requirements are documented and prioritized. This informs product planning and development efforts. Conditions are living documents that may evolve further as understanding improves. The goal is to set a solid foundation before development begins.
Thorough upfront analysis helps confirm the project aligns with real-world needs. It prevents wasting effort on unnecessary features and ensures key scenarios aren’t overlooked.
Phase 2: Test Planning
In the Test Planning phase, testers analyze the requirements to strategize the testing approach. It’s like plotting the route for a road trip – we need to determine the destination and best way to get there.
The test team identifies the different types of testing needed, like unit, integration, functionality, performance, etc. Test cases are drafted to cover features, edge cases, and workflows and address risks.
These test cases are linked to requirements and user stories. Test data requirements are outlined. Test environment needs such as servers, tools, and browsers are determined. Responsibilities are delegated to create an efficient testing matrix.
Test automation possibilities are investigated. Plans are made to implement reusable automation frameworks and scripts. This helps test repetitively and at scale.
Risk assessments are conducted to prioritize test cases. A test plan document and test management tool (like Jira) are created. Metrics are identified to measure success.
Contingency strategies are put in place for disruptions. Finally, the test plan is reviewed to ensure all bases are covered before development begins. This organized roadmap sets testing up for success.
Phase 3: Test Design and Execution
In the Test Design and Execution phase, test cases created during planning are now formalized into detailed, repeatable scripts and scenarios. Clear steps, expected results, and inputs/outputs are documented for each case.
A test environment matching production is prepared with matching servers, tools, and browsers so testing mimics the real user experience. Any needed test data is either created or seeded into the system. Automated regression test suites are developed using a framework, with unit tests targeting modules and integration tests verifying interfaces work as expected.
Testing commences at the agreed frequency, such as with each code commit or full release. Automated tests run continuously via a CI/CD pipeline to catch bugs early. Manual testing kicks into high gear as testers run the formalized test scripts against newly developed features, recording any issues found centrally in tools like Jira.
Testers emphasize edge scenarios designed to break assumptions and evaluate usability to ensure an intuitive user experience. Performers are black box testers who execute the tests unthinkingly, while developers run white box tests with knowledge of the underlying source code and algorithms.
Extensive testing of data, operations, and functionality under the hood probes varying application paths and performance under load. Security vulnerabilities are also thoroughly investigated using techniques like penetration testing while accessibility is examined.
The continuous feedback helps iron out defects proactively rather than waiting until later, minimizing rework costs. Fixes are fully re-tested and verified before new code can be accepted.
Phase 4: Defect Reporting and Retesting
During the testing process, any issues discovered are documented in a defect-tracking tool such as Jira or Bugzilla. Clear steps to reproduce, expected vs. actual results, and screenshots help communicate problems to developers.
Issues are prioritized based on severity and risk level. Testers may add automated checks for recurring faults. Initially identified technical debt is also reported. With each new code build, tests are re-run to validate fixes. If errors remain, more information is gathered through discussions. As fixes are completed, testers re-confirm resolutions and close defects.
Sometimes, a fix for one issue reveals new problems. The back-and-forth continues until all tests pass regression. Developers may need guidance on edge cases. Test automation helps regression scale. However, some unique scenarios still require manual retests.
A well-managed defect lifecycle ensures smooth hand-offs between test/dev teams. Quantified quality metrics showcase progress and aid improvements. With every iteration, the product and process get stronger as known issues are resolved through continuous integration of quality activities.
Phase 5: Closure and Summary
As testing is completed for a release, testers conduct a thorough review of the outcomes. Charts and dashboards quantify achievements, including metrics like defects found and fixed, tests executed, code coverage, etc. This helps evaluate the efficacy of the overall test strategy and excellence of execution.
A formal testing closure report is prepared, summarizing testing efforts across all phases, from planning to retesting. Key takeaways, best practices learned, challenges encountered, and recommendations are included. Early risks that became issues are documented. Useful test assets are archived for reuse later.
An exit meeting shares this report with stakeholders to reflect on testing’s value addition. Feedback is gathered on how testing processes and culture can improve. Pending work for future releases is identified.
Once validated against all acceptance criteria, the software is deemed “done.” A knowledge base of testing artifacts helps onboard new members efficiently in the future. Retrospectives identify iterative enhancements for continuously strengthening quality practices.
A job well done is celebrated before moving on to the next challenging project! Lessons form a basis to evolve an organization’s Agile Testing Maturity.
The Agile Testing Life Cycle is like a well-planned road trip, ensuring software works smoothly without surprises. By understanding these simple phases, we can easily navigate the software testing journey. Just as a road trip becomes memorable with proper planning, Agile Testing ensures that software is reliable and ready for use.
Now that we’ve explored the Agile Testing Life Cycle let’s shift gears and compare it with the traditional Waterfall approach in the next section: “Waterfall vs. Agile Testing.” We’ll uncover the differences between these two methodologies and help you choose the right path for your software development journey.
Water Fall Vs. Agile Testing
The Waterfall and Agile frameworks represent different approaches to software development and testing. In the traditional Waterfall model, development flows sequentially through separate phases like requirements, design, coding, testing, and deployment. However, this linear process does not adapt well to changing needs and priorities.
Agile methods like Scrum and Kanban take a more iterative approach through short work cycles called sprints. Testing is integrated continuously rather than left until the end. This provides quicker feedback loops and makes the process more adaptive and collaborative.
The table below highlights some of the key differences between how testing is handled under the Waterfall versus Agile models across five essential aspects:
Aspect | Waterfall Testing | Agile Testing |
---|---|---|
Timing of Testing | Testing occurs in a separate phase at the end of development | Testing is integrated throughout development in short iterative cycles |
Testing Approach | A single comprehensive test plan is created upfront | Test plans are flexible and evolve iteratively based on frequent feedback |
Feedback Loops | Long feedback cycles as testing is sequential | Rapid feedback cycles through continuous testing after each increment |
Priority | Quality is an afterthought focused at the end | Quality is a high priority built into each incremental development phase |
Adaptability | Not adaptive to changing requirements once development starts | Adaptable to changing priorities and requirements each sprint |
In summary, Agile testing embraces a more iterative approach than traditional Waterfall models. Frequent feedback loops help catch and fix issues early. Testing is also adaptable to changing needs.
This concludes the comparison between Waterfall and Agile testing. The next section will explore Agile Testing Strategies – specific techniques that can be employed in the Agile testing process.
Agile Testing Strategies
With software development increasingly moving to Agile methodologies, testing practices must also adapt. Agile testing utilizes specific strategies to embed quality assurance activities seamlessly throughout the iterative development process. Some essential techniques empower teams to validate work and obtain rapid feedback continually
1. Test-Driven Development (TDD)
TDD embeds a culture of quality by utilizing test cases as living documentation and design artifacts. Tests are programmatically constructed before implementation code, driving the minimal functionality required while ensuring defects are uncovered incrementally and rectified immediately.
This inverted “test-first” approach cultivates a systematic, iterative process where tests validate software features that meet intended specifications from initial development phases. Failure states explicitly capture edge conditions and expected behavior, preventing regressions and creating robust solutions.
2. Pair Programming
Have you noticed projects go faster with a partner? Two minds tackle problems more efficiently than solo like pairing in Agile amplifies focus. Ideas volley rapidly as one code while the other spot-checks for errors. Fresh perspectives question assumptions, avoiding redundant work.
Switching drivers prevents fatigue, catching lapses the tired programmer misses. Together, they utilize diverse skill sets, just as duos leap taller hurdles than alone. This synergy doubles productivity while catching bugs before they fester.
3. Continuous Integration (CI)
Just like builders catch flaws early through timely inspections, CI enables rapid iterations. Every component added undergoes automatic quality checks before issues compound. Glitches don’t lurk uncaught – testing gives immediate thumbs-up or signal fixes needing to be addressed ASAP. This prevents intertwining imperfections, resulting in late demolitions.
Constant diagnostics maintain integrity during incremental enhancements versus delayed assessments missing cracks. Thanks to continuous oversight, flawless construction emerges from many small approvals versus final inspection failures.
4. Behavior-Driven Development (BDD)
Have you ever struggled to send something back because the instructions were gibberish? BDD speaks its testing plans in a language customers comprehend. Rather than CAD blueprints, it shares stories of what matters most to users in their own words.
This clarity ensures tech teams solve the right problems while clients understand solutions. Daily check-ins flow freely as everyone weighs in simply on what’s fixed or still broken. Understanding propels partnership like a contractor listening to clarify so the renovation nails need on the first try.
5. Regression Testing
Just like inspecting for cracks after each remodel step, regression testing checks that updates don’t undo earlier work. Automated repeat checks happen with every new change, so bugs surface fast.
Contractors know immediately if tile or wiring got bumped out of place rather than finishing, only to find the walls weren’t reinforced correctly. This real-time feedback throughout the job speeds up completion while guaranteeing nothing got accidentally wrecked.
6. Exploratory Testing
Much like detectives piecing together clues, exploratory testing involves a deeper investigation to uncover elusive glitches. Testers approach this method by thinking like users, freely navigating through software features rather than rigidly following predefined test scripts.
They ask themselves, “Where could errors hide, escaping our initial view?” By breaking free from scripted procedures and exploring from various angles, they identify mistakes that may go unnoticed when relying solely on preplanned test scenarios.
This approach is akin to throwing out hunches and guessing where vulnerabilities might exist, thus exposing weak points that could lead to genuine user confusion. By searching with an open mind, exploratory testing reveals subtle faults that scripted tests might gloss over but can significantly impact clients’ experiences when the software is in actual use.
7. Risk-Based Testing
Risk-based testing prioritizes the evaluation of high-risk components, which, if compromised, could have a significant impact on users. Teams employ techniques like threat modeling and security assessments to pinpoint the most vulnerable parts of the system.
These vulnerable areas receive extra testing attention to uncovering issues before the software’s launch proactively. It’s akin to keeping a vigilant eye on the horizon from a pirate ship, spotting potential storms in advance. Addressing the most significant risks early minimizes overall exposure, instilling confidence in end users.
Employing the right combination of Agile testing strategies helps embed quality activities at every step. This ensures issues are identified and addressed early through continuous collaboration and integrated validation practices. The iterative techniques promote rapidly evolving, secure, reliable solutions aligned with business needs.
Conclusion
Well, folks, that’s our thrilling adventure through Agile Testing! We’ve learned what it is, why it’s essential in today’s fast software world, and even explored its guiding principles and planning.
But hold on to your hats because we didn’t stop there! We hopped on the Agile Testing Life Cycle rollercoaster, comparing it with the old-school Waterfall method. It’s like comparing a high-speed race car to a horse-drawn carriage!
And don’t forget our trusty sidekicks – the Agile Testing Strategies. They’re like the secret ingredients that make our software awesome, from Test-Driven Development’s puzzle-solving to the buddy system of Pair Testing.
So, whether you’re a seasoned pro or just starting, Agile Testing is your trusty compass. It’s all about being flexible, working together, and ensuring our software shines.
As we wrap up, remember that Agile Testing isn’t just about rules; it’s a way of thinking that celebrates teamwork, being adaptable, and delivering fantastic software with a smile. Here’s to testing the Agile way, where every challenge is a chance to show our software superpowers!
Further Reads:
What is Software Development Life Cycle: SDLC Explained!
What is Collaborative Coding? Pair Programming, Mob Programming!
The Ultimate Code Review Checklist to Master Code Quality!
Developer Productivity: What is it & How To Measure it?
Test Plan for Software: What, Why and How to Write It?
11 Agile Project Management Tools You Should Use in 2023
Usability Testing: Definition, Importance & How to do it?
Related posts
About Bit.ai
Bit.ai is the essential next-gen workplace and document collaboration platform. that helps teams share knowledge by connecting any type of digital content. With this intuitive, cloud-based solution, anyone can work visually and collaborate in real-time while creating internal notes, team projects, knowledge bases, client-facing content, and more.
The smartest online Google Docs and Word alternative, Bit.ai is used in over 100 countries by professionals everywhere, from IT teams creating internal documentation and knowledge bases, to sales and marketing teams sharing client materials and client portals.
👉👉Click Here to Check out Bit.ai.