Skip to content

Testing and QA (OLD)

Esteban Vergara Giraldo edited this page Nov 15, 2024 · 1 revision

Usability testing

FORM THAT WE MADE

Introduction

This part of the survey describes the purpose of the Softserve Academy application, a platform designed to create online learning paths, where users can access centralized resources in an organized way. The test asks participants to perform several steps within the app, such as creating an account, setting up their preferences, and completing a learning path with Python as the target skill.

The purpose of the test is to evaluate the usability, focusing on how intuitive the interface is, its visual aesthetics, and the functionality of the platform. This will help gather feedback on how users perceive the overall experience and whether it meets the expectations of facilitating the learning process in a fast and personalized manner.

micrsoft forms test

Design

This part of the survey is designed for users to share their opinion on how easy they found the application to use. They are asked about their experience with things like signing up, using the control panel, customizing their preferences, and navigating through different sections. In addition to a rating from 1 to 5, they are optionally asked to explain their answers, which helps to better understand if there was anything they didn’t like or if they encountered any problems.

micrsoft forms test

Creativity

This part of the survey focuses on the creativity and innovation of the application. Users are asked whether they consider the app to be novel or disruptive in the market. The idea is for users to give a rating from 1 to 5, depending on how much they feel the app offers something different or innovative. Then, they are optionally asked to justify their answer by explaining what aspects of the app seem original or different to them, or, if they think it doesn't bring anything new, why they believe that.

micrsoft forms test

Viability

This part of the survey focuses on evaluating the viability of the application, specifically whether it effectively fulfills its intended purpose. In this case, the question seems to ask whether the application successfully creates and displays routes as it was designed to. Users rate how well they believe the app performs this specific function, and then, optionally, they can justify their rating by explaining whether they were able to complete these actions smoothly or if they encountered any difficulties.

micrsoft forms test

Esthetics

This part of the survey focuses on understanding how visually appealing the application is to users. They are asked to evaluate the design and general appearance of several important sections of the app. The goal is to determine whether users find the application visually pleasant and whether its design contributes to a positive user experience. They also have the opportunity to justify their ratings, which provides valuable insight into which areas of the visual design may need improvement.

micrsoft forms test

Error reports:

EXCEL WITH CALCULATED AVERAGES

micrsoft forms test stats excel with the info

Design: The average score is 3.7. It's not bad, but there's room for improvement. Users think the design could be a bit easier to use, mostly in the parts of the profile since they didn't know how to fill some information.

Creativity: It scored 4.2, which is pretty good. Users see the app as innovative, but there’s always room to make it feel more unique or different.

Viability: The average here is 4, meaning the app serves its purpose, but there may be small issues that didn’t work perfectly for some users. Overall, it's on the right track.

Aesthetics: With a 3.96, most people think the app looks good, but there are a few details that could be improved to make it more visually appealing like in the design the profile was really simple in comparison to the other views.

Functional testing

Plan

To test our application we focus on doing E2E testing simulating all the user stories, like how the user enters the application, creates an account, logs ing, updates their profile, creates a learning route and enters a content. We made tests for the admin too, how he adds a new content to the page and how he creates an skill.

Some parts o the test where made to be like random with the user imputing a random information in the page, like selecting between, video, text or audio for their preferences, some others where made to test the complete path of a given user.

We use Playwright as our testing tool at the end for this sprint, playwright allowed us to create the user tests with ease.

While the test where being made we manage to find many bugs of how the application behaves, but most of the come to the conclusion that we are missing information in the database, but the app worked in the parts where the data base has information.

We didn't plan any unit testing since like we saw in the class it didn't look feasible, for example testing the database alone didn't give us the whole perspective of how the user interacted with it, we may do unit testing in the future to test something like performance but we see that it's best to keep doing and improving E2E testing since most of the problems can be seen through it.

Error reports:

Here we can see the result view that playwright gives us to analyze where the app failed

playwright test result example playwright test result example

Error Report 1: Error when selecting video as content preference

Title: Error when trying to create content with video preference selected
Description: When the user selects video as the preferred content type, the application fails to create the content. This prevents further interaction with the application and blocks access to the learning route.
Steps to Reproduce: 
1. Log in
2. Updating the profile selecting Video as content
3. Selecting a technology
4. And creating a learning path
Expected Result: The application should allow the user to create content with video preference and provide access to the learning route.
Actual Result: The user is unable to create content, and access to the learning route is blocked.
Severity: High
Environment:
    Operating System: Windows 10
    Node.js version: 21
    Playwright version: Latest
    Python version: 3.12
    Django version: 5.1

WhatsApp Image 2024-09-09 at 6 48 49 PM

Error Report 2: Error when selecting audio as content preference

Title: Error when trying to create content with audio preference selected
Description: The application fails to create content when audio is selected as the preferred content type. This blocks access to the learning route and prevents the user from using the application.
Steps to Reproduce: 
1. Log in
2. Updating the profile selecting Video as content
3. Selecting a technology
4. Creating a learning path
Expected Result: The application should allow content creation when audio is selected and give access to the learning route.
Actual Result: The user is unable to create content, and the learning route is inaccessible.
Severity: High
Environment:
    Operating System: Windows 10
    Node.js version: 21
    Playwright version: Latest
    Python version: 3.12
    Django version: 5.1

WhatsApp Image 2024-09-09 at 6 48 49 PM

Error Report 3: User can log in while already logged in

Title: Ability to log in when already logged in
Description: The system allows a user to log in again even when they are already logged into their account. The previous session's data is not retained, and no security vulnerabilities were identified, but it disrupts access to the previous session's data.
Steps to Reproduce: 
1. Log in
2. Go home
3. Go to the log in view through the searching bar
4. Log in again
Expected Result: The system should prevent a user from logging in again while they are already logged in.
Actual Result: A user can initiate a second login, which results in the loss of access to the previous session’s data.
Severity: Low
Environment:
    Operating System: Windows 10
    Node.js version: 21
    Playwright version: Latest
    Python version: 3.12
    Django version: 5.1

image

Error Report 4: Negative time values can be set for resource preferences

Title: Negative time values allowed when setting preferences
Description: The application allows users to enter negative time values when configuring preferences, causing the system to malfunction.
Steps to Reproduce: 
1. Log in
2. Go in to preferences
3. Fill time with negative values
4. Create a learning route
Expected Result: The system should validate inputs and prevent negative time values from being entered.
Actual Result: Users are able to input negative time values, causing the application to crash.
Severity: Medium
Environment:
    Operating System: Windows 10
    Node.js version: 21
    Playwright version: Latest
    Python version: 3.12
    Django version: 5.1

image

Error Report 5: Unrealistic large time values allowed in preferences

Title: Unrealistically large time values allowed in preferences
Description: The system allows users to input excessively large time values when configuring preferences, which causes the application to behave unrealistically.
Steps to Reproduce: 
1. Log in
2. Go in to preferences
3. Fill time with excessively large values
4. Create a learning route
Expected Result: The system should set reasonable limits for the time values allowed in preferences.
Actual Result: Users can input extremely large time values, although the application continues to function.
Severity: Low
Environment:
    Operating System: Windows 10
    Node.js version: 21
    Playwright version: Latest
    Python version: 3.12
    Django version: 5.1

image

Software quality

1. Static code analysis

We tried to use Pylint for static code analysis to ensure that our Django project adheres to best practices in terms of code quality. We used a custom configuration file, .pylintrc, has been set up to enforce our code style, ensuring consistency across the project. This file includes specific rules and thresholds to manage warnings and errors, optimizing both development workflow and maintainability. But it didn´t work well

Key Benefits:

Early detection of syntax errors, unused variables, and potential bugs. Ensures adherence to naming conventions and code standards. Improves the readability and quality of the codebase.

2. Naming conventions

Our project follows a strict naming convention to maintain clarity and consistency:

  • PascalCase is used for naming Django models in alignment with Django's default style. This ensures that model class names are distinct and easily recognizable.
  • snake_case is adopted for naming functions and variables. This is the standard in Python and provides consistency across the codebase.
  • UPPER_CASE is reserved for constants, making them easily identifiable and ensuring that they are not unintentionally modified.

Why This Matters?

  • Enhances readability and reduces ambiguity in large codebases.
  • Promotes uniformity, making the code more maintainable and easier for teams to collaborate on.

3. Automatic testing

Functionality Type of Test Justification
User Registration End-to-End Ensures that new users can successfully create accounts and start using the platform without issues.
Profile Setup End-to-End Verifies that users can customize their profiles and preferences, a critical feature for personalized learning paths.
Path Creation End-to-End Validates that users can create new learning paths, ensuring the core functionality of the platform works as expected.
Resource Upload End-to-End Ensures that users can upload educational resources to their learning paths, maintaining the integrity of content management.
Content Update End-to-End Confirms that users can update and manage existing content, ensuring flexibility and dynamic content in the platform.

4. Extras

We manage to implement a Github Actions that tracks when a user does a push to the main branch, runs the apps and its tests to make sure that the bare minimum of the app is working and saves the result.

gitActions2

a huevoooo

Error reports:

When we tried to use Pylint, we couldn’t manage to make it work. The reason for the problem was that when we ran the analysis, the program also analyzed the libraries we used. If the libraries didn’t follow our conventions, the program failed and gave us the following console prompt.

PS C:\Users\USuario\Desktop\Code\py\SoftServe-Academy> pylint .\home\
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\USuario\AppData\Local\Programs\Python\Python312\Scripts\pylint.exe\_main_.py", line 7, in <module>
  File "C:\Users\USuario\AppData\Local\Programs\Python\Python312\Lib\site-packages\pylint\_init_.py", line 34, in run_pylint
    PylintRun(argv or sys.argv[1:])
  File "C:\Users\USuario\AppData\Local\Programs\Python\Python312\Lib\site-packages\pylint\lint\run.py", line 162, in _init_
    args = _config_initialization(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USuario\AppData\Local\Programs\Python\Python312\Lib\site-packages\pylint\config\config_initialization.py", line 45, in _config_initialization
    config_data, config_args = config_file_parser.parse_config_file(
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USuario\AppData\Local\Programs\Python\Python312\Lib\site-packages\pylint\config\config_file_parser.py", line 126, in parse_config_file
    return _RawConfParser.parse_config_file(file_path, self.verbose_mode)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USuario\AppData\Local\Programs\Python\Python312\Lib\site-packages\pylint\config\config_file_parser.py", line 113, in parse_config_file
    return _RawConfParser.parse_ini_file(file_path)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USuario\AppData\Local\Programs\Python\Python312\Lib\site-packages\pylint\config\config_file_parser.py", line 40, in parse_ini_file
    parser.read_file(fp)
  File "C:\Users\USuario\AppData\Local\Programs\Python\Python312\Lib\configparser.py", line 705, in read_file
    self._read(f, source)
  File "C:\Users\USuario\AppData\Local\Programs\Python\Python312\Lib\configparser.py", line 999, in _read
    for lineno, line in enumerate(fp, start=1):
                        ^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen codecs>", line 322, in decode
  File "C:\Users\USuario\AppData\Local\Programs\Python\Python312\Lib\encodings\utf_8_sig.py", line 69, in _buffer_decode
    return codecs.utf_8_decode(input, errors, final)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

User Tests

=====FORM=====

User Research Protocol

SoftServeAcademy

Main Objective

To evaluate the usability of the web platform to ensure an effective, efficient, and satisfying experience in creating and tracking personalized learning paths in the tech sector.

Test Logistics

The interaction of users with key system functionalities, such as creating learning paths, tracking progress, and customizing content, will be evaluated through a series of predefined tasks that will measure user efficiency and satisfaction in performing these activities.

Location: Where the participant chooses, as a form will be sent to complete the test.

Date: To be determined.

Duration: 5:00 - 20:00 minutes

Participants:

  • University peers
  • Family members of the group

Equipment:

  • Personal devices, as the test is already deployed.

Activity Flow for a Session

Once the evaluation team is assembled, the following activities will be carried out:

  1. Preparing the equipment for testing.
  2. Providing context to the test user.
  3. Conducting the session (performing tasks and answering questions).
  4. Thanking the user for their participation in the research.

Hypotheses, Tasks, and Questions

Hypothesis: The registration process is clear and easy to complete.
Task: Complete the registration process.
Question: Did you encounter any obstacles or confusion during the registration process?

Hypothesis: Users can log in without issues.
Task: Log into the platform.
Question: Were you able to log in without error? If not, what problem did you encounter?

Hypothesis: The profile setup is intuitive and easy to use.
Task: Set up the user profile.
Question: Was there any part of the profile setup that you found confusing or complicated?

Hypothesis: The learning path creation process is straightforward and does not present difficulties.
Task: Create a new learning path.
Question: Were you able to create a path without issues? What would you change about this process?

Hypothesis: Users can access courses without issues, and the course information is clear.
Task: Enter a course from the learning path.
Question: Were you able to access the course without issues? Did you find the course information clear?

Microsoft Forms-1

Microsoft Forms-2

Microsoft Forms-3

Microsoft Forms-4

Screenshot_4 Screenshot_5 Screenshot_6

Clone this wiki locally