Posts Tagged ‘software development’

Slack and AWS Team-Up to Drive Agility in Software Development

Friday, July 10th, 2020

Why? Because new shared initiatives make it easier and engaging for teams to manage their AWS resources in slack. AWS (Amazon Web Services) and Slack Technologies declared an extended agreement to deliver innovative solutions for intensifying the industry workforce collaboration and communication. The goal is to help distributed development teams communicate and become extra agile in maintaining their AWS resources from inside Slack.

How?

Slack will relocate its comprehensive voice and video calling capabilities to Amazon Chime (a communication service by AWS that enables users to chat, place business calls, and meet). Besides, Slack leverages AWS’s global infrastructure to promote the rapid adoption of its platform by business customers and to proffer data residency to them by which they can independently choose the country/region in which their data is stored at rest while satisfying the compliance necessities. Slack will continue to rely on AWS as its favored cloud provider to add innovative and collaborative features whereas, AWS will adopt Slack organization-wide to streamline and strengthen team communication.

Stewart Butterfield, the Cofounder, and CEO of Slack said that “The future of business software will be driven by the unification of cloud services and workstream collaboration tools. Moreover, the strategic partnering with AWS allows both companies to scale, satisfy demand, and deliver enterprise-grade offerings to our customers. By integrating AWS services with Slack’s channel-based messaging platform, we’re helping teams easily and seamlessly manage their cloud infrastructure projects and launch cloud-based services without ever omitting slack”.

The Integrations

Slack and AWS will also elongate product integration and intensify interoperability to help the teams in managing their AWS resources in Slack channels and Amazon Chime chat rooms with more prominent flexibility. Let us have a look at some of the integrations:

Amazon AppFlow Integration

It allows users to transfer data between the Slack and AWS services rapidly and securely. Need to run data flows regularly? Schedule them in advance or trigger them with specific business events with the help of Appflow Integration. In the coming months, AWS and Slack will enhance this capability, empowering users to transfer data bi-directionally between multiple Slack channels and AWS services in a single flow.

AWS Chatbot Integration

AWS Chatbot, an interactive agent, enables development teams to monitor and use AWS resources where they are already working– Slack. DevOps can execute AWS operational activities that incorporate monitoring, system management, and deployment workflows, all inside Slack. Besides, AWS Chatbot is already in use by several other teams across the globe to enhance the application development process. In the coming years, AWS Chatbot service will consolidate 175+ services of AWS to give developers the ability to collaborate with their teams and help them maintain their cloud-based services without dropping Slack.

AWS Key Management Service with Slack Enterprise Key Management (EKM)

EKM enables its customers to utilize their keys stored in the AKMS (Amazon Key Management Service) to encrypt essential files and messages. Slack leverages AWS’s security services like the AWS Key Management Service for distribution and control of cryptographic keys. Invented for security-conscious or regulated company customers seeking improved visibility and control over their data in Slack, over 95+ firms are now utilizing the solution to handle their encryption keys.

Amazon Chime

To ensure an upgraded and comfortable calling experience, Slack Calls is migrating to Amazon Chime’s voice and video calling infrastructure. Slack will leverage AWS’s proven infrastructure to deliver excellent and reliable user experiences. Soon, AWS will power audio, video, conferences, and screen-sharing capabilities in native Slack Calls. Besides, the transition will allow adding new features, such as mobile video, so users can continue to rely on Slack for secure industry communication.

Working Together to Unlock Enterprise Innovation

“Collectively, AWS and Slack are providing development teams the ability to collaborate and innovate faster on the front end with applications and the ability to manage their backend cloud infrastructure efficiently. We look forward to operating with Slack to increase the ways we can help our customers innovate in the world of cloud,” said Andy Jassy, CEO of AWS

How DevOps is Propelling Business Growth

Tuesday, June 16th, 2020

People often confuse DevOps with a tool or a team, rather it is a process or methodology that uses modern tools for improving the communication and collaboration between Development and the Operations teams and hence the term “DevOps”. Moreover, DevOps has come out of being just a buzzword, it is now covering the mainstream and has gained immense popularity at an extraordinary level forming an entirely new business world.

DevOps provides agility and continuous delivery that support organizations in dealing with real-world industry scenarios like growing speed and complexities. It further assists with both customer and business-level applications empowering digital transformation.

User-based applications demand variations and implementations based on the feedbacks in an agile timeframe. Also, business applications require exceptional performance and robust, automated development & deployment methods to stay in sync. with the consistently evolving market trends. Several organizations have started adopting the business version for ensuring the best strategies for enhancing the infrastructure and security measures. Speed is amazing until quality starts to degrade likewise quality is worthwhile only if the deliverables are reaching customers in a fleet and reasonable time frame. Hence organizations consider DevOps as the key component in software development as it bridges the gap between speed, efficiency, and quality.

DevOps Cycle: The Six Fundamental Cs

Continuous Business Planning: The initial step in DevOps revolves around exploring potential avenues of productivity and growth in your business, highlighting the skillset and resources required. Here, the organizations focus on the seamless flow of value stream and ways of making it more customer-centric. 

Collaborative Development: This part involves drafting a development plan, programming required, and focusing on the architectural infrastructure as it the building block for an enterprise. It is considered as a business strategy, working process, and an assemblage of software applications that promotes several enterprises to work together on the development of a product. Whereas, the infrastructure management incorporates systems management, network management, and storage management which are handled on the cloud.

Continuous Testing: This stage increases the efficiency and speed of the development by leveraging the unit and integration testing. The payoff from continuous testing is well worth the effort. The test function in a DevOps environment supports the developers in effectively balancing speed and quality. Leveraging automated tools can decrease the cost of testing and enable QA experts to invest their time more productively. Besides, CT compresses the test cycles by allowing integration testing earlier in the process.

Continuous Monitoring: Consistent monitoring maintains the quality of the process. Hence, this stage monitor changes and address the flaws & mistakes immediately, the moment they occur. Besides, it enables enterprises to effectively monitor the user experience and improve the stability of their application infrastructure.

Continuous Release & Deployment: This step incorporates monitoring release and deployment procedures. Here, a constant CD pipeline will help in implementing code reviews and developer check-ins seamlessly. This step incorporates monitoring release and deployment procedures. Here, a constant CD pipeline will help in implementing code reviews and developer check-ins seamlessly. The main focus is to depreciate the manual tasks, scale the application to an Enterprise IT portfolio, provide a single view across all the applications and adopt a unified pipeline that will integrate and deploy tasks as and when they occur.

Collaborative Customer Feedback & Optimization: Customer feedbacks are always important as it helps organizations to make adjustment decisions and actions that can enhance the user experience. This stage enables an instant acknowledgment from the customers for your product and helps you implement the corrections accordingly. Besides, customer feedbacks enhance the quality, decreases risks & costs, and unifies the process across the end to end the lifecycle.

Now let us move on to the how DevOps helps driving business growth but before that:

Business Benefits of Leveraging DevOps

Quick Development Leads to Quick Execution

DevOps have three significant and key principles: Automation, Continuous Delivery, and Rapid Feedback Cycle. These principles create a nimble, dynamic, productive, and robust software development lifecycle. Being an evolutionary extent of the Agile Methodology, DevOps uses automation to assure a seamless flow of software development. With the combined strength of the development and operations team, applications are promptly executed and releases are performed at a much faster rate.

Fewer Deployment Errors and Prompt Delivery

With DevOps, it is easy to execute a bulky level of codes in a relatively short period. Teams are enabled to share their feedback so that the errors are early recognized as well as solved early. This, however, results in shorter and robust software development cycles. 

Enhanced Communication and Collaboration

DevOps promotes a growing work culture and intensifies productivity, it inspires teams to combine and innovate together. To improve business agility, DevOps creates an environment of mutual collaboration, communication, and integration across globally distributed teams in an organization. It is because of the combined and collaborative work culture, employees have become more comfortable and productive.

Improved Productivity

Since DevOps is a continuous cycle, therefore it assures a quick development process along with minimal chances of errors. Efficient and seamless development, testing, and operational phases result in enhanced productivity and growth. Also, the cloud-based models significantly enhance the testing and operational stages in DevOps making it more robust and scalable.

New Era of DevOps: SecOps

SecOps is the effective collaboration between the Security and Operations teams offering best security practices for organizations to follow, a process to adhere, utilization of modern tools ensuring the security of the application environment. It enables organizations to supervise the analysis of security threats, incident management, security controls optimization, decreased security risks, and increased business efficiency. SecOps can be a social and transforming process for certain businesses demanding solutions for bigger security threats before the accomplishments of their objectives.

Role of HR in driving the Agile Organizations

Thursday, June 11th, 2020

Nowadays, organizations consider strategic agility a revolutionary change for the business. Agile transformations modify the process of how people work, engagement with customers, and employee management. Businesses aim for efficiency, consistency, and productivity by actively managing the activities right from the top. They incorporate quality and standardized processes to forecast the requirements and design the systems to ensure the availability of resources at the right place and right moment.

For now, businesses need to quickly assemble and reassemble their employees in teams depending upon the evolving demands but, this won’t be enough to drive agility. The teams would be requiring more workers beyond the organizational boundaries like the Freelancers, Outsourcing Partners, and Strategic Partners. By adopting such an approach, businesses can more flexibly respond to rising opportunities and effective business operations.

During an Agile transformation, the teams become more concentrated towards the technology and process. However, creating an agile organization is a people-oriented effort. Ultimately, it is the people who are being asked to transform their thinking abilities, working process, and implement change. As a people-oriented method, it pays to include HR with commanding the charge and helping people adjust to the changes.

Successful Agile transformation recognizes the role of HR in executing change

As enterprises are reconfiguring their methods to make agility a top preference, however, the process will bring new challenges and responsibilities for the HR. Moreover, it will entirely transform the structured management of HR, and the techniques which they were implementing in their talent management & services. In this blog post, we will outline the parameters that HR need to adopt for effectively enabling agility:

Implementing science and fact-based analytics

For driving agility, HR should utilize the tools and empirical studies of data to perform analytics on their own workforces and use the resulting insights to make evidence based decisions regarding the workforce management.

Creating a learning organization

The HR practitioners should focus on assisting the workers often, creating new skill sets, and gaining new learning promptly. This will create a culture inclusive of continuous learning, peer to peer learning, fostering informal, and recruiting the people with a keen ability to learn.

Talent Management Processes

Instead of viewing people as a series of fragmented parts, for example, a portion that needs to be hired, a portion that requires learning, a portion that requires progress on a career path, HR practitioners should look at the whole employee and their requirements, strategically and customize accordingly.

An Agile Operating Model for HR increasing business focus, efficiency and effectiveness

HR in Agile Organization

Bottom Line

It is very important to involve HR at the initial stage if you have just started with the agile transformation. However, HR should also participate in conducting talent audits of the company to explore the skills and knowledge that is lacking. This would be very effective as HR will create a hiring plan accordingly to bridge the gaps.

In addition, auditing the talent and modifying the recruitment plans before the full adoption of Agile, will enable the organizations to staff and skill the teams proficiently. HR with clearly defined career paths can lead to increased talent retention rates which will benefit the organization. To match up with the pace of agile transformations, HR requires to correctly reinvent themselves and the practices they support.

Manual Vs Automation Testing

Thursday, June 11th, 2020

In this article we are going to talk about advantages of Automation Testing over Manual testing.

What is Manual Testing and Automation Testing?

Manual testing is performed by hand. Quality Assurance (QA) specialists ensure that applications work properly by following conditions written in test cases. Despite its primitive nature, manual testing is still important, as certain functionality simply cannot be automatically tested. For example, wearables and mobile devices can require field testing in a physical environment. Mobile applications often undergo ‘monkey tests’ that detect bottlenecks during unpredicted stressful conditions. For instance, what happens if a user forgets a mobile device in their pocket with an application running and they tap the screen unintentionally? Is it possible that they’ll crash the app? Only manual testing can account for these scenarios.

Automation testing is a Software testing technique to test and compare the actual outcome with the expected outcome. This can be achieved by writing test scripts or using any automation testing tool. Test automation is used to automate repetitive tasks and other testing tasks which are difficult to perform manually

Now let’s discuss automated and manual testing in detail.

Automation Testing:

As per Industry standards and specialization our QA team automates the following types of testing:

Unit Testing is a level of software testing where individual units/ components of the software are tested. The purpose is to validate that each unit of the software performs as designed. A unit is the smallest testable part of any software. It usually has one or a few inputs and usually a single output.

Functional Testing is Software testing performed in order to detect the actual performance of an application’s functional requirements. Functional testing usually considers accuracy, interoperability, compliance, security, and suitability.

Regression Testing is defined as a type of software testing to confirm that a recent program or code change has not adversely affected existing features. Regression Testing is nothing but a full or partial selection of already executed test cases which are re-executed to ensure existing functionalities work fine

Graphical user interface (GUI) testing of software interfaces to check if the GUI meets all requirements.

These are the most common types of testing that we automate. Manual testing requires people and time, while automated testing reduces the demand on both resources. Also, automatic tests eliminate the risk of human error, making code more reliable. Now let’s see what tasks we can solve by automated testing.

Why you need automated testing?

Automated Testing Saves Time and Money

Software tests have to be repeated often during development cycles to ensure quality. Every time source code is modified software tests should be repeated.  Automated software testing can reduce the time to run repetitive tests from days to hours.

To handle repetitive tasks. If you’re constantly adding the same features or executing the same operations in a project, then the flexible nature of automated tests can be a great time saver.

To eliminate human error. Since automated tests are powered by tools and scripts, the chance of missing a bug or a defect decrease. This makes the testing process more reliable and time efficient.

For advanced GUI testing. Automated GUI tests detect and record differences in behavior between platforms — for example, across different web browsers or operating systems. Also, automated GUI testing effectively finds regression errors.

To test load and performance. There’s essentially no manual alternative for testing load and performance. Automated tests simulate hundreds and thousands of simultaneous users.

Why do you need Manual Testing?

Despite the seemingly broad coverage of automated testing, manual testing shouldn’t be underestimated. In fact, you have to test software manually before you run automated testing. Even though manual testing requires much effort, without it you cannot be sure that automation is possible. One of the key testing principles is that 100% testing automation is impossible. Manual testing is still necessary.

Let’s see which tests cannot be automated (or would take too much effort to automate):

Ad hoc testing is executed without preparation and writing test cases. During ad hoc testing, a QA specialist randomly tests the functionality of the system; his aim is to be creative, “break” the system and discover flaws.

Exploratory testing is defined as simultaneous learning, test design, and test execution. It is an approach to testing that values the tester as an integral part of the test process and shares the same values as the Agile Manifesto: Individuals and interactions over processes and tools. That’s how exploratory testing differs from ad hoc testing: in exploratory testing, you rely on your personal experience and design test cases in the testing process. An ad hoc testing can be done by any person without preparation.

User interface testing – By executing user interface tests, a QA specialist validates the properties and states of interface elements. Also, the QA team ensures that design elements in the interface match elements in the final layout.

As we can see, some tests should be performed manually. This especially relates to tests that focus on user interfaces and usability. Although we could automate basically everything, manual testing still provides an effective and quality check of bugs and improprieties.

The cases where manual testing has no comparison

UI Acceptance- Manual testing comes in handy when you test user interfaces, especially their visual aspects. Automated tests simply cannot detect colors of images or links, font sizes, gestures, and highlighting. Imagine that your application has a bug that causes a link to be so tiny that you can barely see it. Manual testers will immediately detect this bug, but automated tests are not able to notice the defect.

Initial development stage- Manual testing helps testers to detect bottlenecks during the initial development stage which results in less time and resources being spent on fixing bugs. Sometimes it’s not rational to invest money and human resources in automated testing during an unstable phase of a product’s development. However, in some approaches to software development, automated testing is a part of the process at any stage.

Short-term projects-Even though automated tests are aimed at saving time and resources, it takes time and resources to design and maintain them. In some cases, such as building a small promotional website, it can be much more efficient to rely on manual testing.

Non-automatable cases-Some tests cannot be automated; this especially concerns hardware-related tests. Writing scripts for automated checks of sensors, touchpads, and screens are almost impossible and rarely viable. Also, some data can be tested only manually. For example, you can automatically test if printer prints, but checking the quality and content of printed images is best done manually.

Conclusion

Manual Vs Automation Testing each have their strengths and weaknesses. What we want to stress is that no matter how great automated tests are, you cannot automate everything. Manual tests play an important role in software development and come in handy whenever you cannot automate the process.

Five best mobile app development software

Wednesday, April 1st, 2020

The year 2020 will witness approximately 3.5 billion smartphone users across the globe. That half the population of the world, and you might wonder how having your business mobile app can benefit you? Well, people spend 90% of their mobile time using apps.

So, it’s an excellent opportunity for your business to attract more customers and skyrocket your profits. There are many stellar mobile app development software available. By using those apps, you can create a seamless business mobile app for your potential customers. Below are our five best recommendations.

1. Appy Pie 

Appy Pie is a software that enables you to develop mobile apps without coding. The software provides numerous tools and options that allow creating the app easily. The process is pretty simple; you need to select an app design and add the desired features to it. Finally, you can publish it on the App Store or Google Play. The software offers you drag and drop editor, AI integration, training, and support too.     

2. Appian

Appian’s app development software focuses on enterprise apps. The software uses AI and automotive processes to present your company data most effectively. In the development process, you will need to use the visual editor to select the functions you want in your app. The software makes it possible to make complex tasks much simpler for the app user. If you run an enterprise, then Appian is your best bet.

3. Verivo 

Verivo is an app development provider, which offers you its AppStudio platform to create the app. You can comfortably develop an app, owing to the drag and drop interface. You can select the data sources of your choice and also use HTML 5 and JavaScript as per your requirement. The most significant advantage of Verivo is it offers faster development, flexible and extensible software, and you can create numerous apps by keeping the same base.    

4. Zoho Creator

Zoho Creator provides you with apps for multiple platforms; you can develop your app or use the ready-made one. The software is suitable for a business who wants to simplify their tasks by accepting more automation. It can provide you practical functions like event management, sales management, order management, logistics, etc. You can fully customize the app using drag and drop editor and various integration options.  

5. AppSheet 

AppSheet allows you to develop apps without coding and using spreadsheet inputs. With the data stored on your cloud in spreadsheet formats, you can choose a template and further pick the options and features you want in the app. You can integrate the data from Google Sheets and office 365 as well. AppSheet is not only easy to use, but you can develop apps using spreadsheet inputs and countless other features. 

Conclusion

Games are indeed the most popular mobile app category. But, you would be happy to know that the business apps with a share of 10.12% are the second most popular category on the Apple store. By having your business mobile app, you can indeed benefit your company. You can also consider hiring a development company.

NLOG with SQL Server and PostgreSQL in .Net Core

Monday, March 2nd, 2020

Here I am providing the steps to configure the Nlog for logging into the database in .net core.

  • Install NLog.Web.AspNetCore nuget package
  • Now, add a nlog.config file manually in the project and put all the configurations like file log path, database settings, etc. in this file. I have explained each in detail below.

We are going to use NLog with the database, so let’s create a table first in dB. The table structure is shown in the below screenshot.

Now, update your nlog.config file

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    autoReload="true"
    throwConfigExceptions="true"
    internalLogLevel="info"
    internalLogFile="c:\temp\internal-nlog.txt">

<extensions>
  <add assembly="NLog.Web.AspNetCore"/>
</extensions>
<targets>
  <target name="database" xsi:type="Database" connectionString="" >
    <commandText>
      INSERT INTO "NLogs" (
      "Application", "Level", "Message", "Logger", "Callsite", "Exception", "Logged")
      VALUES ( @Application, @Level, @Message,
      @Logger, @Callsite, @Exception,@Logged);

    </commandText>

    <parameter name="@application" layout="AspNetCoreNlog" />
    <parameter name="@level" layout="${level}" />
    <parameter name="@message" layout="${message}" />

    <parameter name="@logger" layout="${logger}" />
    <parameter name="@callSite" layout="${callsite:filename=true}" />
    <parameter name="@exception" layout="${exception:tostring}" />
    <parameter name="@logged" layout="${date}" />
  </target>
</targets>

<rules>
  <logger name="*"  minlevel="Debug" maxlevel="Error" final="true" writeTo="database" />
</rules>
</nlog>

Let’s discuss the nlog.config file layout.

Top-level elements

The root element is nlog in nlog.config file. The use of an XML namespace is optional but enables Intellisense in Visual Studio. We can set the internal log file path to internalLogFile. We can check the working log status in this file. So, if nlog is not working, you can check this file to know the issue.

NLog config is case-insensitive when not using a namespace and is case-sensitive when using a namespace.

You can use the following elements as children to nlog. Targets and rules are required in any configuration and others are optional and can be useful in advanced scenarios.

targets — defines log targets/outputs

rules — defines log routing rules

extensions — loads NLog extensions from the *.dll file

include– includes external configuration file

variable — sets the value of a configuration variable

The simplest configuration consists of one target and one rule (logger) that routes messages to the target.

Targets

The targets section defines log Targets. Each target is represented by a target element. There are two attributes required for each target:

name — target name

type — target type — such as “File”, “Database”, “Mail”, “Cloud”. When using namespaces this attribute is named xsi:type.

To know more about targets click on the below link

https://github.com/nlog/nlog/wiki/Configuration-file#targets

Here our log target is the database. So, inside the targets, we have defined our target as a database.

<target name=”database” xsi:type=”Database” connectionString=”” >

In the target tag, we’ll define the database connection string.

Note:- The default db provider will be SQL server if you are using any other database you will need to set the dbProvider.

<commandText>
INSERT INTO “NLogs” (“Application”, “Level”, “Message”, “Logger”, “Callsite”, “Exception”, “Logged”) VALUES (@Application, @Level, @Message, @Logger, @Callsite, @Exception, @Logged);
</commandText>

The statement inside the commandText is the insert SQL statement for inserting the logs in NLog table.

Now, declare all the parameters that are going to be inserted in the NLog table. The parameter node will contain the property name and Layout.

<parameter name=”@application” layout=”AspNetCoreNlog” />
 <parameter name=”@level” layout=”${level}” />
 <parameter name=”@message” layout=”${message}” />
 <parameter name=”@logger” layout=”${logger}” />
 <parameter name=”@callSite” layout=”${callsite:filename=true}” />
 <parameter name=”@exception” layout=”${exception:tostring}” />
 <parameter name=”@logged” layout=”${date}” />

To know about the layout, please follow the below link

https://github.com/nlog/nlog/wiki/Configuration-file#layouts-and-layout-renderers

Rules

The rules section maps loggers to targets and log levels.

https://github.com/nlog/nlog/wiki/Configuration-file#rules

Now, in .net core application update the below line in Program.cs .

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
           WebHost.CreateDefaultBuilder(args).UseNLog()
               .UseStartup<Startup>();

The Logging configuration specified in appsettings.json overrides any call to SetMinimumLevel. So either remove “Default”: or adjust it correctly to your needs.

{
“Logging”: {
“IncludeScopes”: false,
“LogLevel”: {
“Default”: “Trace”,
“Microsoft”: “Warning”,
“Microsoft.Hosting.Lifetime”: “Information”
}
},
“AllowedHosts”: “*”
}

Remember to also update any environment-specific configuration to avoid any surprises. Ex appsettings.Development.json

Write logs

Inject the ILogger in you controller:

using Microsoft.Extensions.Logging;
public class HomeController : Controller {
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
_logger.LogDebug(1, “Log Debug”);
}
public IActionResult Index() {
_logger.LogInformation(“Hello, world!”);
return View();
}

Note: If you don’t see any logging in db, please check the file internallogfile (path set in the nlog.config file). You can check the issue with logging in this file.

To configure the NLog with Postgres, we just need to make a few changes.

Change the db configuration settings for the postgres in nlog.config file.

<target name=”database” xsi:type=”Database” dbProvider=”Npgsql.NpgsqlConnection, Npgsql” connectionString=”User ID=;Password=;Host=;port=;Database=;” >
<commandText>
INSERT INTO public.”NLogs” (“Application”, “Level”, “Message”, “Logger”, “Callsite”, “Exception”, “Logged”) VALUES (@Application, @Level, @Message, @Logger, @Callsite, @Exception,@Logged );
</commandText>

That’s it, rest things will be the same as the above (NLog with SQL server).

Azure Bastion: Secure way to RDP/SSH Azure Virtual Machines

Monday, March 2nd, 2020

Microsoft Azure has recently launched Azure Bastion; a managed PaaS service to securely connect to Azure Virtual Machines (VMs) directly through the Azure Portal without any client needed.

Generally, we connect to the remote machines by either RDP or SSH. Before Bastion, if we need to connect to a VM in Azure we either need to expose a public RDP/SSH port of the server(s) or we need to provision a separate jump box server with said ports exposed and then connect to the private machines via the jump box server.

Exposing RDP/SSH ports over the Internet is not desirable and considered as a security threat, and with Azure Bastion, we can connect to Azure VM(s) securely over SSL, directly in Azure Portal and without exposing any ports. This also enables clientless connectivity meaning no client tool like mstsc is needed. It just requires a supported browser to access the VM.

Key points

  • Azure Bastion is a fully managed PaaS service that provides secure and seamless RDP/SSH access to Azure VM(s)
  • No RDP/SSH ports need to be exposed publicly
  • No public IP is required for VM(s)
  • Access VM(s) directly from the Azure portal over SSL
  • Help to limit threats like port scanning and other malware
  • Makes it easy to manage Network Security Groups (NSGs)
  • It is basically a scale set under the hood, which can resize itself based on the number of connections to your network
  • Azure Bastion is provisioned within a Virtual Network (VNet) within a separate subnet. The name of the subnet must be AzureBastionSubnet
  • Once provisioned, access is there for all VMs in the VNet, across subnets
  • Get started within minutes

Getting Started

  • Select the VNet, in which you have the VM(s), which you want to connect. Create a subnet on which the bastion host will be deployed. Make sure that the range of networks is at least /27 or larger and the name of the subnet is AzureBastionSubnet.
  • Now go to the Azure portal and create a Bastion service and fill in the required details.
  • Once the Bastion is provisioned, just navigate to the VM, you want to RDP/SSH and click Connect. There you will see an option to connect using Bastion.
  • Just enter the username and password and Connect. You can also login using a username and SSH private key for Linux if it is configured.
  • This is it. When connected, the remote session will start in the browser window.

Limitations

The service is not available in all regions, and the Azure folks are working on adding it to all regions eventually. As of now, the file transfer service is not available but we hope this feature will get added in the future, however, text copy-paste is supported. Keep visiting the service documentation for more details and feature updates.

UI Android vs iOS UI

Friday, January 24th, 2020

User Interface (UI) as dynamic as it is, individually takes yet another turn in the diversity section when we come to Android vs IOS.

You must have heard sagas of the differences between the android and iOS users each pleading a case of how their operating system is better than the other. But what you may not know is that this isn’t new, it has been the case for ages now. And, on no account can you term it as superficial. Android users do have a very tough time adjusting to iOS and vice versa. The “why” to this problem has a lot of little aspects and one major aspect. The major one is the differences in the UI of the two. Think about it, for instance, a layman while comparing two devices with these two operating systems may ignore for once, the differences in the complex configurations behind the processors in the two, but what he will always keep in mind is “how does is screen look?” “which icon goes where?” “how do you navigate through different pages?” and all of these have only one thing in common- UI.

Thus, it becomes essential for us to understand the differences between the UI in the two operating systems so that if need be we can make an informed choice and in a more competent fashion.

Now that we have started, we need to know where all will we be able to spot these differences. The best answer to this is — “If you scrutinize the subtle, then everywhere.” These differences are present everywhere — in the navigation bars, toolbars, types of control, buttons, and whatnot.

Out of these hundreds our focus first, obviously goes to navigation. Android is based on the material design guidelines, which is something widely accepted and followed globally even google uses them while developing its own applications. iOS, on the other hand, is based on the human interface design. One of the most noticeable differences in navigation is how android uses a “universal navigation bar” present at the bottom of the screen but iOS uses a combination of gestures and the home button. It also presents itself with an inbuilt “back button” in almost every one of its apps to help with the simple retracing of steps. Now you may be able to see how even a simple action as “going back” becomes so different with a change of UI.

Similar to navigation is another aspect — Menu. In Android, they generally have it in the form of a sidebar where you just tap and pull and voilà — you will have five to six apps ready to access. iOS, on the contrary, prefers a tab bar, which is placed at the bottom of the screen. These tab bars though according to various consumer analysis reports are easier to use, provide a lesser array of apps to be at the user’s disposal at one point of time.

The search field too is not left behind in this gabble of differences. In fact, the amount of comfort drawn from a device has a huge dependence on the accessibility of the search field, and its placing and presentation in the two operating systems play a pivotal role in materializing the differences between the two. One of the most distinguishing in this arena is the placement. iOS demonstrates a certain amount of rigidity as the full search bar is placed at the top of the screen. Whereas Android provides its users with a little bit of flexibility on the matter. It gives the users an option to place the search bar on the top, which is majorly different from what was provided by iOS because this one only expands into a full search bar upon tapping the search icon. The second option enables the search bar to gain much-deserved mobility as Android presents the users with an option to access the search field in the form of a widget that can be placed according to the user’s whim.

Pages on the second or lower level of hierarchy use segmented control in iOS and a tab on the Android. Furthermore, all text tabs in Android are present in uppercase and in iOS as a title case. This coupled with a fact that Android UI comes with a “text-only” policy for these tabs, which allows no icons and texts to be present simultaneously on the tabs and that iOS has no such policy, gives another important point of distinction to the two operating systems.

Another fundamental difference between the UI of the two can be observed in the color and size of the apps provided, Android usually has a more multi-color approach, with icons which are big in size and have reasonable spacing in between, on the other hand, iOS prefers a black and white pallet with a more compressed outlook.

A large difference further exists in the form of buttons, dialogues, alerts, etc. But as we explore these and many more, we must also understand the fact that these are all very temporary. The general trend today shows enough cases that indicate that we are moving towards a more converging user interface present in Android and iOS. The addition of the “switch” option to Android from the exclusive domain of iOS being one of the many examples of the same.

So, after understanding the differences in the two UIs and analyzing the various trends associated to it, one may also draw a parallel conclusion that with the passage of time as the consumer becomes more knowledgeable and demands for more and more freedom in mobility, structure, and outlook, the products will begin to have more and more fluid user interfaces and thus skipping the boundaries drawn by the differences in the operating systems and ultimately being a junction of the two categories we see today!

Significance of Iconography

Friday, January 24th, 2020

A picture is worth a thousand words” you must have come across these words more than you can recall, but when it comes to the market for the companies this picture can be worth much more than a thousand dollars too.

Iconography is the art of developing and using icons to capture audiences, remove ambiguity from concepts, and make the data provided easy to handle and more presentable. That must have sounded like too much for a picture, but believe me, all of these things and more do hinge upon the types of icons a company uses. Iconography today is playing a pivotal role in defining the good user experience and it is a testimony of just how germane this tool is that billions of dollars are spent annually by companies like Google, Facebook, Walmart, Samsung, etc. in this field.

The significance of iconography can be easily understood — just think of a brand, any brand. What are the first five things that come to mind? Several pieces of research conducted by experts in human behavior unanimously point out that it is the brand’s standard icon. For example, if I think of Gmail, one of the first things that pop into my head is that red M in an envelope. So, it is needless to say that the first and most primary importance of iconography is- assigning an identity to a company. The icons register in the brains of the users much easily as compared to any other feature and they have a higher chance of being identified when coming across randomly. The best example to demonstrate my last analysis would be the simple fact that how on any random web page when we see a little blue bird we know its twitter, even when no prior context is provided, same happens with the white f in a blue box or the white camera with a pink background.

Next on the list is — the implicit use of iconography. An icon does not just operate as an ID card for companies, they are also the tool that companies use to help navigate the users through the various pages present on their websites, etc. Suppose you want to read an article on sports and you open a news website then instead of scrolling through until you reach the desired section you can just click on the sports icon and directly reach it. Or suppose you just want to take a print out of the page, the print icon will be easily available and identifiable from the beginning and thus much easier to access if instead the word “print” was scribbled somewhere in the corner. Going back or forward on web pages, skipping pages icons make all these tasks much easy to perform owing to their easy to spot and convenient to access nature.

In a page full of text an icon provides perspective to the user. It draws attention to products, services, menu, and features. You would not have to comb through tons and tons of words to finally reach the place you actually wanted to see. The amount of energy and time wasted otherwise would be much more than what anybody can afford to waste in today’s day and time. Moreover, icons provide a compact display of information in a more attractive and user-friendly manner. For example, my taskbar is currently displaying a few icons — word, google chrome, files, music. Now just imagine if instead of showing these as icons my taskbar would have just had these same written down in words, or on your smartphone instead of the bright little pictures of all those apps, you would just have the said names typed in normal Arial, font size 10. How dull would all that be?

Our speed of using these devices would reduce considerably and we would not want to spend as much time on these devices as we do, for the simple reason that they won’t be as attractive or comfortable to use. But with icons, we have an inherent escape from these mundane problems. Moreover, with money flowing in from every crevice the R&D in iconography is so developed that all the colors, angles, edges, figures everything you come across in these icons are scientifically designed to provide you with aesthetically pleasing sensation. So they are not just helping you in all these other tasks they are also making your subconscious happier just by being there- how great is that?

It started since the 18th-century iconography has become an irreplaceable part of user-company interaction. It defines the user experience and plays a pivotal role in marketing and advertisement of products. Aside from conveying a tremendous amount of information in a compact yet comprehensive way it makes navigation faster by multiple folds. Adding to the attractiveness, comfort accessibility iconography provides an identity to a company. It is a burning ground in both electronic and paper operated industries and has reached a point where both the biggest giants in the industries as well as the feeble infants are pouring in large sums of money in developing icons and pursuing more and more dynamic and developed standards of iconography. A result of which can be seen all around on your desktops, mobile phones, billboards, etc. Where from every nook and corner there is one bright little icon peering over, grabbing your attention and holding your hand and taking you to wherever you want to go.

Self Storage Application Service Request Workflow

Friday, January 24th, 2020

Introduction and background

For our client 10 Federal, which is a US-based company, our team had to work on a project known as Work Order. Work Order is aimed at self-storage facility operators who are in need of an efficient and effective work order system. Work Order would help them manage their day to day orders as well as maintenance tasks they need to complete in order to run their self-storage facility business.

The project required us to build an SaaS-based system, meaning that it will be a web-based, on-demand software that runs on the provider’s servers. It has been designed in such a way that it will have three major deliverables in it. These deliverables include –

A super admin web application

An all-encompassing web application for the admin so that they can run Work Order smoothly and work on complaints as quickly as possible.

A client-side web application

A web application that can be accessed by the clients so that they can use Work Order effectively and manage all their tasks from one platform.

A client-side mobile application

A mobile application for the clients to use so Work Order can be easily accessed from anywhere, anytime.

Challenge

For this project, our main challenge was that we had to work on Work Order, keeping in mind the complex processes involved in maintenance related tasks within self-storage facilities.

On top of this, we had to design the architecture of the system based on microservices to support SaaS model. The complex processes, combined with SaaS model was challenging our aim of building a system that is fast, smooth, efficient and user-friendly. Our team had to take time and learn to fully understand the complexities of the self-storage facilities processes so that we could deliver a practical, sustainable solution.

Solution

Dot Net or .NET was used to develop the Work Order system, including the admin web application, the client-side web application, and the client-side mobile application. Dot Net is a software framework that is developed by Microsoft and is used to develop software that can run on Windows-based operating systems.

A SaaS based solution was our approach so that the client can sell the software to clients, and clients can access it with ease. All they would need is a browser and an internet connection for the web application, and a smartphone with an internet connection for the mobile application.

After our team successfully completed the project and provided solutions for Work Order, the system was equipped with the following features:

Management of maintenance works

Allocation of tasks to property managers

Subscription management, and more.

Now, with Work Order, self-storage facility operators can organize their tasks better, and improve their efficiency and productivity. Put simply, the system helps them to run their business operations better.

API Testing and How to do it?

Thursday, January 23rd, 2020

Introduction

Before getting into what API testing is, it is essential to understand what an API is. An API (Application Programming Interface) indicates how two software programs should integrate with one another.

API (Application programming interfaces) testing is a kind of software testing that involves testing APIs directly and as part of integration testing and to determine if they meet the requirements of functionality, performance, security, and reliability. API testing is a form of Black Box testing and is conducted after the build is ready. The source code is not included here.

The Challenge

To test the APIs and the integrations, they enable a software system.

The solution

To perform API testing, a tool is required to structure and manage the test cases. Another requirement is full traceability of requirements and effective API documentation.

During API testing, certain bugs can be found. These bugs include:

  • Duplicate or missing functionality
  • Incompatibility of the error handling mechanism
  • Reliability issues
  • Security and performance issues
  • Improper messaging
  • Multi-threaded issues

The quality assurance team performs API testing. The testing is conducted after the build is ready. The source code will not be included here.

A request is sent to the API to analyze responses that include:

  • Accuracy of data
  • HTTP status code
  • Error codes of any errors that are returned by API
  • Results of non-functional tests like security and performance
  • Response time
  • Authorization checks

Use a test management tool that will help in API testing by letting you structure and categorize your test cases. The tool should also give you full requirements traceability along with high-level API documentation. During API testing, the following must be kept in mind:

  • The API must be tested to check what happens and what does not happen on a consistent basis.
  • Stress testing on the system must be performed through several API load tests.
  • The API must be tested for failures. Test the API consistently so that it fails consistently.
  • Group all the test cases by category.
  • Mention all the parameters that are selected in the test case.
  • Prioritize API function calls so that testing can be simplified and can be finished on time.
  • Make plans to perform call sequencing.
  • Create test cases for different and all API input combinations that are possible. This way, you can ensure that you get complete test coverage.
  • Reuse the test cases and also monitor the API when in production.
  • It depends on the manual and automated tests if you want better API testing outcomes.

API testing is a very important part of software quality assurance. With the right approach and the right tools, you can ensure it is carried out successfully. The more API testing is structured, the better will be the outcomes of the testing.

What’s New in Xamarin Image Editor?

Thursday, January 23rd, 2020

The 2019 Volume 3 release of Xamarin.Forms Image Editor introduced several improvements, thereby allowing users such as top UX design firms an enhanced experience. Below, we take a close look at the new features which were added this year:

Image filter effects support

This effect enables users to choose from a wide range of color filters that can be added to their image. In other words, the original colors of the image are manipulated to achieve a different texture and color. There are six types of options that users have access to, including Hue, Saturation, Brightness, Contrast, Blur, and Sharpen. Users can apply these effects either by using the Image Editor toolbar or through code using the ApplyImageEffect method.

While the hue refers to the dominant wavelength of an image’s color, and its value ranges from -180 to 180, saturation refers to the intensity of the color. Its value ranges from -100 to 100. The brightness of an image represents how bright the image’s color is, with its value ranging between -100 and 100. The contrast of an image means the difference between the colors of an image. Its value ranges between -100 and 100.

Blur, on the other hand, means the clarity of an image, and its effect ranges from 0 to 6. Finally, the Sharpen feature is used for highlighting and enhancing the edges of objects found in an image. Its value ranges from 0 to 6 as well.

You even have the option of creating your own image color style in the new Xamarin Image Editor. All you have to do is apply a combination of various filter effects to your image.

Option for adding read-only text

The 2019 Volume 3 release of Xamarin Image Editor allows users to add read-only text to images. To do so, it restricts the text pop-up while you tap on an added text. If you want to add read-only text, you have to set the IsEditable property in TextSettings to false (which is set in true by default) before you add the text to the image.

Option to enable or disable resize functionality for added objects

Users now have the option of enabling or disabling the resize functionality for added objects, including images, shapes, as well as custom views. To do so, you have to use the IsResizable property of PenSettings, TextSettings, as well as CustomViewSettings in the Image Editor.

Apart from these main new features, there have also been several minor improvements made to Xamarin Image Editor, along with bug fixes.

Queuing Tasks with Redis

Thursday, January 23rd, 2020

Introduction and background

Redis is an open-source data structure that is used for in-memory storage and helps developers across the globe with the quick and efficient organization and utilization of data. Even though many developers worldwide are still struggling to decide which open-source software application to use, Redis is quickly growing to be a widely popular choice. Currently, more than 3000 tech joints, including our team, are using Redis.

Redis supports several data structures, including lists, sets, sorted sets, hashes, binary-safe strings, and HyperLogLogs. Our team uses Redis to support queuing in this project.

Queuing is the storing or deferring of tasks of operation inside a queue so that they can be used later. It comes into use for operations which are large in number and/or takes up a lot of time. Tasks can be executed in two different methods –

  • Tasks can be executed in the same order they were inserted, or
  • Tasks can be executed at a specific time.

Challenges

For this project, we needed to download large files, which is extremely time-consuming. To make the process more time-efficient, we decided to use queuing to effectively manage the download request. These download requests were added and served in the FIFO order.

Moreover, we wanted to retry the request in the time interval of one hour if it fails, until it fails three times. After this, the request is marked as failed and then removed from the queue. Our team soon found that manually creating and managing separate queues was rather inefficient, time-consuming, and troublesome, which hinted that we needed a new solution. This is where Redis comes in.

Solution

To create and manage separate queues more effectively, we put Kue npm package to the test. We hoped that it would make our task less time-consuming and more efficient.

And what exactly is Kue? Kue is a priority job queue package that is built for node.js and backed by Redis. What makes Kue so appealing for developers is that it provides us with a UI where the status of queues is displayed. This means that we can see the current status of the queues in real-time, thus helping us work better and smarter.

To use Kue, you have to first install it, then create a job Queue with Kue.createQueue(). The next step is to create a job of type email with arbitrary job data using create() method. This enables the return of a job, which will be saved in Redis using save() method.

Then, after the jobs are created, the next step is to process them using process() method, after which failed jobs should be removed. You can then add Kue UI if you choose and install kue-UI package.

With this, you will be able to store your request in the Redis queue and then process them in FIFO order.

Key Insights into the Future of Software Testing — 2020 Vision

Thursday, January 23rd, 2020

With the growth of digital technology and the widespread use it has in our daily lives, the need for reliable and efficient software testing has also increased. Developers need to ensure product quality after an app design agency works on it and before it is rolled out into the market. As such, it is not an exaggeration to say that software testing determines the fate of a product.

Considering the huge role that software testing plays in the success of an app, it is important to know where the industry is headed to in the coming years. Such insights help us understand how better to improve the products that are put out most efficiently.

Before learning about future insights read another article about software testing from the link:- https://medium.com/@successivetech/getting-started-with-testing-react-component-e9e811856f3c

Below, we take a closer look at four main insights that are predicted to dominate the software testing industry in 2020:

Testing both the API layer and UI layer are equally important

Most professionals who are involved in software testing, such as developers, project managers, manual testers, and so on, test both the front and back-end of applications. This indicates that today, testing the API layer is equally important as testing the UI layer. Since testers are tasked with testing multiple layers of software, they must be equipped with the necessary tools so that they can test with ease. In the coming years, more testers will likely focus on both API and UPI layers.

Machine learning-enabled automated testing is the future

By 2020, the number of testers automating more than half of their API tests is expected to grow significantly. This means that automated testing will soon be the norm in the near future. Machine learning has already heavily impacted the way software is developed, and its impact on software testing is also expected to grow. For instance, machine learning can be used to optimize the test suite to search for excessive, or it can be used to predict the main test configurations based on previous checks.

Teams are working on shortening release cycles

Even though teams are not as agile as they wish to be, this trend is likely to change as they are continuously working on deploying more regularly. A huge number of software testers are expected to release either daily or weekly in the coming years, thus shortening their release cycles.

More focus on user experience

High-quality UX has grown to become one of the most important determinants of success for products in the world of software today. Regardless of whether the product is aimed at a simple user or for an experienced software developer, being user-friendly is a crucial key. This is exactly why testing user experience has become such a critical part of software testing, and the need for the best UI/UX design services is growing. This trend is expected to grow in the coming years.

Getting Started with Testing React Component

Thursday, January 23rd, 2020

Introduction and background

ReactJs is a very popular open-source JavaScript library that is used for front-end development. It is extremely flexible and user-friendly, which makes it easy for developers to play around with state and props in React Components. This, in turn, helps to make the app more attractive and interactive.

React is maintained by Facebook, along with a worldwide community of companies and individual developers. It is great for fetching data that changes rapidly and which needs to be recorded and is therefore used as a base in the development of mobile apps and single-page applications.

In simple words, React allows developers to create web applications that are capable of changing data without having to reload the page. The main advantages that React offers include ease of use, simplicity, and scalability. It is also very fast, making it highly efficient.

Challenge

When developers work on a React app, they often play with state and props to make their apps more interactive and appealing. During development, everything may seem to work fine, but in many cases, the app faces issues once it is rolled out into the market when it is used by real people in the real world. This is because, oftentimes, some of the use cases of the app fail.

When you develop a web application, and you don’t run any test, it means that the beta testers will be the users in the real world, which is extremely risky. Besides, if your app fails, you cannot blame others for not trusting an untested code.

Unit testing of apps is required for the following reasons –

  • To ensure that each part of the program is correct individually.
  • To check out input validation logic and data transformation.
  • To check any isolated operation.
  • It helps in writing a test-driven approach.
  • Make sure the right things render when they are meant to.

Solution

To carry out efficient and reliable unit testing, Jest and Enzyme are required. Jest is a JavaScript testing framework that is developed by Facebook, with its main advantage being that it is very easy to use while being fast and safe. Code coverage, great expectations, snapshots, and easy mocking are other benefits. Create React App is then shipped with a ready-to-use Jest setup.

The Enzyme is a JavaScript testing utility for React, which can be used for easily asserting, manipulating, and traversing the output of your React Component. It was created by Airbnb and is quite popular since it adds several additional utility methods that are used for rendering a component(s), as well as finding and interacting with elements.

So, Jest is used as the test runner, assertion library, and mocking library, while Enzyme is used to provide additional testing utilities to interact with elements.

Recent Posts

Recent Comments

Get In Touch

Ask Us Anything !

Do you have experience in building apps and software?

What technologies do you use to develop apps and software?

How do you guys handle off-shore projects?

What about post delivery support?